About the calculus for the project
About the calculus for the project
Posted Feb 9, 2012 22:54 UTC (Thu) by landley (guest, #6789)In reply to: About the calculus for the project by jimparis
Parent article: A tempest in a toybox
> reason for Toybox, and its creation is in no way related to the fact that
> the SFLC will sue you when nobody else will.
No, Toybox started in 2006, because a troll showed up to take credit for all my work ten years after he last wrote any code (for anything), and disgusted me so hugely I left busybox entirely rather than let him take credit for one more LINE of code I wrote:
http://landley.net/notes-2006.html#26-09-2006
But I still wanted to work on small, simple utilities (I had several half-finished, and I write this sort of code for fun), so I took the excuse to start over from scratch without the decade of legacy design decisions BusyBox had accumulated. Instead of just sulking, after I withdrew from BusyBox I started a new project and sat down to write better code:
http://landley.net/notes-2006.html#01-10-2006
I continued to work on it, on and off, for the next 3 years, until I'd solved all the interesting design problems and knew how the new project should be implemented. But I had a bunch of other demands on my time (aboriginal linux, my tinycc fork, day job), and I had the problem with Toybox: the niche it was going for was already filled. By BusyBox. I'd appointed its current maintainer and handed years of my work off to him, I was going up against something with a 10 year head start, led by a smart active guy, including years of my own work. It was "good enough", merely being technically _better_ wouldn't necessarily draw users away from it. It had a greater "project gravity", and is what people would reach for first to solve the problem both projects addressed.
I started to consider rejoining BusyBox after about 2 years:
http://landley.net/notes-2008.html#30-06-2008
And eventually I mothballed ToyBox and started pushing my work "upstream" into busybox (which was actually a huge port since the point was to base from-scratch rewrites on completely different infrastructure):
http://landley.net/notes-2010.html#11-03-2010
The biggest chunk of infrastructure was my new patch implementation, because BusyBox's was more or less a stub. But I also met denys at CELF 2010 and explained toybox's config and help infrastructure (where all you do to add a command is add a toys/mynewcommand.c file and then re-run the build and it picks everything up from that; in BusyBox you had to touch 5 different files), and so on.
But I liked the toybox infratructure much better than busybox's, even with what cleanups I managed to convince Denys to do. And unfortunately, BusyBox had lost focus on "simple", and moved it down below "small binary size", "fast execution time", and "lots of features". The resulting code was #ifdef salad full of magic annotations and control flow that hid the program's actual entry point in libbb/appletlib.c line 771. The result was just no fun to work on:
http://landley.net/notes-2011.html#08-06-2011
For a couple years I vaguely tried to learn Lua to rewrite toybox in that as a way of giving it a reason to exist separate from busybox (and thus a reason for me to still work on it):
http://landley.net/notes-2009.html#26-02-2009
But lua turns out not to have a standard posix binding, making rewriting toybox in it kinda hard. (If I have to include native C code to extend lua, I might as well write the whole thing in C. Being in a higher level language eliminates the need for cross compiling, but being in a higher level langauge with C extensions _doesn't_.)
So toybox was in limbo for a couple years, with the bits I really _needed_ (for my aboriginal linux project, creating the smallest Linux development environment capable of rebuilding itself from source) pushed into busybox, but busybox being no fun to work on and not seeing much point in pushing toybox up a hill busybox was already at the top of...
Then when Tim contacted me in November, what he did was point out that there _was_ a niche for ToyBox: on Android, which by policy forbids GPL in userspace but has only a stub command line that's crying out to be replaced.
I've considered Android very important for a while now, because it _will_ take over from the PC:
http://landley.net/notes-2011.html#26-06-2011
And Linux won't:
http://landley.net/notes-2010.html#10-03-2010
I just hadn't played with its native development environment much after a bad early experience:
http://landley.net/notes-2010.html#10-01-2010
So when Tim went "android" (and pointed out the AOSP is much less stupid now than it was 2 years ago) I went "D'oh" and started scheming:
http://landley.net/notes-2011.html#13-11-2011
I'd never have left GPLv2 behind if it wasn't for GPLv3. (I seriously doubt Android would have forbid GPL in userspace either, v2 got tarred with the same brush as v3.) I loved GPLv2:
http://sf.geekitude.com/content/pros-and-cons-gnu-general...
But I'm not the one who left the GPL, it left _me_:
http://landley.net/notes-2006.html#03-12-2006
Rob
