Dumb idea for accelerating FOSS development

2011-01-12 Thread Bill Cox
First, the problem:  I've got a C library I want to share.  There are
many users who want to use it.  This should be as easy as breathing,
but it's not!

My users and I face what I'm calling "GNU/Linux Innovation Red Tape".
This library is two files: sonic.c and sonic.h.  To share it in
Debian, first, I had to learn how to make a clean Debian package.
Something like 30 files are involved, and in my case a few days of
learning and laboring.  Next, I have to grovel on the debian-mentor's
list, and pray that Debian Sponsor Gods will take pity on me.  No
response from the Sponsor Gods so far...  maybe I'll have more luck
after they've finished the current release.  Shouldn't we be ashamed
that getting a package into Debian is harder than publishing an app
for iPhones?  Assuming I find a Debian sponsor, my package will be
uploaded to Unstable, then Testing, and after a few years, Stable.

Guess where my package has to be before my users are willing to link
to it?  Debian Stable.  We're hosed.  There's just no freaking way for
my users to use my library.  You know what they do?  Every one of them
bypasses the Innovation Red Tape, and simply copies my source code
directly into their application.  How's that as a reuse paradigm?

My dumb idea for today is a way to break through this red tape.
Unfortunately, while I could implement this idea in a few days, the
red tape would keep it in limbo so long that I'll likely die of old
age before it gets into Debian Stable.  Oh, well... here's the dumb
idea anyway...  In short, support a syntax in gcc like:

$ gcc myprog.c -lgit://github/~waywardgeek/sonic=0.1

In theory, this would cause gcc to do the following:

- Check and see if the requested library has already been
downloaded and built, and still in the cache
- If not, download the latest compatible signed version, verify
the signature, and compile it
- link to the library in the cache

A feature like this would make sharing C libraries as easy as
breathing.  My users wouldn't even have to 'apt-get install
libsonic0-dev'.  They would stop copying my source code, and just link
to my library.  Sharing of C libraries in FOSS land might increase
dramatically.  The year of GNU/Linux on the desktop would finally
come, and we'd all march off to Paradise as heroes.  Or not.

Anyway, just my dumb idea for the day... If through some miracle this
particular dumb idea appeals to the GCC Gods, I volunteer to write it.

Bill


Re: Dumb idea for accelerating FOSS development

2011-01-12 Thread Bill Cox
On Wed, Jan 12, 2011 at 8:43 AM, Axel Freyn  wrote:
> Hi,
> On Wed, Jan 12, 2011 at 01:43:51PM +0100, Basile Starynkevitch wrote:
>> On Wed, Jan 12, 2011 at 06:07:48AM -0500, Bill Cox wrote:
>> > Unfortunately, while I could implement this idea in a few days, the
>> > red tape would keep it in limbo so long that I'll likely die of old
>> > age before it gets into Debian Stable.  Oh, well... here's the dumb
>> > idea anyway...  In short, support a syntax in gcc like:
>> >
>> >     $ gcc myprog.c -lgit://github/~waywardgeek/sonic=0.1
>> >
>> > In theory, this would cause gcc to do the following:
>> >
>> >     - Check and see if the requested library has already been
>> > downloaded and built, and still in the cache
>> >     - If not, download the latest compatible signed version, verify
>> > the signature, and compile it
>> >     - link to the library in the cache
>>
>> At a first glance, I find your idea crazy but nice (but what about header
>> files *.h of the requested library?). I would be delighted to have it. Maybe
>> others don't think that way (in particular, those not working on Linux, and
>> those not working on a compiler running with a network connection).
>>
>> Very probably ccache is the better place to implement that, since it already 
>> do
>> some (preprocessed) source code cache. http://ccache.samba.org/
>>
>> However, my personal feeling is that GCC is quite conservative on the user
>> features it is accepting. So I won't bet that your idea will be positively
>> accepted.
> Well, it is not exactly what you are asking for, but the depot_tools
> used in the chromium developement might be a solution:
> http://www.chromium.org/developers/how-tos/depottools
> The can keep track of different libraries checkout out from svn or git
> repositories, and calling "gclient sync" connects to all repositories
> belonging to the project and verifies that all files are up-to-date.
> May be that would be a better starting point than using gcc?
>
> Axel
>

Well, after a short nap, the thought of fixing this in gcc seems even
dumber to me, though the problem is quite real.  Another tool called
before gcc could get the header and library files into a place where
they could be used.  It could even be compiler independent.

A bit of Googling reveals Zero Install.  Looks like these guys are
trying to tackle the problem.

Bill