annotate www/about.html @ 543:60b97ba66a70

Extensive semi-gratuitous refactoring: factor out common code, handle euid!=uid and egid!=gid cases. (Note: test suite requires root access, possibly container support.)
author Rob Landley <rob@landley.net>
date Mon, 12 Mar 2012 23:00:28 -0500
parents 312b8acb65aa
children 2d7c56913fda
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
365
8f0b24cc7cd7 Minor web page updates (put header/footer back, add a few <hr> tags).
Rob Landley <rob@landley.net>
parents: 360
diff changeset
1 <!--#include file="header.html" -->
8f0b24cc7cd7 Minor web page updates (put header/footer back, add a few <hr> tags).
Rob Landley <rob@landley.net>
parents: 360
diff changeset
2
226
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
3 <h2><a name="what" />What is ToyBox?</h2>
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
4
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
5 <p>The goal of the Toybox project is to create simple implementations of all
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
6 the important Linux command line utilities. These implementations should
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
7 be small (the entire project should total less than a megabyte, uncompressed),
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
8 fast, simple, and correctly implemented (which is related to standards
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
9 compliance, but isn't quite the same thing). Click for
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
10 <a href="design.html">more about the design goals</a></p>
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
11
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
12 <p>Toybox has configurable levels of functionality, and should scale from tiny
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
13 embedded systems up to full general purpose desktop and development
410
3d87f15f4c60 Add wiki link and make about less stale.
Rob Landley <rob@landley.net>
parents: 385
diff changeset
14 environments. The author plans to install it on his Android phone in
3d87f15f4c60 Add wiki link and make about less stale.
Rob Landley <rob@landley.net>
parents: 385
diff changeset
15 place of Toolbox, and the
3d87f15f4c60 Add wiki link and make about less stale.
Rob Landley <rob@landley.net>
parents: 385
diff changeset
16 <a href=/aboriginal>Aboriginal Linux</a> project is trying to get a complete
226
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
17 Linux system to rebuild itself from source code using toybox.</p>
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
18
385
bf7eea85f46c More GPL->BSD debris.
Rob Landley <rob@landley.net>
parents: 365
diff changeset
19 <p>Toybox is <a href=license.html>released under a simple 2-clause BSD-style
bf7eea85f46c More GPL->BSD debris.
Rob Landley <rob@landley.net>
parents: 365
diff changeset
20 license</a>.</p>
226
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
21
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
22 <p>Toybox can be built as a single "swiss army knife" executable (ala BusyBox
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
23 or Red Hat's Nash), or each command can be built as a traditional independent
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
24 executable.</p>
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
25
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
26 <b><h2><a name="status" />What commands are implemented?</h2></b>
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
27
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
28 <p>The current list of commands implemented by toybox is at the top of the
385
bf7eea85f46c More GPL->BSD debris.
Rob Landley <rob@landley.net>
parents: 365
diff changeset
29 <a href=news.html>news page</a>. That list is updated when new commands
410
3d87f15f4c60 Add wiki link and make about less stale.
Rob Landley <rob@landley.net>
parents: 385
diff changeset
30 go in. The list of commands yet to implement for the 1.0 release is in the
3d87f15f4c60 Add wiki link and make about less stale.
Rob Landley <rob@landley.net>
parents: 385
diff changeset
31 <a href=todo.txt>todo list</a>.</p>
226
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
32
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
33 <p>In general, configuring toybox for "defconfig" enables all the commands
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
34 compete enough to be useful. Configuring "allyesconfig" enables partially
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
35 implemented commands as well.</p>
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
36
410
3d87f15f4c60 Add wiki link and make about less stale.
Rob Landley <rob@landley.net>
parents: 385
diff changeset
37 <p>Several toybox commands can do things other vesions can't. For example
3d87f15f4c60 Add wiki link and make about less stale.
Rob Landley <rob@landley.net>
parents: 385
diff changeset
38 the toybox "df" isn't confused by initramfs the way other df implementations
230
5c03ba9e3924 Web page tweak.
Rob Landley <rob@landley.net>
parents: 228
diff changeset
39 are. If initramfs is visible, df shows it like any other mount point.</p>
5c03ba9e3924 Web page tweak.
Rob Landley <rob@landley.net>
parents: 228
diff changeset
40
226
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
41 <b><h3>Command Shell</h3></b>
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
42 <p>The Toybox Shell (toysh) aims to be a reasonable bash replacement. It
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
43 implements the "sh" and "toysh" commands, plus the built-in commands "cd" and
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
44 "exit". This is the largest single sub-project in toybox.</p>
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
45
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
46 <p>The following additional commands may be built into the shell (but not as
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
47 separate executables): cd, exit, if, while, for, function, fg, bg, jobs, source,
410
3d87f15f4c60 Add wiki link and make about less stale.
Rob Landley <rob@landley.net>
parents: 385
diff changeset
48 <a href="http://opengroup.org/onlinepubs/9699919799/utilities/alias.html">alias</a>,
226
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
49 export, set, unset, read, trap, and exec. (Note: not done yet.)</p>
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
50
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
51 </ul>
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
52
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
53 <h2><a name="commands" />Which commands are planned?</h2>
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
54
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
55 <p>The toybox <a href=todo.txt>todo list</a> mentions many potential commands
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
56 which may be added to this project. (Whether that file is readable by anybody
410
3d87f15f4c60 Add wiki link and make about less stale.
Rob Landley <rob@landley.net>
parents: 385
diff changeset
57 but the project's maintainer is open to debate.) The roadmap wiki in the
3d87f15f4c60 Add wiki link and make about less stale.
Rob Landley <rob@landley.net>
parents: 385
diff changeset
58 nav bar has a more human readable version.</p>
226
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
59
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
60 <p>The criteria for a toybox 1.0 release is that a system built from just the
410
3d87f15f4c60 Add wiki link and make about less stale.
Rob Landley <rob@landley.net>
parents: 385
diff changeset
61 Linux kernel, toybox, C library (such as uClibc), and a compiler (such as
3d87f15f4c60 Add wiki link and make about less stale.
Rob Landley <rob@landley.net>
parents: 385
diff changeset
62 tinycc) can rebuild itself from source code.</p>
226
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
63
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
64 <b><h3>Relevant Standards</h3></b>
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
65
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
66 <p>Most commands are implemented according to
410
3d87f15f4c60 Add wiki link and make about less stale.
Rob Landley <rob@landley.net>
parents: 385
diff changeset
67 <a href=http://opengroup.org/onlinepubs/9699919799/idx/utilities.html>The
3d87f15f4c60 Add wiki link and make about less stale.
Rob Landley <rob@landley.net>
parents: 385
diff changeset
68 Single Unix Specification version 4</a> where applicable. This does not mean
226
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
69 that Toybox is implementing every SUSv3 utility: some such as SCCS and ed are
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
70 obsolete, while others such as c99 are outside the scope of the project.
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
71 Toybox also isn't implementing full internationalization support: it should be
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
72 8-bit clean and handle UTF-8, but otherwise we leave this to X11 and higher
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
73 layers. And some things (like $CDPATH support in "cd") await a good
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
74 explanation of why to bother with them. (The standard provides an important
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
75 frame of reference, but is not infallable set of commandments to be blindly
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
76 obeyed.)</p>
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
77
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
78 <p>The other major sources of commands are the Linux man pages, and testing
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
79 the behavior of existing commands (although not generally looking at their
410
3d87f15f4c60 Add wiki link and make about less stale.
Rob Landley <rob@landley.net>
parents: 385
diff changeset
80 source code), including the commands in Android's toolbox. SUSv4 does not
3d87f15f4c60 Add wiki link and make about less stale.
Rob Landley <rob@landley.net>
parents: 385
diff changeset
81 include many basic commands such as "mount", "init", and "mke2fs", which are
3d87f15f4c60 Add wiki link and make about less stale.
Rob Landley <rob@landley.net>
parents: 385
diff changeset
82 kind of nice to have.</p>
226
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
83
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
84 <b><h2><a name="downloads" />Download</h2></b>
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
85
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
86 <p>This project is maintained as a mercurial archive. To get a copy of the
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
87 current development version, either use mercurial (hg clone
425
312b8acb65aa Fix bad link that was confusing people. (Oops.)
Rob Landley <rob@landley.net>
parents: 410
diff changeset
88 http://landley.net/hg/toybox) or click on one of the zip/gz/bz2 links
226
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
89 at the top of the <a href=/hg/toybox>mercurial archive browser</a> page to get
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
90 an archive of the appropriate version. Click
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
91 <a href="/hg/toybox?cmd=tags">tags</a> to see all the tagged release
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
92 versions ("tip" is the current development version).</p>
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
93
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
94 <p>The maintainer's <a href=/notes.html>development log</a> and the project's
410
3d87f15f4c60 Add wiki link and make about less stale.
Rob Landley <rob@landley.net>
parents: 385
diff changeset
95 <a href=http://lists.landley.net/listinfo.cgi/toybox-landley.net>mailing
226
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
96 list</a> are also good ways to track what's going on with the project.</p>
6aac63925eff Update web pages.
Rob Landley <rob@landley.net>
parents:
diff changeset
97
360
f7780b485e6f Remove header/footer includes to prepare for css instead.
Rob Landley <rob@landley.net>
parents: 230
diff changeset
98 <b><h2><a name="toycans" />What's the toybox logo image?</h2></b>
227
60cfaaeb4c4e More web page tweaks.
Rob Landley <rob@landley.net>
parents: 226
diff changeset
99
60cfaaeb4c4e More web page tweaks.
Rob Landley <rob@landley.net>
parents: 226
diff changeset
100 <p>It's <a href=toycans-big.jpg>carefully stacked soda cans</a>. Specifically,
60cfaaeb4c4e More web page tweaks.
Rob Landley <rob@landley.net>
parents: 226
diff changeset
101 it's a bunch of the original "Coke Zero" and "Pepsi One" cans, circa 2006,
228
90f763207f56 Fluffier web page.
Rob Landley <rob@landley.net>
parents: 227
diff changeset
102 stacked to spell out the binary values of the ascii string "Toybox", with
90f763207f56 Fluffier web page.
Rob Landley <rob@landley.net>
parents: 227
diff changeset
103 null terminator at the bottom. (The big picture's on it's side because
90f763207f56 Fluffier web page.
Rob Landley <rob@landley.net>
parents: 227
diff changeset
104 the camera was held sideways to get a better shot.)</p>
90f763207f56 Fluffier web page.
Rob Landley <rob@landley.net>
parents: 227
diff changeset
105
90f763207f56 Fluffier web page.
Rob Landley <rob@landley.net>
parents: 227
diff changeset
106 <p>No, it's not photoshopped, I actually had these cans until a coworker
90f763207f56 Fluffier web page.
Rob Landley <rob@landley.net>
parents: 227
diff changeset
107 who Totally Did Not Get It <sup><font size=-3><a href=http://www.timesys.com>tm</a></font></sup> threw them out one day after I'd gone home,
90f763207f56 Fluffier web page.
Rob Landley <rob@landley.net>
parents: 227
diff changeset
108 thinking they were recycling. (I still have two of each kind, but
90f763207f56 Fluffier web page.
Rob Landley <rob@landley.net>
parents: 227
diff changeset
109 Pepsi One seems discontinued and Coke Zero switched its can color
90f763207f56 Fluffier web page.
Rob Landley <rob@landley.net>
parents: 227
diff changeset
110 from black to grey, presumably in celebration. It was fun while it lasted...)</p>
365
8f0b24cc7cd7 Minor web page updates (put header/footer back, add a few <hr> tags).
Rob Landley <rob@landley.net>
parents: 360
diff changeset
111
8f0b24cc7cd7 Minor web page updates (put header/footer back, add a few <hr> tags).
Rob Landley <rob@landley.net>
parents: 360
diff changeset
112 <!--#include file="footer.html" -->