annotate www/about.html @ 1826:1ba206595781 draft

Update build-stages.html documentation.
author Rob Landley <rob@landley.net>
date Wed, 09 Dec 2015 15:28:51 -0600
parents b27851ab2795
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1120
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
1 <html>
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
2 <title>Ab Origine - Latin, "From the beginning".</title>
1120
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
3 <body>
881
0da87d1ef528 Update the web page. Put the left-side nav bar back, move about page to "about.html" and make news.html the default index. Add architectures page. Note that IRC discussion is now on #edev.
Rob Landley <rob@landley.net>
parents: 879
diff changeset
4 <!--#include file="header.html" -->
0da87d1ef528 Update the web page. Put the left-side nav bar back, move about page to "about.html" and make news.html the default index. Add architectures page. Note that IRC discussion is now on #edev.
Rob Landley <rob@landley.net>
parents: 879
diff changeset
5
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
6 <b><h1>Ab Origine - Latin, "From the beginning".</h1></b>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
7
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
8 <table border=1 width=100%><tr><td bgcolor="#C0C0FF">
1618
ff283fe54626 Web page tweaks: put "start here" in header, slightly reword menu entries, use style sheet hackery to make blank lines after lists go away, and remove spanish translation about the about page that went 404.
Rob Landley <rob@landley.net>
parents: 1597
diff changeset
9 <ul style="margin-bottom:0px;">
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
10 <li>Build the simplest linux system capable of compiling itself.</li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
11 <li>Cross compile it to every target supported by QEMU.</li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
12 <li>Boot it under QEMU (or real hardware).</li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
13 <li>Build/test everything else natively on target.</li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
14 </ul>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
15 </td></tr></table>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
16
1050
333c8f799302 Update lots and lots of web pages for the project name change to Aboriginal Linux.
Rob Landley <rob@landley.net>
parents: 1032
diff changeset
17 <b><h1><a href=documentation.html>What is Aboriginal Linux?</a></h1></b>
71
f55a1dba637d News ticker.
Rob Landley <rob@landley.net>
parents: 70
diff changeset
18
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
19 <h2>Creating system images.</h2>
1120
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
20
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
21 <p>Aboriginal Linux is a shell script that builds the smallest/simplest
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
22 linux system capable of rebuilding itself
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
23 from source code. This currently requires seven packages: linux,
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
24 busybox, uClibc, binutils, gcc, make, and bash. The results are packaged into
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
25 a system image with shell scripts to boot it under
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
26 <a href=http://qemu.org>QEMU</a>. (It works fine on real hardware too.)</p>
1120
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
27
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
28 <p>The build supports most <a href=architectures.html>architectures</a>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
29 QEMU can <a href=screenshots>emulate</a> (x86, arm, powerpc,
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
30 mips, sh4, sparc...). The build runs as a normal user (no root access required)
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
31 and should run on any reasonably current distro, downloading and compiling its
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
32 own prerequisites from source (including cross compilers).</p>
1120
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
33
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
34 <p>The build is modular; each section can be bypassed or replaced if desired.
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
35 The build offers a number of <a href=/hg/aboriginal/file/tip/config>configuration
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
36 options</a>, but if you don't want to run the build yourself you can download
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
37 <a href=downloads/binaries>binary system images</a> to play with, built for
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
38 each target with the default options.</p>
1120
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
39
1781
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
40 <p>(Note: the goal of the 2.0 release is to <a href=#migrate>migrate</a>
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
41 from busybox, uClibc, and gcc/binutils to toybox, musl-libc, and
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
42 lvm/lld.)</p>
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
43
1826
1ba206595781 Update build-stages.html documentation.
Rob Landley <rob@landley.net>
parents: 1781
diff changeset
44 <a name="sysimage_use">
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
45 <h2>Using system images.</h2>
1120
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
46
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
47 <p>Each system image tarball contains a wrapper script <b>./run-emulator.sh</b>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
48 which boots it to shell prompt. (This requires the emulator QEMU to be
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
49 installed on the host.) The emulated system's /dev/console is routed to stdin
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
50 and stdout of the qemu process, so you can just type at it and log the output
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
51 with "tee". Exiting the shell causes the emulator to shut down and exit.</p>
1132
ea4fd1dd8c3b Fluff up propaganda page.
Rob Landley <rob@landley.net>
parents: 1120
diff changeset
52
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
53 <p>The wrapper script <b>./dev-environment.sh</b> calls
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
54 run-emulator.sh with extra options to tell QEMU to allocate more memory,
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
55 attach 2 gigabytes of persistent storage to /home in the emulated system,
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
56 and to hook distcc up to the cross compiler to move the heavy lifting of
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
57 compilation outside the emulator (if distccd and the appropriate cross
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
58 compiler are available on the host system).</p>
1132
ea4fd1dd8c3b Fluff up propaganda page.
Rob Landley <rob@landley.net>
parents: 1120
diff changeset
59
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
60 <p>The wrapper script
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
61 <b>./native-build.sh</b> calls dev-environment.sh with a
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
62 <a href=control-images>build control image</a> attached to /mnt in the emulated
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
63 system, allowing the init script to run /mnt/init instead of
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
64 launching a shell prompt, providing fully automated native builds. The "static
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
65 tools" (dropbear, strace) and "linux from scratch" (a chroot tarball) builds
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
66 are run each release as part of testing, with the results <a href=bin>uploaded
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
67 to the website</a>.</p>
1132
ea4fd1dd8c3b Fluff up propaganda page.
Rob Landley <rob@landley.net>
parents: 1120
diff changeset
68
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
69 <p>For more information, see <a href=FAQ.html#where_start>Getting Started</a>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
70 or the presentation slides
1700
5a57035b1946 Replace old broken presentation link with new one in places that mention it other than the nav bar.
Rob Landley <rob@landley.net>
parents: 1626
diff changeset
71 <a href=https://speakerdeck.com/landley/developing-for-non-x86-targets-using-qemu>Developing for non-x86 Targets using QEMU</a>.</p>
388
3eeb77934265 Add project summary page to website, moving news to its own page.
Rob Landley <rob@landley.net>
parents: 384
diff changeset
72
1050
333c8f799302 Update lots and lots of web pages for the project name change to Aboriginal Linux.
Rob Landley <rob@landley.net>
parents: 1032
diff changeset
73 <b><h1><a href=downloads>Downloading Aboriginal Linux</a></h1></b>
379
2925f71bce99 Announce 0.9.0 release.
Rob Landley <rob@landley.net>
parents: 347
diff changeset
74
1120
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
75 <table border=1><tr><td bgcolor="#c0c0ff">
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
76 <p><a href=downloads/binaries>Prebuilt binary images</a> are available
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
77 for each target, based on the current Aboriginal Linux release. This
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
78 includes cross compilers, native compilers, root filesystems suitable for
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
79 chroot, and system images for use with QEMU.</p>
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
80 </td><tr></table>
379
2925f71bce99 Announce 0.9.0 release.
Rob Landley <rob@landley.net>
parents: 347
diff changeset
81
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
82 <p>The <a href=downloads/binaries/README>binary README</a> describes each
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
83 tarball. The <a href=news.html>release notes</a> explain recent changes.</p>
1120
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
84
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
85 <p>Even if you plan to build your own images from source code, you should
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
86 probably start by familiarizing yourself with the (known working) binary
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
87 releases.</p>
279
2966ed8d6803 Belated release announcement for 0.3.1.
Rob Landley <rob@landley.net>
parents: 245
diff changeset
88
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
89 <b><h1><a href=/hg/aboriginal>Development</a></h1></b>
1120
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
90
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
91 <table border=1><tr><td bgcolor="#c0c0ff">
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
92 <p>To build a system image for a target, download the
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
93 <a href=downloads>Aboriginal Linux source code</a> and run "./build.sh"
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
94 with the name of the target to build (or with no arguments to list available
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
95 targets). See the "config" file in the source for various environment
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
96 variables you can export to control the build. See the
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
97 <a href=README>source README</a> for additional usage instructions, and the
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
98 <a href=news.html>release notes</a> for recent changes.</p>
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
99 </td></tr></table>
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
100
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
101 <p>Aboriginal Linux is a build system for creating bootable system images,
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
102 which can be configured to run either on real hardware or under emulators
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
103 (such as <a href=http://qemu.org>QEMU</a>). It is intended to reduce or even
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
104 eliminate the need for further cross compiling, by doing all the cross
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
105 compiling necessary to bootstrap native development on a given target.
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
106 (That said, most of what the build does is create and use cross
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
107 compilers: we cross compile so you don't have to.)</p>
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
108
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
109 <p>The build system is implemented as a series of bash scripts which run to
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
110 create the various binary images. The "build.sh" script invokes the other
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
111 stages in the correct order, but the stages are designed to run individually.
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
112 (Nothing build.sh itself does is actually important.)</p>
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
113
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
114 <p>Aboriginal Linux is designed as a series of orthogonal layers (the stages
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
115 called by build.sh), to increase flexibility and minimize undocumented
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
116 dependencies. Each layer can be either omitted or replaced with something
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
117 else. The list of layers is in the <a href=README>source README</a>.</p>
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
118
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
119 <p>The project maintains a <a href=/hg/aboriginal>development repository</a>
388
3eeb77934265 Add project summary page to website, moving news to its own page.
Rob Landley <rob@landley.net>
parents: 384
diff changeset
120 using the Mercurial source control system. This includes RSS feeds for
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
121 <a href=/hg/aboriginal/rss-log>each checkin</a>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
122 and for <a href=/hg/aboriginal/rss-tags>new releases</a>.</p>
127
ee697f109828 Update web page for 0.2.0.
Rob Landley <rob@landley.net>
parents: 90
diff changeset
123
1050
333c8f799302 Update lots and lots of web pages for the project name change to Aboriginal Linux.
Rob Landley <rob@landley.net>
parents: 1032
diff changeset
124 <p>Questions about Aboriginal Linux should be addressed to the project's
1781
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
125 mailing list, or to the maintainer (rob at landley dot net) who has a
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
126 <a href=/notes.html>blog</a> that often includes
1050
333c8f799302 Update lots and lots of web pages for the project name change to Aboriginal Linux.
Rob Landley <rob@landley.net>
parents: 1032
diff changeset
127 notes about ongoing Aboriginal Linux development.</p>
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
128
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
129 <b><h1>Design goals</h1></b>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
130
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
131 <p>In addition to implementing the above, Aboriginal Linux tries to
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
132 support a number of use cases:</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
133
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
134 <table border=1><tr><td bgcolor="#c0c0ff">
1618
ff283fe54626 Web page tweaks: put "start here" in header, slightly reword menu entries, use style sheet hackery to make blank lines after lists go away, and remove spanish translation about the about page that went 404.
Rob Landley <rob@landley.net>
parents: 1597
diff changeset
135 <ul style="margin-bottom:0px;">
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
136 <li>Eliminate the need for cross compiling</li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
137 <li>Allow package maintainers to reproduce/fix bugs on more architectures</li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
138 <li>Automated cross-platform regression testing and portability auditing.</li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
139 <li>Use current vanilla packages, even on obscure targets.</li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
140 <li>Provide a minimal self-hosting development environment.</li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
141 <li>Cleanly separate layers</li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
142 <li>Document how to put together a development environment.</li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
143 </td></tr></table>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
144
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
145 <ul>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
146 <li><p><b>Eliminate the need for cross compiling</b></p></li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
147
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
148 <p>We cross compile so you don't have to: Moore's Law has
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
149 made native compiling under emulation a reasonable approach to cross-platform
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
150 support.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
151
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
152 <p>If you need to scale up development, Aboriginal Linux lets you throw
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
153 hardware at the scalability problem instead of engineering time, using distcc
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
154 acceleration and distributed package build clusters to compile entire
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
155 distribution repositories on racks of cheap x86 cloud servers.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
156
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
157 <p>But using distcc to call outside the emulator to a cross compiler still
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
158 acts like a native build. It does not reintroduce the
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
159 complexities of cross compiling, such as keeping multiple
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
160 compiler/header/library combinations straight, or preventing configure from
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
161 confusing the system you build on with the system you deploy on.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
162 </li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
163
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
164 <li><p><b>Allow package developers and maintainers to reproduce and fix bugs
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
165 on architectures they don't have access to or experience with.</b></p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
166
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
167 <p>Bug reports can include a link to a system image and a
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
168 reproduction sequence (wget source, build, run this test). This provides
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
169 the maintainer both a way to demonstrate the issue, and a native
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
170 development environment in which to build and test their fix.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
171
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
172 <p>No special hardware is required for this, just an open source emulator
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
173 (generally QEMU) and a system image to run under it. Use wget to fetch your
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
174 source, configure and make your package as normal using standard tool names
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
175 (strip, ld, as, etc), even build and test on a laptop in an airplane
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
176 without internet access (10.0.2.2 is qemu's alias for the host's 127.0.0.1.).</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
177 </li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
178
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
179 <li><p><b>Automated cross-platform regression testing and portability auditing.</b></p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
180
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
181 <p>Aboriginal Linux lets you build the same package across multiple
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
182 architectures, and run the result immediately inside the emulator. You can
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
183 even set up a cron job to build and test regular repository snapshots of a
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
184 package's development version automatically, and report regressions when
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
185 they're fresh, when the developers remember what they did, and when
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
186 there are few recent changes that may have introduced the bug.</p></li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
187
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
188 <li><p><b>Use current vanilla packages, even on obscure targets.</b></p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
189
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
190 <p>Nonstandard hardware often receives less testing than common desktop and
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
191 server platforms, so regressions accumulate. This can lead to a vicious cycle
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
192 where everybody sticks with private forks of old versions because making the
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
193 new ones work is too much trouble, and the new ones don't work because nobody's
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
194 testing and fixing them. The farther you fall behind, the harder it is to
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
195 catch up again, but only the most recent version accepts new patches, so
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
196 even the existing fixes don't go upstream. Worst of all, working in private
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
197 forks becomes the accepted norm, and developers stop even trying to get
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
198 their patches upstream.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
199
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
200 <p>Aboriginal Linux uses the same (current) package versions across all
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
201 architectures, in as similar a configuration as possible, and with as few
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
202 patches as we can get away with. We (intentionally) can't upgrade a package
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
203 for one target without upgrading it for all of them, so we can't put off
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
204 dealing with less-interesting targets.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
205
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
206 <p>This means any supported target stays up to date with current packages in
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
207 unmodified "vanilla" form, providing an easy upgrade path to the next
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
208 version and the ability to push your own changes upstream relatively
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
209 easily.</b></p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
210 </li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
211
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
212 <li><p><b>Provide a minimal self-hosting development environment.</b></p></li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
213
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
214 <blockquote><p>Perfection is achieved, not when there is nothing more to add,
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
215 but when there is nothing left to take away." - Antoine de Saint Exupery</p>
1050
333c8f799302 Update lots and lots of web pages for the project name change to Aboriginal Linux.
Rob Landley <rob@landley.net>
parents: 1032
diff changeset
216 </blockquote>
881
0da87d1ef528 Update the web page. Put the left-side nav bar back, move about page to "about.html" and make news.html the default index. Add architectures page. Note that IRC discussion is now on #edev.
Rob Landley <rob@landley.net>
parents: 879
diff changeset
217
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
218 <p>Most build environments provide dozens of packages, ignoring the questions
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
219 "do you actually need that?" and "what's it for?" in favor of offering
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
220 rich functionality.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
221
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
222 <p>Aboriginal Linux provides the smallest, simplest starting point capable
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
223 of rebuilding itself under itself, and of bootstrapping up to build arbitrarily
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
224 complex environments (such as Linux From Scratch) by building and installing
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
225 additional packages. (The one package we add which is not strictly required
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
226 for this, distcc, is installed it in its own subdirectory which is only
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
227 optionally added to the $PATH.)</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
228
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
229 <p>This minimalist approach makes it possible to regression test for
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
230 environmental dependencies. Sometimes new releases of packages simply won't
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
231 work without perl, or zlib, or some other dependency that previous versions
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
232 didn't have, not because they meant to but because they were never tested in
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
233 a build environment that didn't have them, so the dependency leaked in.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
234
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
235 <p>By providing a build environment that contains only the bare essentials
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
236 (relying on you to build and install whatever else you need), Aboriginal
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
237 Linux lets you document exactly what dependencies packages actually require,
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
238 figure out what functionality the additional packages provide, and measure
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
239 the costs and benefits of the extra code.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
240
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
241 <p>(Note: the command logging wrapper
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
242 <a href=/aboriginal/FAQ.html#debug_logging>record-commands.sh</a> can
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
243 actually show which commands were used out of the $PATH when building any
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
244 package.)</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
245 </li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
246
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
247 <li><p><b>Cleanly separate layers.</b></p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
248
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
249 <p>The entire build is designed to let you use only the parts of it you want,
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
250 and skip or replace the rest. The top level "build.sh" script calls other
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
251 scripts in sequence, each of which is designed to work independently.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
252
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
253 <p>The only place package versions are mentioned is "download.sh", the rest
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
254 of the build is version-agnostic. All it does is populate the "packages"
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
255 directory, and if you want to provide your own you never need to run this
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
256 script.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
257
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
258 <p>The "host-tools.sh" script protects the build from variations in the host
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
259 system, both by building known versions of command line tools (in build/host)
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
260 and adjusting the $PATH to point only to that directory, and by unsetting
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
261 all environment variables that aren't in a whitelist. If you want to
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
262 use the host system's unfiltered environment instead, just skip running
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
263 host-tool.sh.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
264
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
265 <p>If you supply your own cross compilers in the $PATH (with the prefixes the
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
266 given target expects), you can skip the simple-cross-compiler.sh command.
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
267 Similarly you can provide your own simple root filesystem, your own native
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
268 compiler, or your own kernel image. You can use your own script to package
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
269 them if you like.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
270 </li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
271
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
272 <li><p><b>Document how to put together a development environment.</b></p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
273
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
274 <p>The build system is designed to be readable. That's why it's written in
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
275 Bash (rather than something more powerful like Python): so it can act as
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
276 documentation. Each shell script collects the series of commands you need
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
277 to run in order to configure, build, and install the appropriate packages,
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
278 in the order you need to install them in to satisfy their dependencies.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
279
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
280 <p>The build is organized as a series of orthogonal stages. These are called
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
281 in order from build.sh, but may be run (and understood) independently.
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
282 Dependencies between them are kept to a minimum, and stages which depend on
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
283 the output of previous stages document this at the start of the file.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
284
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
285 <p>The scripts are also extensively commented to explain why they
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
286 do what they do, and there's design documentation on the website.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
287 </li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
288 </ul>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
289
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
290 <b><h1>What's next?</h1></b>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
291
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
292 <p>Now that the 1.0 release is out, what are the project's new goals?</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
293
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
294 <table border=1><tr><td bgcolor="#c0c0ff">
1618
ff283fe54626 Web page tweaks: put "start here" in header, slightly reword menu entries, use style sheet hackery to make blank lines after lists go away, and remove spanish translation about the about page that went 404.
Rob Landley <rob@landley.net>
parents: 1597
diff changeset
295 <ul style="margin-bottom:0px;">
1781
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
296 <li><a href="#migrate">Move from busybox, uclibc, and gcc/binutils to toybox, musl, and llvm.</a></li>
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
297 <li><a href="#hairball">Untangle distro build build system hairballs into distinct layers.</a></li>
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
298 <li><a href="#selfhost">Make Android self-hosting</a></li>
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
299 </ul>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
300 </td></tr></table>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
301
1781
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
302 <a name=migrate>
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
303 <h2><b>Move from busybox, uclibc, and gcc/binutils to toybox, musl,
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
304 and llvm (then qcc).</b></h2>
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
305
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
306 <p>Now that we've got a simple development environment working, we can make
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
307 it simpler by moving to better packages. Most of this project's new
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
308 development effort is going into the upstream versions of those packages
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
309 until they're ready for use here. In the meantime we're maintaining what
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
310 works, but only really upgrading the kernel version and slowly switching
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
311 from busybox to toybox one command at a time.)</p>
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
312
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
313 <p><b>uClibc:</b> The uClibc project's <a href=http://lists.uclibc.org/pipermail/uclibc/2007-September/039215.html>chronic development problems</a> resulted in multiple
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
314 year-long gaps between releases, and after the may 2012 release more
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
315 than three years went by without a release during which time
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
316 <a href=http://musl-libc.org>musl-libc</a> went
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
317 from "git init" to a 1.0 release. At this point it doesn't matter
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
318 if uClibc did get another release out, <a href=http://lists.uclibc.org/pipermail/uclibc/2015-May/048989.html>it's over</a>, musl is the more interesting
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
319 project. (Its limitations are lack of target support, but it's easy to
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
320 port musl to new targets and very hard to clean up the mess uClibc has
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
321 become.)</p>
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
322
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
323 <p><b>toybox:</b> The maintainer of Aboriginal Linux <a href=history.html>used to maintain</a>
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
324 busybox, but <a href=http://lwn.net/Articles/202106/>left that project</a>
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
325 and went on to create <a href=http://landley.net/toybox>toybox</a> for
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
326 reasons explained at length elsewhere
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
327 (<a href=https://www.youtube.com/watch?v=SGmtP5Lg_t0>video</a>, <a href=http://landley.net/talks/celf-2013.txt>outline</a>,
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
328 <a href=https://lwn.net/Articles/629362/>merged into Android</a>).</p>
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
329
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
330 <p>The toybox 1.0 release should include a shell capable of replacing
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
331 bash, and may include a make implementation (or in qcc, below). This
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
332 would eliminate two more packages currently used by Aboriginal Linux.</p>
1597
15b4fc37d5f7 Minor tweaks to about page.
Rob Landley <rob@landley.net>
parents: 1580
diff changeset
333
1781
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
334 <p><b>llvm:</b> When gcc and binutils went GPLv3, Aboriginal Linux froze
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
335 on the last GPLv2 releases, essentially maintaining its own fork of
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
336 those projects. Several other projects <a href=http://lastgplv2.org>did
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
337 the same</a> but most of those have since
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
338 <a href=http://llvm.linuxfoundation.org>switched to llvm</a>.</p>
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
339
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
340 <p>Unfortunately, configuring and building llvm is
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
341 <a href=http://ellcc.org/blog/?p=13246>unnecessarily hard</a> (among
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
342 other things because it's not just implemented in C++ but the 2013
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
343 C++ spec, so you need gcc 4.7 or newer to bootstrap it), and nobody seems
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
344 to have worked out how to canadian cross native compilers out of it yet.
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
345 But other alternatives like <a href=http://pcc.ludd.ltu.se/>pcc</a>
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
346 or <a href=http://tinycc.org>tinycc</a> are both less capable and less
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
347 actively developed; since the FSF fell on its sword with GPLv3,
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
348 the new emerging standard is LLVM.</p>
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
349
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
350 <p><b>qcc:</b> In the long run, we'd like to put together a new compiler,
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
351 <a href=http://landley.net/qcc>qcc</a>,
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
352 but won't have development effort to spare for it before toybox's 1.0
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
353 release. Its goal is to combine tinycc and QEMU's Tiny Code Generator into
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
354 a single multicall binary toolchain (cc, ld, as, strip and so on in a single
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
355 executable replacing both the gcc and binutils packages) that supports all
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
356 the output formats QEMU can emulate. (As a single-pass compiler with
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
357 no intermediate format it wouldn't optimize well, but could bootstrap
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
358 a native compiler that would.)</p>
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
359
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
360 <p>Additional goals for qcc would be to absorb ccwrap.c, grow built-in
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
361 distcc equivalent functionality, and an updated rewrite of cfront to
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
362 compile C++ code (and thus natively bootstrap LLVM).
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
363
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
364 <p>Finishing the full development slate would bring the total number of
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
365 Aboriginal Linux packages down to four: linux, toybox, musl, and qcc.</p>
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
366
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
367 <p>(Yes, reducing dependency on GPL software and avoiding GPLv3 entirely
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
368 is a common theme of the above package switches, there's a reason for
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
369 that: <a href=https://archive.org/download/OhioLinuxfest2013/24-Rob_Landley-The_Rise_and_Fall_of_Copyleft.mp3>audio</a>,
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
370 <a href=http://landley.net/talks/ohio-2013.txt>outline</a>, see also
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
371 <a href=#selfhost>Android self-hosting</a> below.)</p>
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
372
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
373 <a name=hairball>
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
374 <h2><b>Untangle distro build system hairballs into distinct layers.</b></h2>
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
375
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
376 <p>The goal here is to separate what packages you can build from where and how
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
377 you can build them.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
378
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
379 <p>For years, Red Hat only built under Red Hat, Debian only built under Debian,
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
380 even Gentoo assumed it was building under Gentoo. Building their packages
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
381 required using their root filesystem, and the only way to get their root
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
382 filesystem was by installing their package binaries built under their root
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
383 filesystem. The circular nature of this process meant that porting an existing
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
384 distribution to a new architecture, or making it use a new C library,
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
385 was extremely difficult at best.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
386
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
387 <p>This led cross compilng build systems to add their own package builds
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
388 ("the buildroot trap"), and wind up maintaining their own repository of
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
389 package build recipes, configurations, and dependencies. Their few hundred
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
390 packages never approached the tens of thousands in full distribution
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
391 repositories, but the effort of maintaining and upgrading packages would
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
392 come to dominate the project's development effort until developers left to
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
393 form new projects and start the cycle over again.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
394
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
395 <p>This massive and perpetual reinventing of wheels is wasteful. The
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
396 proliferation of build systems (buildroot, openembedded, yocto/meego/tizen,
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
397 and many more) each has its own set of supported boards and its own half-assed
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
398 package repository, with no ability to mix and match.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
399
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
400 <p>The proper way to deal with this is to separate the layers so you can mix
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
401 and match. Choice of toolchain (and C library), "board support" (kernel
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
402 configuration, device tree, module selection), and package repository (which
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
403 existing distro you want to use), all must become independent. Until these are
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
404 properly separated, your choice of cross compiler limits
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
405 what boards you can boot the result on (even if the binaries you're building
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
406 would run in a chroot on that hardware), and either of those choices limit
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
407 what packages you can install into the resulting system.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
408
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
409 <p>This means Aboriginal Linux needs to be able to build _just_ toolchains
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
410 and provide them to other projects (done), and to accept external toolchains
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
411 (implemented but not well tested; most other projects produce cross compilers
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
412 but not native compilers).</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
413
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
414 <p>It also needs build control images to automatically bootstrap a Debian,
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
415 Fedora, or Gentoo chroot starting from the minimal development enviornment
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
416 Aboriginal Linux creates (possibly through an intermediate Linux From Scratch
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
417 build, followed by fixups to make debian/fedora/gentoo happy with the chroot).
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
418 It must be able to do this on an arbitrary host, using the existing toolchain
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
419 and C library in an architecture-agnostic way. (If the existing system is
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
420 a musl libc built for a microblaze processor, the new chroot should be too.)</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
421
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
422 <p>None of these distributions make it easy: it's not documented, and it
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
423 breaks. Some distributions didn't think things through: Gentoo hardwires the
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
424 list of supported architectures into every package in the repository, for
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
425 no apparent reason. Adding a new architecture requires touching every package's
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
426 metadata. Others are outright lazy; building the an allnoconfig Red
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
427 Hat Enterprise 6.2 kernel under SLES11p2 is kind of hilariously bad: "make
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
428 clean" spits out an error because the code it added to detect compiler
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
429 version (something upstream doesn't need) gets confused by "gcc 4.3", which
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
430 has no .0 on the end so the patchlevel variable is blank. Even under Red Hat's
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
431 own filesystem, "make allnoconfig" breaks on the first C file, and requires
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
432 almost two dozen config symbols to be switched on to finish the compilation,
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
433 becuase they never tested anything but the config they ship. Making
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
434 something like that work on a Hexagon processor, or making their
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
435 root filesystem work with a vanilla kernel, is a daunting task.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
436
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
437 <a name=selfhost>
1597
15b4fc37d5f7 Minor tweaks to about page.
Rob Landley <rob@landley.net>
parents: 1580
diff changeset
438 <h2><b>Make Android self-hosting (musl, toybox, qcc).</b></h2>
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
439
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
440 <p>Smartphones are replacing the PC, and if Android doesn't become self-hosting
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
441 we may be stuck with locked down iPhone derivatives in the next generation.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
442
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
443 <blockquote>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
444 <b>Mainframe -&gt minicomputer -&gt microcomputer (PC) -&gt smartphone</b>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
445 </blockquote>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
446
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
447 <p>Mainframes were replaced by minicomputers, which were replaced by
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
448 microcomputers, which are being replaced by smartphones. (Nobody needed to
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
449 stand in line to pick up a printout when they could sign up for a timeslot at a
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
450 terminal down the hall. Nobody needed the terminal down the hall when they
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
451 had a computer on their desk. Now nobody needs the computer on their desk when
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
452 they have one in their pocket.)</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
453
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
454 <p>Each time the previous generation got kicked up into the "server space",
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
455 only accessed through the newer machines. (This time around kicking the PC
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
456 up into the server space is called "the cloud".)</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
457
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
458 <p>Smartphones have USB ports, which charge the phone and transfer data.
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
459 Using a smartphone as a development workstation involves plugging it into a
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
460 USB hub, adding a USB keyboard, USB mouse, and USB to HDMI converter to plug
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
461 it into a television. The rest is software.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
462
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
463 <p>The smartphone needs to "grow up and become a real computer" the
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
464 same way the PC did. The PC originally booted into "ROM Basic" just like
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
465 today's Android boots into Dalvik Java: as the platform matures it must
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
466 outgrow this to run native code written in all sorts of languages.
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
467 PC software was once cross compiled from minicomputers, but as it matured
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
468 it grew to host its own development tools, powerful enough to rebuild the
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
469 entire operating system.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
470
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
471 <p>To grow up, Android phones need to become usable as development
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
472 workstations, meaning the OS needs a self-hosting native development
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
473 environment. This has four parts:</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
474
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
475 <ul>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
476 <li>Kernel (we're good)</li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
477 <li>C library (bionic->musl, not uclibc)</li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
478 <li>Posix command line (toolbox->toybox, not busybox)</li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
479 <li>Compiler (qcc, llvm, open64, pcc...)</li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
480 </ul>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
481
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
482 <p>The Android kernel is a Linux derivative that adds features without removing
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
483 any, so it's already good enough for now. Convergence to vanilla linux is
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
484 important for long-term sustainability, but not time critical. (It's not part
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
485 of "beating iPhone".)</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
486
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
487 <p>Android's "no GPL in userspace" policy precludes it from shipping
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
488 many existing Linux packages as part of the base install: no BusyBox or
1626
6f74d6a209da Typo spotted by Tadeusz Tomala.
Rob Landley <rob@landley.net>
parents: 1618
diff changeset
489 GNU tools, no glibc or uClibc, and no gcc or binutils. All those are all
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
490 excluded from the Android base install, meaning they will never
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
491 come bundled with the base operating system or preinstalled on devices,
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
492 so we must find alternatives.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
493
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
494 <p>Android's libc is called "bionic", and is a minimal stub sufficient
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
495 to run Dalvik, and not much more. Its command line is called "toolbox" and
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
496 is also a minimal stub providing little functionality. Part of this is
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
497 intentional: Google is shipping a billion broadband-connected unix machines,
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
498 none of which are administered by a competent sysadmin. So for security
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
499 reasons, Android is locked down with minimal functionality outside the Java
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
500 VM sandbox, providing less of an attack surface for viruses and trojans.
1781
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
501 In theory the <a href=http://linuxcontainers.org>Linux Containers</a>
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
502 infrastructure may eventually provide a solution for sandboxing applications,
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
503 but the base OS needs to be pretty bulletproof if a billion people are going
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
504 to run code they don't deeply understand connected to broadband internet
b27851ab2795 Vo Minh Thu was surprised by toybox replacing busybox and requested I update about.html.
Rob Landley <rob@landley.net>
parents: 1700
diff changeset
505 24/7.</p>
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
506
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
507 <p>Thus replacement packages for the C library and posix command line
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
508 should be clean simple code easy to audit for security concerns. But it
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
509 must also provide functionality that bionic and toolbox do not
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
510 attempt, and do not provide a good base for. The musl libc and toybox
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
511 command line package should be able to satisfy these requirements.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
512
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
513 <p>The toolchain is a harder problem. The leading contender (LLVM) is sponsored
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
514 by Apple for use in Mac OSX and the iPhone's iOS. The iPhone is ahead of
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
515 Android here, and although Android can use this it has other problems
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
516 (implemented in C++ so significantly more complicated from a system
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
517 dependency standpoint, making it difficult to bootstrap and impossible
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
518 to audit).</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
519
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
520 <p>The simplest option would be to combine the TinyCC project with QEMU's
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
521 Tiny Code Generator (TCG). The licensing of the current TinyCC is incompatible
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
522 with Android's userspace but permission has been obtained from Fabrice
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
523 Bellard to BSD-license his original TinyCC code as used in Rob's TinyCC fork.
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
524 This could be used to implement a "<a href=http://landley.net/qcc>qcc</a>"
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
525 capable of producing code for
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
526 every platform qemu supports. The result would be simple and auditable,
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
527 and compatably licensed with android userspace. Unfortunately, such a project
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
528 is understaffed, and wouldn't get properly started until after the 1.0
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
529 release of Toybox.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
530
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
531 <p>Other potential compiler projects include Open64 and PCC. Neither of these
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
532 has built a bootable the Linux kernel, without which a self-bootstrapping
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
533 system is impossible. (This is a good smoketest for a mature compiler: if it
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
534 can't build the kernel, it probably can't build userspace packages of the
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
535 complexity people actually write.)</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
536
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
537 <b>Why does this matter?</b>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
538
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
539 <p>This is time critical due to network effects, which create positive
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
540 feedback loops benefiting the most successful entrant and creating natural
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
541 "standards" (which become self-defending monopolies if owned by a single
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
542 player.) Whichever platform has the most users attracts the most
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
543 development effort, because it has the most potential customers. The platform
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
544 all the software ships on first (often only) is the one everybody wants to
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
545 have. Other benefits to being biggest include the large start-up costs and
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
546 much lower incremental costs of electronics manufacturing: higher unit
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
547 volume makes devices cheaper to produce. Amortizing research and development
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
548 budgets over a larger user base means the technology may actually advance
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
549 faster (more effort, anyway)...</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
550
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
551 <p>Technological transitions produce "S curves", where a gradual increase
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
552 gives way to exponential increase (the line can go nearly vertical on a graph)
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
553 and then eventually flattens out again producing a sort of S shape.
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
554 During the steep part of the S-curve acquiring new customers dominates.
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
555 Back in the early minicomputer days a lot more people had no computer than had
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
556 an Atari 800 or Commodore 64 or Apple II or IBM PC, so each vendor focused
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
557 on selling to the computerless than converting customers from other
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
558 vendors. Once the pool of "people who haven't got the kind of computer
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
559 we're selling today but would like one if they did" was exhausted (even if
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
560 only temporarily, waiting for computers to get more powerful and easier
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
561 to use), the largest players starved the smaller ones of new sales, until
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
562 only the PC and Macintosh were left. (And the Macintosh switched over to
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
563 PC hardware components to survive, offering different software and more
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
564 attractive packaging of the same basic components.)</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
565
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
566 <p>The same smartphone transition is inevitable as the pool of "people with
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
567 no smartphone, but who would like one if they had it" runs out. At that point,
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
568 the largest platform will suck users away from smaller platforms. If the
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
569 winner is android we can open up the hardware and software. If the winner
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
570 is iPhone, we're stuck with decades of microsoft-like monopoly except
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
571 this time the vendor isn't hamstrung by their own technical incompetence.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
572
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
573 <p>The PC lasted over 30 years from its 1981 introduction until smartphones
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
574 seriously started displacing it. Smartphones themselves will probably last
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
575 about as long. Once the new standard "clicks", we're stuck with it for
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
576 a long time. Now is when we can influence this decision. Linux's
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
577 15 consecutive "year of the linux desktop" announcements (spanning the period
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
578 of Microsoft Bob, Windows Millennium, and windows Vista) show how hard
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
579 displacing an entrenched standard held in place by network effects actually
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
580 is.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
581
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
582 <b>Why not extend vanilla Linux to smartphones instead?</b>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
583
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
584 <p>Several reasons.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
585
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
586 <ul>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
587 <li><p>It's probably too late for another entrant. Microsoft muscling in with
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
588 Lumia is like IBM muscling in with OS/2. And Ubuntu on the phone is like
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
589 Coherent Unix on the PC, unlikely to even register. We have two clear leaders
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
590 and the rest are noise ("Coke, Pepsi, and everybody else"). Possibly they
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
591 could still gain ground by being categorically better, but "Categorically
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
592 better than the newest iPhone/iPad" is a hard bar to clear.</p></li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
593
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
594 <li><p>During the minicomputer-&gtPC switch, various big iron vendors tried to
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
595 shoehorn their products down into the minicomputer space. The results were
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
596 laughable. (Look up the "microvax" sometime.)</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
597
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
598 <p>The successful tablets are big phones, not small PCs. Teaching a PC to be
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
599 a good phone is actually harder than teaching a phone to be a good PC, we
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
600 understand the old problem space much better. (It's not that it's less
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
601 demanding, but the ways in which it is demanding are old hat and long
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
602 solved. Being a good phone is still tricky.)</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
603 </li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
604
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
605 <li><p>Deployment requires vendor partnerships which are difficult and slow.
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
606 Apple exclusively partnered with AT&T for years to build market share, and
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
607 had much less competition at the time. Google eventually wound up buying
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
608 Motorola to defend itself from the dysfunctional patent environment.
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
609 Microsoft hijacked Nokia by installing one of their own people as CEO, and
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
610 it's done them about as much good as a similiar CEO-installation at SGI did
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
611 to get Microsoft into the supercomputer market. (Taking out SGI did reduce
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
612 Microsoft's competition in graphics workstations, but that was a market they
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
613 already had traction in.)</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
614
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
615 <li>Finally, Linux has had almost 2 decades of annual "Linux on the Desktop"
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
616 pushes that universally failed, and there's a reason for this. Open source
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
617 development can't do good user interfaces for the same reason wikipedia can't
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
618 write a novel with a coherent plot. The limitations of the development model
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
619 do not allow for this. The old adage "too many cooks spoil the soup" is not
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
620 a warning about lack of nutrition, it's a warning that aesthetic issues do
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
621 not survive committees. Peer review does not produce blockbuster movies,
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
622 hit songs, or masterpiece paintings. It finds scientific facts, not beauty.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
623
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
624 <p>Any time "shut up and show me the code" is not the correct response to
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
625 the problem at hand, open source development melts down into one of three
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
626 distinct failure modes:</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
627
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
628 <p>1) Endless discussion that never results in actual code, because
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
629 nobody can agree on a single course of action.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
630
1597
15b4fc37d5f7 Minor tweaks to about page.
Rob Landley <rob@landley.net>
parents: 1580
diff changeset
631 <p>2) The project forks itself to death: everybody goes off and codes up their
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
632 preferred solution, but it's no easier to agree on a single approach after
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
633 the code exists so the forks never get merged.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
634
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
635 <p>3) Delegating the problem to nobody, either by A) separating engine from
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
636 interface and focusing on the engine in hopes that some glorious day somebody
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
637 will write an interface worth using, or B) making the interface so configurable
1597
15b4fc37d5f7 Minor tweaks to about page.
Rob Landley <rob@landley.net>
parents: 1580
diff changeset
638 that the fact it takes hours to figure out what your options are and still has
15b4fc37d5f7 Minor tweaks to about page.
Rob Landley <rob@landley.net>
parents: 1580
diff changeset
639 no sane defaults is now somehow the end user's fault.</p>
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
640
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
641 <p>Open source development defeats Brooks' Law by leveraging empirical tests.
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
642 Integrating the results of decoupled development efforts is made possible
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
643 by the ability to unequivocally determine which approaches are best (trusted
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
644 engineers break ties, but it has to be pretty close and the arguments go back
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
645 and forth). Even changing the design and repeatedly ripping out existing
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
646 implementations is doable if everyone can at least retroactively agree that what
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
647 we have now is better that what we used to have, and we should stop fighting
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
648 to go back to the old way.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
649
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
650 <p>In the absence of empirical tests, this doesn't work. By their nature,
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
651 aesthetic issues do not have emprical tests for "better" or "worse".
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
652 Chinese food is not "better" than mexican food. But if you can't
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
653 decide what you're doing (if one chef insists on adding ketchup and another
1597
15b4fc37d5f7 Minor tweaks to about page.
Rob Landley <rob@landley.net>
parents: 1580
diff changeset
654 bacon and a third ice cream) the end result is an incoherent mess. (At
15b4fc37d5f7 Minor tweaks to about page.
Rob Landley <rob@landley.net>
parents: 1580
diff changeset
655 best you get beige and the DMV. Navigable with enough effort, but not
15b4fc37d5f7 Minor tweaks to about page.
Rob Landley <rob@landley.net>
parents: 1580
diff changeset
656 appealing.)</p>
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
657
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
658 <p>The way around this is to a have a single author with a clear vision
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
659 in charge of the user interface, who can make aesthetic decisions that are
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
660 coherent rather than "correct". Unfortunately when this does happen, the
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
661 open source community pressures the developer of a successful project to
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
662 give over control of the project to a committee. So the Gecko engine was
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
663 buried in the unusable Mozilla browser, then Galleon forked off from that
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
664 and Mozilla rebased itself on the Galleon fork. Then Firefox forked off
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
665 of that and the Mozilla foundation took over Firefox...</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
666
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
667 <p>Part of the success of Android is that its user experience is NOT
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
668 community developed. (This isn't just desktop, this is "if the whole thing
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
669 pauses for two seconds while somebody's typing in a phone number, that's
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
670 unacceptable". All the way down to the bare metal, the OS serves the task
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
671 of being a handheld interactive touch screen device running off of battery
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
672 power first, being anything else it _could_ be doing second.)</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
673 </li>
1618
ff283fe54626 Web page tweaks: put "start here" in header, slightly reword menu entries, use style sheet hackery to make blank lines after lists go away, and remove spanish translation about the about page that went 404.
Rob Landley <rob@landley.net>
parents: 1597
diff changeset
674 </ul>
ff283fe54626 Web page tweaks: put "start here" in header, slightly reword menu entries, use style sheet hackery to make blank lines after lists go away, and remove spanish translation about the about page that went 404.
Rob Landley <rob@landley.net>
parents: 1597
diff changeset
675
ff283fe54626 Web page tweaks: put "start here" in header, slightly reword menu entries, use style sheet hackery to make blank lines after lists go away, and remove spanish translation about the about page that went 404.
Rob Landley <rob@landley.net>
parents: 1597
diff changeset
676 <hr>
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
677
881
0da87d1ef528 Update the web page. Put the left-side nav bar back, move about page to "about.html" and make news.html the default index. Add architectures page. Note that IRC discussion is now on #edev.
Rob Landley <rob@landley.net>
parents: 879
diff changeset
678 <!--#include file="footer.html" -->