I'm going out now. I may be some time.
Rob Landley rob at landley.net 
Sat Sep 30 20:17:08 UTC 2006 

Bruce [expletive delted] Perens sucked all the fun out of this project for me, 
and at the moment I really don't want to work on it anymore.  He may have 
lost the licensing dispute, but he did manage to suck out all my enthusiasm 
for working on any project he can take credit for.

I was always a volunteer here, and now it's a chore.  I could sit here a few 
months to see if I get over it, but I don't think that's in the best 
interests of BusyBox.  I'm still putting out a 1.2.2 bugfix release (which is 
purely mechanical backporting, you can't get writer's block on something like 
that), but afterwards I'm leaving Denis Vlasenko in charge: he already has 
write access to the downloads directory, and after 1.2.2 further releases are 
up to him.  As far as I'm concerned, that makes him maintainer.  (Also, he's 
never wanted the position, I trust his technical judgement, and he didn't run 
fast enough when I asked him.  These are all important qualifications.)

I'd like to thank TimeSys for letting me spend so much of my time on BusyBox 
this year.  I wasn't maintainer when they hired me, and there's no shortage 
of other things for me to do for them, but they were really cool about it.

Some backstory: I spent a couple years tracking the SCO thing very closely and 
doing what I could to help.  (You may remember Halloween IX and the OSI 
position paper I co-authored?  There was more.  I laugh at the whole "is PJ 
of Groklaw a real person" thing because I was on a conference call with her.  
BusyBox isn't the first hobby I've put lots of time into, late at night at 
various coffee shops...)

The bit that always got my blood pressure up was the "SCO Disease" theory of 
intellectual property, where code could be contaminated with nebulous 
ownership claims that you cannot find by examination of the code, and can't 
remove no matter what you change.  I also studied a lot of detail on the USL 
vs BSD case, years ago, where Berkeley had removed all of the AT&T code in 
the normal course of a decade of development.

I didn't realize that I'd developed some emotional scars until Bruce showed up 
after a decade long absence and arogantly lay claim to everything everyone 
else had done with a project he'd abandoned, and started dictating terms.  He 
didn't even bother to read the archives of the discussion he jumped into.  He 
could not be swayed with rational argument, wouldn't go off and do something 
useful (like maintain his own fork), and even a detailed forensic analysis 
showing that we're not using his code anymore (shades of BSD vs USL) wasn't 
enough to get him to shut up and go away (and certainly no guarantee against 
a return in future), because in some nebulous way he _still_ somehow owned 
the project, and always would.

So what if Bruce quickly abandoned BusyBox to the obscurity of the Debian boot 
floppy until Erik restarted the project years later?  So what if Bruce never 
posted to this list for the whole of Erik's tenure?  So what if Bruce was so 
out of touch that when he finally _did_ post to the list his personal page 
taking credit for BusyBox still pointed to busybox.lineo.com which was last 
valid in 2001 (and which he apparently only knew about because Erik told him 
about it in 1999 according to oldnews.html)?  Oddly, I worked on BusyBox for 
over two years before I even knew Bruce had anything to do with it, and I 
didn't know the details until I did research for that lwn.net article I wrote 
a few months ago.

The fact is, Bruce still founded the project, and named it, and is still 
taking totally undeserved credit for seven years of Erik Andersen's hard 
work, and still thinks he has some kind of moral authority over what we do 
with it.  And nothing I do will change that.

It's particularly annoying since Bruce didn't make a single original 
contribution while founding BusyBox.  I'm not referring to "all these command 
line tools already existed", I mean even the idea of tying several binaries 
together with different behavior based on the name it's called under comes 
from gzip.  (BusyBox 0.25 includes a badly mangled copy of gzip 1.2.4, and 
that varied its behavior based on argv[0] when it was released back in 
_1993_.)  Bruce never looked at the embedded market as Erik did, or dreamed 
of a general-purpose package to replace the bloated gnu stuff like I did.  
The project Bruce declared complete and abandoned was approximately as 
interesting as Red Hat's "nash" package, which is another "command shell with 
things like mount and insmod glued on", this time for initrd rather than boot 
floppies.  It's by Erik Troan, part of the mkinitrd package, and it's still 
in use by Fedora: http://www.die.net/doc/linux/man/man8/nash.8.html
And if you've never heard of "nash", you're in good company, because it didn't 
have someone like Erik pick it up and turn it into a general purpose tool.

The last straw was a recent conference call with the SFLC lawyers where they 
confirmed that I could release a GPLv2 only version, and confirmed that files 
I apply a GPLv2 only patch to can only be distributed GPLv2.  But a strict 
reading of the GPLv2 apparently requires preserving old license notices even 
when they don't apply (since section 2 includes section 1 verbatim; it's a 
bit muddy).  Apparently it was ok changing them before they pointed this out 
since I was acting in good faith, but they wanted me to stop now that they'd 
pointed it out to me.  They want me to leave the old license notices intact, 
and add a new license notice to correct the old one, which is _deeply_ silly, 
and probably not an enforceable requirement.

At this point I got a mental image of Bruce pointing and laughing (yes, right 
in the middle of a conference call with lawyers), which just won't go away.  
As usual, Bruce was wrong on substance in every meaningful way, but managed 
to make trouble by harping on a technicality in hopes of finding a loophole.  
After years of tracking SCO, boy did _THAT_ feel familiar.  And I'm just 
sick of it.  It was the last straw.  I have now officially wandered into "out 
out damn spot" territory thinking about Bruce's claims to BusyBox.  I see it 
every time I look at the code, even though I can PROVE it's not there.  How 
do you remove something that doesn't exist?

So to me, BusyBox has now acquired Bruce Disease.  To say it's no fun anymore 
is an understatement: I've developed an aversion to even looking at it.  I 
just get sick to my stomach at the idea of working on it at all anymore.

I mentioned there's no shortage of non-BusyBox work for me at Timesys 
(although they did kind of enjoy having the BusyBox maintainer on staff :).  
Hobby-wise if the only way to have a _simple_ license notice is to start over 
from scratch, I can do that.  I've started a new project called "toybox" 
(purely for my own personal amusement so far).  Right now it's just a 
mercurial repository with a half-dozen files in it, but I'll be porting the 
applets _I_ wrote to the new base (and maybe Erik's if he doesn't object, he 
already said I can use his code GPLv2 only without actively stupid broken 
license notices), and that's also where I'll be writing a new shell and 
mke2fs and so on.  Maybe I'll put it up at http://toybox.landley.net or some 
such when I get the new server I ordered set up.  (Which won't be this 
weekend.  Memo to self: next time I check whether "barebones" includes a 
processor or not. :P )

I think this is long and rambling enough.  Denis wanted to make sure I'd stay 
subscribed to the list, so I will, but I'm not planning on posting much.

Rob
-- 
Never bet against the cheap plastic solution.

I'm going out now. I may be some time.
Mark Richards mark.richards at massmicro.com 
Sat Sep 30 21:31:44 UTC 2006 

Rob Landley wrote:
> Bruce [expletive delted] Perens sucked all the fun out of this project for me, 
> and at the moment I really don't want to work on it anymore.  He may have 
> lost the licensing dispute, but he did manage to suck out all my enthusiasm 
> for working on any project he can take credit for.

Nobody does anything to you unless you let them.  You made the decision. 
  Own it.

How did he "lose" when you admit: "They want me to leave the old license 
notices intact, and add a new license notice to correct the old one"?

Note I omitted your editorial, which is the sum of your Swan Song.

You lost me when you trashed me for having an obfuscated reply-to 
address that you could have - or that is should have - recognized as 
such.  Instead you resorted to treating me in your email like an idiot 
berating my "anti-spam" filtering and threatening me with being removed 
from the list when my intent, had you asked, was to protect my address 
from poorly-managed email reflectors.

I came here to learn more about these tools and hoped to, in future, 
offer some positive contribution.  I'm still willing to do so and enjoy 
the fruit of my work simply because it helps others do theirs.  And you?

Now that all the soap opera is done, maybe I and a host of others are 
free to do just that.  It was painful to see alleged grown ups reduced 
to [expletive deleted].  Hopefully this egotistical crap is done.


/m

I'm going out now. I may be some time.
Denis Vlasenko vda.linux at googlemail.com 
Sun Oct 1 15:45:08 UTC 2006 

On Saturday 30 September 2006 22:17, Rob Landley wrote:
> Bruce [expletive delted] Perens sucked all the fun out of this project for me, 
> and at the moment I really don't want to work on it anymore.  He may have 
> lost the licensing dispute, but he did manage to suck out all my enthusiasm 
> for working on any project he can take credit for.

Fortunately, I am not going to pay attention to such silly distractions
at all. All new code which I will commit to svn will be GPLv2 only.
It's that simple.

> I think this is long and rambling enough.  Denis wanted to make sure I'd stay 
> subscribed to the list, so I will, but I'm not planning on posting much.

Okay, I need to explain what I intend to do now.

I believe that busybox now is mature enough to be almost usable
on ordinary desktop machines. So I actually did that - replaced
most of applicable /bin/* with links to busybox.
I expect some fallout. I will try to fix it.

Few examples: (1) Midnight Commander uses -v option when it calls
g[un]zip. It is of course fixable in MC, but the goal is to make
bbox usable on _unmodified_ desktop system!
(2) od -t is used in bbox's own build system, but bbox od doesn't
handle -t.
(3) bbox build started to produce larger (+100k) executable
from the same source tree and .config. Wow...
Did not track down which applet affects this, and how...

(1) and (2) are good examples of cases which do not matter for
embedded world but are needed on desktop.

Busybox should not lose its position of embedded device tool.
I think it makes sense to introduce CONFIG_DESKTOP and put
all such things under it. I will add such thing with gunzip -v fix.
Non-DESKTOP bbox will silently ignore -v,
DESKTOP one will print statistics.

I know that increased attention to destop needs will inevibably
lead to _some_ increases in size even for non DESKTOP case.

Please think also about positive side: with such move there is
a chance that bbox will get much wider userbase and therefore
will bring some sanity into desktop world.

Of course contributions and corrections (and even rants about
bloat) from embedded people are still accepted
and encouraged.

P.S. below sig: the list of applets I added to /bin on my box.
Need to check whether it will at least boot correctly now ;)
--
vda

ln -sf /app/busybox-1.2.1.svn/busybox /bin/basename	# exists: /bin/basename and /usr/bin/basename
ln -sf /app/busybox-1.2.1.svn/busybox /bin/bunzip2	# exists: /bin/bunzip2 and /usr/bin/bunzip2
ln -sf /app/busybox-1.2.1.svn/busybox /bin/bzcat	# exists: /bin/bzcat and /usr/bin/bzcat
ln -sf /app/busybox-1.2.1.svn/busybox /bin/cal	# exists: /bin/cal
ln -sf /app/busybox-1.2.1.svn/busybox /bin/cat	# exists: /bin/cat and /usr/bin/cat
ln -sf /app/busybox-1.2.1.svn/busybox /bin/chgrp	# exists: /bin/chgrp and /usr/bin/chgrp
ln -sf /app/busybox-1.2.1.svn/busybox /bin/chmod	# exists: /bin/chmod and /usr/bin/chmod
ln -sf /app/busybox-1.2.1.svn/busybox /bin/chown	# exists: /bin/chown and /usr/bin/chown
ln -sf /app/busybox-1.2.1.svn/busybox /bin/chroot	# exists: /bin/chroot and /usr/bin/chroot
ln -sf /app/busybox-1.2.1.svn/busybox /bin/cksum	# exists: /bin/cksum and /usr/bin/cksum
ln -sf /app/busybox-1.2.1.svn/busybox /bin/cp	# exists: /bin/cp and /usr/bin/cp
ln -sf /app/busybox-1.2.1.svn/busybox /bin/cut	# exists: /bin/cut and /usr/bin/cut
ln -sf /app/busybox-1.2.1.svn/busybox /bin/date	# exists: /bin/date and /usr/bin/date
ln -sf /app/busybox-1.2.1.svn/busybox /bin/dd	# exists: /bin/dd and /usr/bin/dd
ln -sf /app/busybox-1.2.1.svn/busybox /bin/df	# exists: /bin/df and /usr/bin/df
ln -sf /app/busybox-1.2.1.svn/busybox /bin/dirname	# exists: /bin/dirname and /usr/bin/dirname
ln -sf /app/busybox-1.2.1.svn/busybox /bin/dmesg	# exists: /bin/dmesg
ln -sf /app/busybox-1.2.1.svn/busybox /bin/du	# exists: /bin/du and /usr/bin/du
ln -sf /app/busybox-1.2.1.svn/busybox /bin/echo	# exists: /bin/echo and /usr/bin/echo
ln -sf /app/busybox-1.2.1.svn/busybox /bin/egrep	# exists: /bin/egrep and /usr/bin/egrep
ln -sf /app/busybox-1.2.1.svn/busybox /bin/env	# exists: /bin/env and /usr/bin/env
ln -sf /app/busybox-1.2.1.svn/busybox /bin/false	# exists: /bin/false and /usr/bin/false
ln -sf /app/busybox-1.2.1.svn/busybox /bin/fdisk	# exists: /bin/fdisk
ln -sf /app/busybox-1.2.1.svn/busybox /bin/fgrep	# exists: /bin/fgrep and /usr/bin/fgrep
ln -sf /app/busybox-1.2.1.svn/busybox /bin/find	# exists: /bin/find and /usr/bin/find
ln -sf /app/busybox-1.2.1.svn/busybox /bin/fold	# exists: /bin/fold and /usr/bin/fold
ln -sf /app/busybox-1.2.1.svn/busybox /bin/free	# exists: /bin/free
ln -sf /app/busybox-1.2.1.svn/busybox /bin/fuser	# exists: /bin/fuser and /usr/bin/fuser
ln -sf /app/busybox-1.2.1.svn/busybox /bin/getopt	# exists: /bin/getopt
ln -sf /app/busybox-1.2.1.svn/busybox /bin/grep	# exists: /bin/grep and /usr/bin/grep
ln -sf /app/busybox-1.2.1.svn/busybox /bin/gunzip	# exists: /bin/gunzip and /usr/bin/gunzip
ln -sf /app/busybox-1.2.1.svn/busybox /bin/gzip	# exists: /bin/gzip and /usr/bin/gzip
ln -sf /app/busybox-1.2.1.svn/busybox /bin/head	# exists: /bin/head and /usr/bin/head
ln -sf /app/busybox-1.2.1.svn/busybox /bin/hexdump	# exists: /bin/hexdump
ln -sf /app/busybox-1.2.1.svn/busybox /bin/hostid	# exists: /bin/hostid and /usr/bin/hostid
ln -sf /app/busybox-1.2.1.svn/busybox /bin/hostname	# exists: /bin/hostname and /usr/bin/hostname
ln -sf /app/busybox-1.2.1.svn/busybox /bin/hwclock	# exists: /bin/hwclock
ln -sf /app/busybox-1.2.1.svn/busybox /bin/id	# exists: /bin/id and /usr/bin/id
ln -sf /app/busybox-1.2.1.svn/busybox /bin/insmod	# exists: /bin/insmod
ln -sf /app/busybox-1.2.1.svn/busybox /bin/install	# exists: /bin/install and /usr/bin/install
ln -sf /app/busybox-1.2.1.svn/busybox /bin/ipcrm	# exists: /bin/ipcrm
ln -sf /app/busybox-1.2.1.svn/busybox /bin/ipcs	# exists: /bin/ipcs
ln -sf /app/busybox-1.2.1.svn/busybox /bin/kill	# exists: /bin/kill and /usr/bin/kill
ln -sf /app/busybox-1.2.1.svn/busybox /bin/killall	# exists: /bin/killall and /usr/bin/killall
ln -sf /app/busybox-1.2.1.svn/busybox /bin/last	# exists: /bin/last
ln -sf /app/busybox-1.2.1.svn/busybox /bin/ln	# exists: /bin/ln and /usr/bin/ln
ln -sf /app/busybox-1.2.1.svn/busybox /bin/logger	# exists: /bin/logger
ln -sf /app/busybox-1.2.1.svn/busybox /bin/logname	# exists: /bin/logname and /usr/bin/logname
ln -sf /app/busybox-1.2.1.svn/busybox /bin/ls	# exists: /bin/ls and /usr/bin/ls
ln -sf /app/busybox-1.2.1.svn/busybox /bin/lsmod	# exists: /bin/lsmod
ln -sf /app/busybox-1.2.1.svn/busybox /bin/md5sum	# exists: /bin/md5sum and /usr/bin/md5sum
ln -sf /app/busybox-1.2.1.svn/busybox /bin/mesg	# exists: /bin/mesg
ln -sf /app/busybox-1.2.1.svn/busybox /bin/mkdir	# exists: /bin/mkdir and /usr/bin/mkdir
ln -sf /app/busybox-1.2.1.svn/busybox /bin/mkfifo	# exists: /bin/mkfifo and /usr/bin/mkfifo
ln -sf /app/busybox-1.2.1.svn/busybox /bin/mknod	# exists: /bin/mknod and /usr/bin/mknod
ln -sf /app/busybox-1.2.1.svn/busybox /bin/mkswap	# exists: /bin/mkswap
ln -sf /app/busybox-1.2.1.svn/busybox /bin/modprobe	# exists: /bin/modprobe
ln -sf /app/busybox-1.2.1.svn/busybox /bin/more	# exists: /bin/more
ln -sf /app/busybox-1.2.1.svn/busybox /bin/mount	# exists: /bin/mount
ln -sf /app/busybox-1.2.1.svn/busybox /bin/mv	# exists: /bin/mv and /usr/bin/mv
ln -sf /app/busybox-1.2.1.svn/busybox /bin/nc	# exists: /bin/nc and /usr/bin/nc
ln -sf /app/busybox-1.2.1.svn/busybox /bin/nice	# exists: /bin/nice and /usr/bin/nice
ln -sf /app/busybox-1.2.1.svn/busybox /bin/nohup	# exists: /bin/nohup and /usr/bin/nohup
ln -sf /app/busybox-1.2.1.svn/busybox /bin/od	# exists: /bin/od and /usr/bin/od
ln -sf /app/busybox-1.2.1.svn/busybox /bin/ping	# exists: /bin/ping and /usr/bin/ping
ln -sf /app/busybox-1.2.1.svn/busybox /bin/ping6	# exists: /bin/ping6 and /usr/bin/ping6
ln -sf /app/busybox-1.2.1.svn/busybox /bin/pivot_root	# exists: /bin/pivot_root
ln -sf /app/busybox-1.2.1.svn/busybox /bin/printenv	# exists: /bin/printenv and /usr/bin/printenv
ln -sf /app/busybox-1.2.1.svn/busybox /bin/printf	# exists: /bin/printf and /usr/bin/printf
ln -sf /app/busybox-1.2.1.svn/busybox /bin/ps	# exists: /bin/ps
ln -sf /app/busybox-1.2.1.svn/busybox /bin/pwd	# exists: /bin/pwd and /usr/bin/pwd
ln -sf /app/busybox-1.2.1.svn/busybox /bin/readlink	# exists: /bin/readlink and /usr/bin/readlink
ln -sf /app/busybox-1.2.1.svn/busybox /bin/readprofile	# exists: /bin/readprofile
ln -sf /app/busybox-1.2.1.svn/busybox /bin/renice	# exists: /bin/renice
ln -sf /app/busybox-1.2.1.svn/busybox /bin/rm	# exists: /bin/rm and /usr/bin/rm
ln -sf /app/busybox-1.2.1.svn/busybox /bin/rmdir	# exists: /bin/rmdir and /usr/bin/rmdir
ln -sf /app/busybox-1.2.1.svn/busybox /bin/rmmod	# exists: /bin/rmmod
ln -sf /app/busybox-1.2.1.svn/busybox /bin/rpm	# exists: /bin/rpm and /usr/bin/rpm
ln -sf /app/busybox-1.2.1.svn/busybox /bin/sed	# exists: /bin/sed and /usr/bin/sed
ln -sf /app/busybox-1.2.1.svn/busybox /bin/seq	# exists: /bin/seq and /usr/bin/seq
ln -sf /app/busybox-1.2.1.svn/busybox /bin/setsid	# exists: /bin/setsid
ln -sf /app/busybox-1.2.1.svn/busybox /bin/sha1sum	# exists: /bin/sha1sum and /usr/bin/sha1sum
ln -sf /app/busybox-1.2.1.svn/busybox /bin/sleep	# exists: /bin/sleep and /usr/bin/sleep
ln -sf /app/busybox-1.2.1.svn/busybox /bin/sort	# exists: /bin/sort and /usr/bin/sort
ln -sf /app/busybox-1.2.1.svn/busybox /bin/stat	# exists: /bin/stat and /usr/bin/stat
ln -sf /app/busybox-1.2.1.svn/busybox /bin/stty	# exists: /bin/stty and /usr/bin/stty
ln -sf /app/busybox-1.2.1.svn/busybox /bin/su	# exists: /bin/su and /usr/bin/su
ln -sf /app/busybox-1.2.1.svn/busybox /bin/sum	# exists: /bin/sum and /usr/bin/sum
ln -sf /app/busybox-1.2.1.svn/busybox /bin/swapoff	# exists: /bin/swapoff
ln -sf /app/busybox-1.2.1.svn/busybox /bin/swapon	# exists: /bin/swapon
ln -sf /app/busybox-1.2.1.svn/busybox /bin/sync	# exists: /bin/sync and /usr/bin/sync
ln -sf /app/busybox-1.2.1.svn/busybox /bin/sysctl	# exists: /bin/sysctl
ln -sf /app/busybox-1.2.1.svn/busybox /bin/tail	# exists: /bin/tail and /usr/bin/tail
ln -sf /app/busybox-1.2.1.svn/busybox /bin/tar	# exists: /bin/tar
ln -sf /app/busybox-1.2.1.svn/busybox /bin/tee	# exists: /bin/tee and /usr/bin/tee
ln -sf /app/busybox-1.2.1.svn/busybox /bin/test	# exists: /bin/test and /usr/bin/test
ln -sf /app/busybox-1.2.1.svn/busybox /bin/top	# exists: /bin/top
ln -sf /app/busybox-1.2.1.svn/busybox /bin/touch	# exists: /bin/touch and /usr/bin/touch
ln -sf /app/busybox-1.2.1.svn/busybox /bin/tr	# exists: /bin/tr and /usr/bin/tr
ln -sf /app/busybox-1.2.1.svn/busybox /bin/true	# exists: /bin/true and /usr/bin/true
ln -sf /app/busybox-1.2.1.svn/busybox /bin/tty	# exists: /bin/tty and /usr/bin/tty
ln -sf /app/busybox-1.2.1.svn/busybox /bin/umount	# exists: /bin/umount
ln -sf /app/busybox-1.2.1.svn/busybox /bin/uname	# exists: /bin/uname and /usr/bin/uname
ln -sf /app/busybox-1.2.1.svn/busybox /bin/uniq	# exists: /bin/uniq and /usr/bin/uniq
ln -sf /app/busybox-1.2.1.svn/busybox /bin/uptime	# exists: /bin/uptime and /usr/bin/uptime
ln -sf /app/busybox-1.2.1.svn/busybox /bin/watch	# exists: /bin/watch
ln -sf /app/busybox-1.2.1.svn/busybox /bin/wc	# exists: /bin/wc and /usr/bin/wc
ln -sf /app/busybox-1.2.1.svn/busybox /bin/who	# exists: /bin/who and /usr/bin/who
ln -sf /app/busybox-1.2.1.svn/busybox /bin/whoami	# exists: /bin/whoami and /usr/bin/whoami
ln -sf /app/busybox-1.2.1.svn/busybox /bin/xargs	# exists: /bin/xargs and /usr/bin/xargs
ln -sf /app/busybox-1.2.1.svn/busybox /bin/yes	# exists: /bin/yes and /usr/bin/yes
ln -sf /app/busybox-1.2.1.svn/busybox /bin/zcat	# exists: /bin/zcat and /usr/bin/zcat

I'm going out now. I may be some time.
Rob Landley rob at landley.net 
Sun Oct 1 18:36:40 UTC 2006 

On Sunday 01 October 2006 11:45 am, Denis Vlasenko wrote:
> Fortunately, I am not going to pay attention to such silly distractions
> at all. All new code which I will commit to svn will be GPLv2 only.
> It's that simple.

Good for you.  Feel free to loot applets from toybox then (which is also GPLv2 
only, or at least will be when I get the new server finished to put the 
mercurial repository online with, anyway).  Although the design's noticeably 
different and I probably won't have anything worth using for a month or more, 
but hey.  Gotta start somewhere. :)

> > I think this is long and rambling enough.  Denis wanted to make sure I'd 
stay 
> > subscribed to the list, so I will, but I'm not planning on posting much.
> 
> Okay, I need to explain what I intend to do now.
> 
> I believe that busybox now is mature enough to be almost usable
> on ordinary desktop machines. So I actually did that - replaced
> most of applicable /bin/* with links to busybox.

Which is cool.  I was going for a self-hosting development environment first.  
The goal of my old Firmware Linux project was to build a system under itself 
with BusyBox and uClibc replacing every gnu package except the toolchain.  
The closest I got was seven packages (linux-libc-headers, uClibc, gcc, 
binutils, make, BusyBox, bash).  Eight if you count the linux kernel.  The 
last thing required to hit my original goal was bbsh (to replace bash).

My _new_ goal was to get it down to four:  linux, BusyBox, uCLibc, and tcc.  
That would involve upgrading tcc until it can build the Linux kernel, the 
kernel headers becoming usable (make headers_install in 2.6.18 is close, but 
alas not quite there yet for a couple different reasons), and me upgrading at 
least three things in BusyBox (bbsh, a write mode for "ar", and adding 
a "make" applet). 

My _new_ new goal is to get it down to linux, toybox, uClibc, and tcc.  (Heck, 
maybe I'll see if klibc can actually do anything useful.  If that gets merged 
into Linux, that would get me down to _three_ packages.  Still, that would 
just be an option: uClibc is more generally useful.)

> I expect some fallout. I will try to fix it.

Did uClibc ever fix the bug that made busybox "tar xvjfC blah.tbz dirname" try 
to extract a file called "C" when BusyBox was linked against uClibc 0.9.28?

I just updated "http://busybox.net/~landley/todo.txt" (so it's now "stale but 
less so") if you want to take a look at that.  I also sent you my "pending" 
folder (and have since dug up a second one, older and much smaller, dunno if 
any of that's still relevant...)

> Busybox should not lose its position of embedded device tool.

Oh, I dunno.  Toybox may make a play for the niche, someday. :)

I'm thinking of it as a sort of "BusyBox lite".  Someday, when computers go 
beyond cheap to disposable and you have a full motion video display on the 
front of each box of captain crunch, it'll still need software to run the 
thing.  And if it has to be cheap enough to throw away and also run on a 
cheap battery for months, 4 megabytes of ram could easily be the _high_ end 
of things, and the really tiny systems tend to be nommu to save the memory 
used by the page tables, so that may still be interesting too...

The bits of BusyBox development that have really held my interest weren't 
adding features, but taking our big bloated apps (ash, fdisk, e2fsprogs, 
shadow support) ripping them out and writing tiny versions.  (I may have 
started with "sed" to make binutils' ./configure happy, but my second big 
project was rewriting bunzip2 because the old one was just too big and 
complicated.)

*shrug*

> I think it makes sense to introduce CONFIG_DESKTOP and put
> all such things under it.

They should probably be individually configurable for now.

What I learned with CONFIG_NITPICK is that our current menuconfig sucks rocks.  
Visibility and selection state are mixed up horribly.  If you hide something, 
you set it to "n".  There's no way to make it take its default value when 
it's hidden, because the design assumption is that hidden means off.  
(Actually, hidden menus don't even get written out in the unmodified 
menuconfig; I had to change that to make the ENABLE_ stuff work.)

I'm all for tagging things into groups so you can switch the entire group at 
once to be "all on", "all off", or "individually editable" with a central 
switch somewhere.  But our current .config infrastructure doesn't do that, 
and I wasn't going to upgrade the old stuff if you had a kernel/klibc-based 
replacement in the wings... :)

> I will add such thing with gunzip -v fix. 
> Non-DESKTOP bbox will silently ignore -v,
> DESKTOP one will print statistics.

We can have various default configurations.  Not quite sure on the syntax 
("make desktopconfig"?) but I don't see it as a bad thing.  This is something 
miniconfig was going to allow.  (Then again, I've been called a 
perfectionist, rewriting entire subsystems to get the behavior I want.  I 
wouldn't ask anyone else to do that.  Among other things they're probably 
sane.  And you may notice that being maintainer seriously cuts into your 
actual coding time.  Reading and merging other people's code happens at the 
expense of writing your own.  Only so many hours in the day.)

It's your call, I'm just saying how I'd do it.  Since I'm _not_ doing it (not 
here, anyway), this carries no weight and is eminently ignorable.

> I know that increased attention to destop needs will inevibably
> lead to _some_ increases in size even for non DESKTOP case.

I didn't accept increases in size for the non-development environment case.  
It's not inevitable, it's just a boatload of work repeatedly re-auditing 
stuff.  (And bloat-o-meter is a beautiful thing.)

But again, it's a question of finding somebody to do the work.

> Please think also about positive side: with such move there is
> a chance that bbox will get much wider userbase and therefore
> will bring some sanity into desktop world.

I kept hoping knoppix would pick it up, but they never did.  I cornered some 
of the One Laptop Per Child guys at OLS, but they hadn't even looked at it 
and they're being sponsored by Red Hat.

Good luck with this.

> Of course contributions and corrections (and even rants about
> bloat) from embedded people are still accepted
> and encouraged.
> 
> P.S. below sig: the list of applets I added to /bin on my box.
> Need to check whether it will at least boot correctly now ;)
> --
> vda

I'm about 2/3 of the way through the patch backport for 1.2.2.  (You may 
notice that http://busybox.net/downloads/busybox-1.2.1.fixes.patch has gotten 
noticeably larger.  Since this is the last "or later" licensed release I'm 
merging all the relevant fixes up through svn 16112, so there's a ways to go 
yet.)  I might get that done today.  Dunno.  (I might finish book 3 in the 
Temeraire series, "Black Powder War", instead.  Might manage both!)

I'll update the news.html page for 1.2.2, and I'll mention the change of 
maintainership when I do.  After that I'll be out of your way.  Meanwhile, 
off to the coffee shop, with paperback and laptop.  (Wasn't that a book by 
Hemingway or somebody?)

Rob
-- 
Never bet against the cheap plastic solution.

Copyright 2006 http://lists.busybox.net/pipermail/busybox/