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 14it seems silly to capitalize the project name, but not capitalizing the 15start 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> 22and <a href=http://landley.net/notes-2006.html#28-09-2006>started over from 23scratch</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 28in November 2011</a> with a new goal to 29<a href=http://landley.net/aboriginal/about.html#selfhost>make Android 30self-hosting</a>. This involved me relicensing my own 31code, which <a href=https://lwn.net/Articles/478308/>made people who had 32never used or participated in the project loudly angry</a>. The switch came 33after a lot of thinking <a href=http://landley.net/talks/ohio-2013.txt>about 34licenses</a> and <a href=http://landley.net/notes-2011.html#21-03-2011>the 35transition 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 38out 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 40it 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 44by almost a decade but Android still doesn't ship with it because GPLv3 came 45out around the same time Android did and caused many people to throw 46out the GPLv2 baby with the GPLv3 bathwater. 47Android <a href=https://source.android.com/source/licenses.html>explicitly 48discourages</a> use of GPL and LGPL licenses in its products, and has gradually 49reimplemented historical GPL components such as its bluetooth stack under the 50Apache 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 52development of new projects (clang/llvm/lld) to replace them, 53implemented its SMB server from scratch to replace samba, 54<a href=http://meta.ath0.com/2012/02/05/apples-great-gpl-purge/>and so 55on</a>. Toybox itself exists because somebody with in a legacy position 56just wouldn't shut up about GPLv3, otherwise I would probably 57still happily be maintaining BusyBox. (For more on how I wound 58up 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 64hardware and distributions released up to 7 years ago, and feel ok dropping 65support for stuff older than that. (This is a little longer than Ubuntu's 66Long 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 69build-time configure test for it and let the functionality cleanly drop out. 70I also keep old Ubuntu images around in VMs and perform the occasional 71defconfig build there to see what breaks. (I'm not perfect about this, 72but I accept bug reports.)</p> 73 74<p>My original theory was "4 to 5 18-month cycles of moore's law should cover 75the vast majority of the installed base of PC hardware", loosely based on some 76research I did <a href=http://www.catb.org/esr/halloween/halloween9.html#id2867629>back in 2003</a> 77and <a href=http://catb.org/esr/writings/world-domination/world-domination-201.html#id248066>updated in 2006</a> 78which said that low end systems were 2 iterations of moore's 79law below the high end systems, and that another 2-3 iterations should cover 80the useful lifetime of most systems no longer being sold but still in use and 81potentially 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 84from 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 85ignored the switch from PC to smartphone cutting off the R&D air supply of the 86laptop market. Meanwhile the Moore's Law s-curve started bending 87down 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> 89then <a href=http://www.pcworld.com/article/118603/article.html>died</a>, 90the subsequent drive to go wide maxed out around 4x SMP with ~2 megabyte 91caches for most applications. These days the switch from exponential to 92linear 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 97feature is less than 7 years old, I try to have a build-time configure test 98for it and let the functionality cleanly drop out. I also keep old Ubuntu 99images around in VMs and perform the occasional defconfig build there to 100see what breaks.</p> 101 102<!--#include file="footer.html" --> 103