From fb8ddbbf803ba3209424df4682de80255adeb110 Mon Sep 17 00:00:00 2001
From: Rob Landley Do you capitalize toybox?
Why toybox? (What was wrong with busybox?)
Why a 7 year support horizon?
Why time based releases?
Where do I start understanding the toybox source code?
Toybox is written in C. There are longer writeups of the +
A: Toybox targets quarterly releases (a similar schedule to the Linux +kernel) because Martin Michlmayr's +talk on the +subject was convincing.
+ +Releases provide synchronization points where the developers certify +"it worked for me". Each release is a known version with predictable behavior, +and right or wrong at least everyone should be seeing +similar results where you might be able to google an unexpected outcome. +Releases focus end-user testing on specific versions +where issues can be reproduced, diagnosed, and fixed. +Releases also force the developers to do periodic tidying, packaging, +documentation review, finish up partially implemented features languishing +in their private trees, and give regular checkpoints to measure progress.
+ +Over time feature sets change, data formats change, control knobs change... +For example toybox's switch from "ls -q" to "ls -b" as the default output +format wasn't exactly a bug, it was a design improvement... but the +difference is academic if the change breaks somebody's script. +Releases give you the option to schedule upgrades later, and not to rock +the boat just now: just use a known working release version.
+ +The counter-argument is that "continuous integration" +can be made robust with sufficient automated testing. But like the +waterfall method, this places insufficent +emphasis on end-user feedback and learning from real world experience. +Developer testing is either testing that the code does what the developers +expect given expected inputs running in an expected environment, or it's +regression testing against bugs previously found in the field. No plan +survives contact with the enemy, and technology always breaks once it +leaves the lab and encounters real world data and use cases, not just +at runtime but in different build environments.
+ +The best way to give new users a reasonable first experience is to point +them at specific stable versions where development quiesced and +extra testing occurred. There will still be teething troubles, but multiple +people experiencing the _same_ teething troubles can potentially +help each other out.
+ +As for why releases on a schedule are better than releases "when it's +ready", watch the video.
+ +A: Toybox is written in C. There are longer writeups of the design ideas and a code walkthrough, and the about page summarizes what we're trying to accomplish, but here's a quick start:
-- cgit v1.2.3