Rob Landley

September 18, 2006

Sigh. Didn't get a single useful thing done this weekend. Instead I spent it conducting a forensic analysis of the BusyBox code to either prove that BusyBox no longer contains any code copyrighted by Bruce Perens, or to else identify and remove any such code. The current snapshot is here [ http://busybox.net/~landley/forensics.txt ], and I need about one more day to finish it, but I have work tomorrow.

Bruce Perens cropped up on the mailing list after about ten years of silence, and managed to work through my goodwill in a half-dozen emails. By friday, I had a reply to him that I saved into my drafts folder and sat on for over a day to cool off. And then started on the above analysis.

This week I learned the words "Schlemeil" and "Schlamazael". The best definition I heard for Schlameil is "A person so inept even inanimate objects pick on them", although the classic definition of Schlameil is apparently someone who goes into a fancy restaurant and makes the waiter spill a bowl of soup. The Schlamazel is the guy the soup lands on. (No, there's no standard spelling for these, it seems. Different alphabet.) A schlameil is someone who can't help but make a mess out of any situation they involve themselves in.

This forensic analysis is my way of declining to be Bruce's Schlamazel.

Yes, I'm merging GPLv2 only code into BusyBox, and I don't care what Bruce says. It's looking like the next release (December) will be BusyBox 2.0.0 instead of 1.3.0, what with the simplified license, the new unified shell, scripts/individual, possibly the new build infrastructure... Have to ask Erik what he thinks about bumping the major number.

For those of you I just confused: Erik Andersen made BusyBox what it is today. Bruce had declared BusyBox finished and abandoned it 2 years before Erik started looking around for an embedded command line package and found out he had to make one. If BusyBox hadn't existed, Erik would have created it. I have great respect for Erik, because he's earned it.

Bruce meanwhile let the project rot without finding a successor, either because he didn't care or he didn't see any further potential in it. In the seven years Erik maintained BusyBox Bruce didn't post to the mailing list even once. Bruce's web page still points to Lineo as the web page for the project which hasn't been the case since 2001, and he apparently only knew about the existence of because according to oldnews.html, Erik asked him for permission to start a BusyBox website there. And after almost a full decade (1996 to 2006), he shows up out of nowhere and starts dictating terms? How DARE he take credit for what Erik did in his absence?

Even I've already been working on BusyBox twice as long as Bruce ever did. I've written far more original code for the project, integrated more outside code, and put far more total time into the project. Reviewing the history, the idea for one binary that had different functions with different names apparently came from gzip (one of the projects BusyBox sucked in); Bruce didn't even invent _that_.

It's quite possible Bruce didn't know that BusyBox has regularly rewritten existing code over the years in a continuous attempt to come up with improved versions. Heck, I've rewritten mount.c three times now. He came in _thinking_ BusyBox still used his code. But guess what?

We still use chunks of the deflate and inflate engines from gzip-1.2.4, but he didn't write those and he didn't even trim them down for BusyBox. (Other people did; he was Debian maintainer at the time, before he managed to piss them off, and had lots of volunteers.) A chunk of mt.c (the magnetic tape drive control command) is unchanged from Erik's first release of BusyBox, apparently because the sucker hasn't been significantly worked on since 2001 and should probably be removed anyway. Three lines of terminal control code in more.c are that old (I can't prove they _weren't_ added after Bruce's tenure), three lines of mount.c seem pretty much _coincidentally_ the same, and I can't prove where chunks of stack_machine() in dc.c came from. Oh, and we use the same usage message for "sync". But so far? That's all the even potentially Bruce-contaminated code I've found. I'll post a more complete list (and possibly commit a patch, if necessary) after I finish the analysis.

And after that, maybe I can get back to bbsh.


September 20, 2006

Got BusyBox's license.html and LICENSE files updated for GPLv2 only, and got the thumbs up on the wording from the SFLC guys. (Bruce Perens can go hang.) I also added a copyright notice to BusyBox itself, which the SFLC guys suggested because it makes license enforcement easier and potentially ups the penalties. (It's also an extra 128 bytes. Need to take a look at reclaiming that somehow.)

The people sending me the blackfin board apparently have my old address (my fault, sorry) and mail forwarding doesn't work for UPS or Fed Ex. This would explain why the board hasn't arrived. I pointed them at my work address (which isn't going anywhere, and I still don't quite remember the new apartment's address off the top of my head).

Finally, I'm getting back to work on bbsh. A neat trick was suggested on the mailing list of using ansi terminal size querying sequences if you don't otherwise know your terminal size, and the obvious place to put that is bbsh's interactive mode startup code. (Set $COLUMNS and $LINES from that.)


Copyright 2006 http://landley.net/