annotate www/about.html @ 1700:5a57035b1946 draft

Replace old broken presentation link with new one in places that mention it other than the nav bar. Thanks to Kartik Agaram for the heads up.
author Rob Landley <rob@landley.net>
date Wed, 22 Oct 2014 11:02:57 -0500
parents 6f74d6a209da
children b27851ab2795
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
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
40 <h2>Using system images.</h2>
1120
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
41
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
42 <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
43 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
44 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
45 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
46 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
47
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
48 <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
49 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
50 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
51 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
52 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
53 compiler are available on the host system).</p>
1132
ea4fd1dd8c3b Fluff up propaganda page.
Rob Landley <rob@landley.net>
parents: 1120
diff changeset
54
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
55 <p>The wrapper script
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
56 <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
57 <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
58 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
59 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
60 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
61 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
62 to the website</a>.</p>
1132
ea4fd1dd8c3b Fluff up propaganda page.
Rob Landley <rob@landley.net>
parents: 1120
diff changeset
63
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
64 <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
65 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
66 <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
67
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
68 <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
69
1120
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
70 <table border=1><tr><td bgcolor="#c0c0ff">
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
71 <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
72 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
73 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
74 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
75 </td><tr></table>
379
2925f71bce99 Announce 0.9.0 release.
Rob Landley <rob@landley.net>
parents: 347
diff changeset
76
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
77 <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
78 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
79
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
80 <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
81 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
82 releases.</p>
279
2966ed8d6803 Belated release announcement for 0.3.1.
Rob Landley <rob@landley.net>
parents: 245
diff changeset
83
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
84 <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
85
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
86 <table border=1><tr><td bgcolor="#c0c0ff">
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
87 <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
88 <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
89 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
90 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
91 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
92 <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
93 <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
94 </td></tr></table>
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
95
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
96 <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
97 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
98 (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
99 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
100 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
101 (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
102 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
103
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
104 <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
105 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
106 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
107 (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
108
34fb47276e30 Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents: 1050
diff changeset
109 <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
110 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
111 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
112 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
113
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
114 <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
115 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
116 <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
117 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
118
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
119 <p>Questions about Aboriginal Linux should be addressed to the project's
1321
4c0a2018502c Clean up old references to impactlinux.com, add a FAQ explaining why that site went away, and start the long and winding process of redoing documentation.hmtl.
Rob Landley <rob@landley.net>
parents: 1305
diff changeset
120 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
121 <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
122 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
123
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
124 <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
125
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
126 <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
127 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
128
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
129 <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
130 <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
131 <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
132 <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
133 <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
134 <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
135 <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
136 <li>Cleanly separate layers</li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
137 <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
138 </td></tr></table>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
139
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
140 <ul>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
141 <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
142
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
143 <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
144 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
145 support.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
146
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
147 <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
148 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
149 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
150 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
151
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
152 <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
153 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
154 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
155 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
156 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
157 </li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
158
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
159 <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
160 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
161
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
162 <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
163 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
164 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
165 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
166
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
167 <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
168 (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
169 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
170 (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
171 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
172 </li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
173
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
174 <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
175
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
176 <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
177 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
178 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
179 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
180 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
181 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
182
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
183 <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
184
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
185 <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
186 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
187 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
188 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
189 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
190 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
191 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
192 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
193 their patches upstream.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
194
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
195 <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
196 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
197 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
198 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
199 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
200
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
201 <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
202 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
203 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
204 easily.</b></p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
205 </li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
206
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
207 <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
208
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
209 <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
210 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
211 </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
212
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
213 <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
214 "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
215 rich functionality.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
216
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
217 <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
218 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
219 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
220 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
221 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
222 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
223
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
224 <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
225 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
226 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
227 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
228 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
229
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
230 <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
231 (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
232 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
233 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
234 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
235
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
236 <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
237 <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
238 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
239 package.)</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
240 </li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
241
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
242 <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
243
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
244 <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
245 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
246 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
247
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
248 <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
249 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
250 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
251 script.</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 "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
254 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
255 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
256 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
257 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
258 host-tool.sh.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
259
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
260 <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
261 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
262 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
263 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
264 them if you like.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
265 </li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
266
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
267 <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
268
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
269 <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
270 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
271 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
272 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
273 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
274
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
275 <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
276 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
277 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
278 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
279
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
280 <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
281 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
282 </li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
283 </ul>
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 <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
286
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
287 <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
288
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
289 <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
290 <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
291 <li>Untangle hairball build systems into distinct layers.</li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
292 <li>Make Android self-hosting</li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
293 </ul>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
294 </td></tr></table>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
295
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
296 <a name=hairball>
1597
15b4fc37d5f7 Minor tweaks to about page.
Rob Landley <rob@landley.net>
parents: 1580
diff changeset
297
15b4fc37d5f7 Minor tweaks to about page.
Rob Landley <rob@landley.net>
parents: 1580
diff changeset
298 <h2><b>Untangle hairball build systems 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
299
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
300 <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
301 you can build them.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
302
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
303 <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
304 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
305 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
306 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
307 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
308 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
309 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
310
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
311 <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
312 ("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
313 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
314 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
315 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
316 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
317 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
318
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
319 <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
320 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
321 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
322 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
323
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
324 <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
325 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
326 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
327 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
328 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
329 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
330 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
331 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
332
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
333 <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
334 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
335 (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
336 but not native compilers).</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
337
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
338 <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
339 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
340 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
341 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
342 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
343 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
344 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
345
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
346 <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
347 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
348 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
349 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
350 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
351 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
352 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
353 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
354 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
355 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
356 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
357 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
358 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
359 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
360
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
361 <a name=selfhost>
1597
15b4fc37d5f7 Minor tweaks to about page.
Rob Landley <rob@landley.net>
parents: 1580
diff changeset
362 <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
363
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
364 <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
365 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
366
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
367 <blockquote>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
368 <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
369 </blockquote>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
370
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
371 <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
372 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
373 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
374 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
375 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
376 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
377
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
378 <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
379 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
380 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
381
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
382 <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
383 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
384 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
385 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
386
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
387 <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
388 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
389 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
390 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
391 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
392 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
393 entire operating system.</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>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
396 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
397 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
398
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
399 <ul>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
400 <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
401 <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
402 <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
403 <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
404 </ul>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
405
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
406 <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
407 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
408 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
409 of "beating iPhone".)</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
410
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
411 <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
412 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
413 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
414 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
415 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
416 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
417
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
418 <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
419 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
420 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
421 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
422 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
423 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
424 VM sandbox, providing less of an attack surface for viruses and trojans.
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
425 In theory the <a href=http://lxc.sf.net>Linux Containers</a> infrastructure
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
426 may eventually provide a solution for sandboxing applications, but the
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
427 base OS needs to be pretty bulletproof if a billion people are going to
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
428 run code they don't deeply understand connected to broadband internet 24/7.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
429
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
430 <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
431 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
432 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
433 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
434 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
435
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
436 <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
437 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
438 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
439 (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
440 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
441 to audit).</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 <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
444 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
445 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
446 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
447 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
448 capable of producing code for
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
449 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
450 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
451 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
452 release of Toybox.</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>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
455 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
456 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
457 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
458 complexity people actually write.)</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
459
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
460 <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
461
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
462 <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
463 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
464 "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
465 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
466 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
467 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
468 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
469 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
470 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
471 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
472 faster (more effort, anyway)...</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
473
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
474 <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
475 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
476 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
477 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
478 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
479 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
480 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
481 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
482 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
483 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
484 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
485 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
486 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
487 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
488
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
489 <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
490 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
491 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
492 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
493 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
494 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
495
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
496 <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
497 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
498 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
499 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
500 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
501 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
502 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
503 is.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
504
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
505 <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
506
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
507 <p>Several reasons.</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
508
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
509 <ul>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
510 <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
511 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
512 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
513 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
514 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
515 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
516
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
517 <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
518 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
519 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
520
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
521 <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
522 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
523 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
524 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
525 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
526 </li>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
527
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
528 <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
529 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
530 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
531 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
532 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
533 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
534 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
535 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
536 already had traction in.)</p>
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
537
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
538 <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
539 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
540 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
541 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
542 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
543 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
544 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
545 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
546
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
547 <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
548 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
549 distinct failure modes:</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>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
552 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
553
1597
15b4fc37d5f7 Minor tweaks to about page.
Rob Landley <rob@landley.net>
parents: 1580
diff changeset
554 <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
555 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
556 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
557
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
558 <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
559 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
560 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
561 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
562 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
563
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
564 <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
565 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
566 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
567 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
568 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
569 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
570 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
571 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
572
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
573 <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
574 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
575 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
576 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
577 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
578 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
579 appealing.)</p>
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
581 <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
582 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
583 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
584 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
585 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
586 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
587 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
588 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
589
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
590 <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
591 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
592 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
593 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
594 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
595 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
596 </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
597 </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
598
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
599 <hr>
1580
455f8dec31a0 Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents: 1341
diff changeset
600
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
601 <!--#include file="footer.html" -->