Home | History | Annotate | Download | only in www
      1 <html><head><title>toybox news</title>
      2 <!--#include file="header.html" -->
      3 
      4 <ul>
      5 <li><h2><a href="#capitalize">Do you capitalize toybox?</a></h2></li>
      6 <li><h2><a href="#why_toybox">Why toybox? (What was wrong with busybox?)</a></h2></li>
      7 <li><h2><a href="#support_horizon">Why a 7 year support horizon?</a></h2></li>
      8 </ul>
      9 
     10 <a name="capitalize" />
     11 <h2>Q: Do you capitalize toybox?</h2>
     12 
     13 <p>A: Only at the start of a sentence. The command name is all lower case so
     14 it seems silly to capitalize the project name, but not capitalizing the
     15 start of sentences is awkward, so... compromise. (It is _not_ "ToyBox".)</p>
     16 
     17 <a name="why_toybox" />
     18 <h2>Q: "Why is there toybox? What was wrong with busybox?"</h2>
     19 
     20 <p>A: Toybox started back in 2006 when I
     21 <a href=https://lwn.net/Articles/202106/>handed off BusyBox maintainership</a>
     22 and <a href=http://landley.net/notes-2006.html#28-09-2006>started over from
     23 scratch</a> on a new codebase after a
     24 <a href=http://lists.busybox.net/pipermail/busybox/2006-September/058617.html>protracted licensing argument</a> took all the fun out of working on BusyBox.</p>
     25 
     26 <p>Toybox was just a personal project until it got
     27 <a href=http://landley.net/notes-2011.html#13-11-2011>relaunched
     28 in November 2011</a> with a new goal to
     29 <a href=http://landley.net/aboriginal/about.html#selfhost>make Android
     30 self-hosting</a>. This involved me relicensing my own
     31 code, which <a href=https://lwn.net/Articles/478308/>made people who had
     32 never used or participated in the project loudly angry</a>. The switch came
     33 after a lot of thinking <a href=http://landley.net/talks/ohio-2013.txt>about
     34 licenses</a> and <a href=http://landley.net/notes-2011.html#21-03-2011>the
     35 transition to smartphones</a>, which led to a
     36 <a href=http://landley.net/talks/celf-2013.txt>2013</a>
     37 <a href=https://www.youtube.com/watch?v=SGmtP5Lg_t0>talk</a> laying
     38 out a strategy to make Android self-hosting using toybox. This helped
     39 <a href=https://code.google.com/p/android/issues/detail?id=76861>bring
     40 it to Android's attention</a>, and they
     41 <a href=https://lwn.net/Articles/629362/>merged it</a> into Android M.</p>
     42 
     43 <p>The answer to the second question is "licensing". BusyBox predates Android
     44 by almost a decade but Android still doesn't ship with it because GPLv3 came
     45 out around the same time Android did and caused many people to throw
     46 out the GPLv2 baby with the GPLv3 bathwater.
     47 Android <a href=https://source.android.com/source/licenses.html>explicitly
     48 discourages</a> use of GPL and LGPL licenses in its products, and has gradually
     49 reimplemented historical GPL components such as its bluetooth stack under the
     50 Apache license. Similarly, Apple froze xcode at the last GPLv2 releases
     51 (GCC 4.2.1 with binutils 2.17) for over 5 years while it sponsored the
     52 development of new projects (clang/llvm/lld) to replace them,
     53 implemented its SMB server from scratch to replace samba,
     54 <a href=http://meta.ath0.com/2012/02/05/apples-great-gpl-purge/>and so
     55 on</a>. Toybox itself exists because somebody with in a legacy position
     56 just wouldn't shut up about GPLv3, otherwise I would probably
     57 still happily be maintaining BusyBox. (For more on how I wound
     58 up working on busybox in the first place,
     59 <a href=http://landley.net/aboriginal/history.html>see here</a>.)</p>
     60 
     61 <h2><a name="support_horizon">Q: Why a 7 year support horizon?</a></h2>
     62 
     63 <p>A: Our <a href=http://lists.busybox.net/pipermail/busybox/2006-September/058440.html>longstanding rule of thumb</a> is to try to run and build on
     64 hardware and distributions released up to 7 years ago, and feel ok dropping
     65 support for stuff older than that. (This is a little longer than Ubuntu's
     66 Long Term Support, but not by much.)</p>
     67 
     68 <p>If a kernel or libc feature is less than 7 years old, I try to have a
     69 build-time configure test for it and let the functionality cleanly drop out.
     70 I also keep old Ubuntu images around in VMs and perform the occasional
     71 defconfig build there to see what breaks. (I'm not perfect about this,
     72 but I accept bug reports.)</p>
     73 
     74 <p>My original theory was "4 to 5 18-month cycles of moore's law should cover
     75 the vast majority of the installed base of PC hardware", loosely based on some
     76 research I did <a href=http://www.catb.org/esr/halloween/halloween9.html#id2867629>back in 2003</a>
     77 and <a href=http://catb.org/esr/writings/world-domination/world-domination-201.html#id248066>updated in 2006</a>
     78 which said that low end systems were 2 iterations of moore's
     79 law below the high end systems, and that another 2-3 iterations should cover
     80 the useful lifetime of most systems no longer being sold but still in use and
     81 potentially being upgraded to new software releases.</p>
     82 
     83 <p>It turns out I missed industry changes in the 1990's that stretched the gap
     84 from low end to high end from 2 cycles to 4 cycles (<a href=http://landley.net/notes-2011.html#26-06-2011>here's my writeup on that</a>; and _that_ analysis
     85 ignored the switch from PC to smartphone cutting off the R&D air supply of the
     86 laptop market.  Meanwhile the Moore's Law s-curve started bending
     87 down in 2000 and these days is pretty flat: the drive for faster clock speeds
     88 <a href=http://www.anandtech.com/show/613>stumbled</a>
     89 then <a href=http://www.pcworld.com/article/118603/article.html>died</a>,
     90 the subsequent drive to go wide maxed out around 4x SMP with ~2 megabyte
     91 caches for most applications. These days the switch from exponential to
     92 linear growth in hardware capabilities is
     93 <a href=https://www.cnet.com/news/end-of-moores-law-its-not-just-about-physics/>common</a>
     94 <a href=http://www.acm.org/articles/people-of-acm/2016/david-patterson>knowledge</a>.)</p>
     95 
     96 <p>But the 7 year rule of thumb stuck around anyway: if a kernel or libc
     97 feature is less than 7 years old, I try to have a build-time configure test
     98 for it and let the functionality cleanly drop out. I also keep old Ubuntu
     99 images around in VMs and perform the occasional defconfig build there to
    100 see what breaks.</p>
    101 
    102 <!--#include file="footer.html" -->
    103