Source code documentation is coming.  We plan to implement some
auto-documentation coding standards in order to take advantage of some
really nice XML based engines that will turn comments into html
documentation.  This will come with the new architecture that is
currently being revised for the 1.5 Beta branch of the source.

We are committed to using the GPL as it gives us protection while at the
same time offering an extreme amount of freedom in terms of modification
and redistribution.  


Eric Wachsmann
FlexRadio Systems

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Jim Lux
Sent: Tuesday, August 30, 2005 1:16 PM
To: FlexRadioMail
Subject: [Flexradio] A plea to SDR software developers

A couple pleas to those of you ambitously cranking out great stuff for
the 
SDR, particularly in the Linux world

1) Gosh.. there needs to be SOME documentation of the structure of the 
software.  Even a readme listing that says what each module does and who

calls what.  Sure.. am_demod.c probably does something with demodulating

AM, but you'd never know it from reading the comments.

Same applies to the PowerSDR sources... I hunted through the zip file a 
while, but never found any sort of documentation.

Surely you guys have some sketchy document around that has the overall 
architecture?  Maybe it exists, but it would be nice to have a link to 
where it is.  Don't make it too challenging or nobody will get
interested.

2) Structure the software so that you can make mods without getting
wrapped 
around the GPL axle.   There are people out there who would like to make

contributions, and are actually paid to do software development, but for
a 
variety of reasons, can't modify GPL stuff.

For example, at Jet Propulsion Lab, most all of our work is funded by
NASA, 
and software that is developed with that funding is notionally available
to 
all, for free (well, the U.S. taxpayers have already paid for it).
There's 
a whole raft of contractual details between CalTech (who runs JPL) and
NASA 
about how that software is to be released, the (not entirely accurate) 
summary of which is that it has to be released in a different way, and
with 
a different rights statement, that are incompatible with the usual GPL
way 
of doing things.

This came up when I wanted to use a modified version of hamlib and
rigctl 
to control the SDR1000.  The real problem came up when we wanted to
release 
the modified versions. The GPL requires that modified versions also be 
GPLd, etc, be distributed in a certain way, etc.  We wound up rewriting
the 
needed functions from scratch (which was no big deal, but had I known
from 
the start, I would have done things differently).

So, if I want to insert something useful into a body of software that is

GPLed, I have to make sure that my little piece is sufficiently
standalone 
and doesn't include any GPL code in it. I can call modules in some
library 
that's GPLd, and I can be called by GPL'd software, but I have to be
self 
contained.  This meets the GPL requirement:
"
If identifiable sections of that work are not derived from the Program,
and 
can be reasonably considered independent and separate works in
themselves, 
then this License, and its terms, do not apply to those sections when
you 
distribute them as separate works.
"

Once it's been released (with the NASA process), you'd be free to
include 
that with the rest of the system.  And, in fact, you could freely modify

what we developed and released. (you might even be able to GPL the 
copied/modified version, for all I know)



There is also a review process that we have to go through to make sure
that 
we haven't inadvertently trampled on someone else's proprietary rights,
and 
that we aren't violating export controls, etc.  There's a whole team of 
folks who deal with this stuff.

I suspect other companies have similar issues.  They may have no problem

with releasing software that they've paid to develop into free 
distribution, but can't tolerate some aspect of the GPL.


So.. when structuring your software, make sure you do it in a way that 
allows other parties to hook into it, without requiring too tightly
tying 
it to the rest.  Giant include files that define the world are "bad"
from 
this standpoint.  Shared memory structures likewise. Clean procedure
call 
interfaces with relatively simple data structures as parameters or
socket 
level comms, with a well defined protocol, are good.  And, keep those
data 
and message structures reasonably stable, because I can't use the GPLed
.h 
file to define them.  I have to create my own version that replicates 
it.  (or, alternately, release the .h file into the public domain,
explicitly)




James Lux, P.E.
Spacecraft Radio Frequency Subsystems Group
Flight Communications Systems Section
Jet Propulsion Laboratory, Mail Stop 161-213
4800 Oak Grove Drive
Pasadena CA 91109
tel: (818)354-2075
fax: (818)393-6875


_______________________________________________
FlexRadio mailing list
FlexRadio@flex-radio.biz
http://mail.flex-radio.biz/mailman/listinfo/flexradio_flex-radio.biz



Reply via email to