Mercurial > hg > aboriginal
annotate www/about.html @ 1597:15b4fc37d5f7
Minor tweaks to about page.
author | Rob Landley <rob@landley.net> |
---|---|
date | Tue, 23 Apr 2013 19:13:02 -0500 |
parents | 455f8dec31a0 |
children | ff283fe54626 |
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"> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
9 <ul> |
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 | 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 | 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 | 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 | 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 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
66 <a href=http://speakerdeck.com/u/mirell/p/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 | 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 | 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 | 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"> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
130 <ul> |
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"> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
290 <ul> |
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 | 297 |
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 | 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 -> minicomputer -> microcomputer (PC) -> 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 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
413 GNU tools, no glibc oruClibc, and no gcc or binutils. All those are all |
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->PC 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 | 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 | 561 that the fact it takes hours to figure out what your options are and still has |
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 | 577 bacon and a third ice cream) the end result is an incoherent mess. (At |
578 best you get beige and the DMV. Navigable with enough effort, but not | |
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> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
597 |
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
|
598 <!--#include file="footer.html" --> |