Mercurial > hg > aboriginal
annotate www/about.html @ 1706:dcb7e74a7a71 draft
Tweak rebuild dependencies for ./build.sh $ARCH $STAGENAME
author | Rob Landley <rob@landley.net> |
---|---|
date | Wed, 12 Nov 2014 09:20:57 -0600 |
parents | 5a57035b1946 |
children | b27851ab2795 |
rev | line source |
---|---|
1120
34fb47276e30
Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents:
1050
diff
changeset
|
1 <html> |
1580
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
2 <title>Ab Origine - Latin, "From the beginning".</title> |
1120
34fb47276e30
Fluff up the "about" page a bit.
Rob Landley <rob@landley.net>
parents:
1050
diff
changeset
|
3 <body> |
881
0da87d1ef528
Update the web page. Put the left-side nav bar back, move about page to "about.html" and make news.html the default index. Add architectures page. Note that IRC discussion is now on #edev.
Rob Landley <rob@landley.net>
parents:
879
diff
changeset
|
4 <!--#include file="header.html" --> |
0da87d1ef528
Update the web page. Put the left-side nav bar back, move about page to "about.html" and make news.html the default index. Add architectures page. Note that IRC discussion is now on #edev.
Rob Landley <rob@landley.net>
parents:
879
diff
changeset
|
5 |
1580
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
6 <b><h1>Ab Origine - Latin, "From the beginning".</h1></b> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
7 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
8 <table border=1 width=100%><tr><td bgcolor="#C0C0FF"> |
1618
ff283fe54626
Web page tweaks: put "start here" in header, slightly reword menu entries, use style sheet hackery to make blank lines after lists go away, and remove spanish translation about the about page that went 404.
Rob Landley <rob@landley.net>
parents:
1597
diff
changeset
|
9 <ul style="margin-bottom:0px;"> |
1580
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
10 <li>Build the simplest linux system capable of compiling itself.</li> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
11 <li>Cross compile it to every target supported by QEMU.</li> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
12 <li>Boot it under QEMU (or real hardware).</li> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
13 <li>Build/test everything else natively on target.</li> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
14 </ul> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
15 </td></tr></table> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
16 |
1050
333c8f799302
Update lots and lots of web pages for the project name change to Aboriginal Linux.
Rob Landley <rob@landley.net>
parents:
1032
diff
changeset
|
17 <b><h1><a href=documentation.html>What is Aboriginal Linux?</a></h1></b> |
71 | 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 |
1700
5a57035b1946
Replace old broken presentation link with new one in places that mention it other than the nav bar.
Rob Landley <rob@landley.net>
parents:
1626
diff
changeset
|
66 <a href=https://speakerdeck.com/landley/developing-for-non-x86-targets-using-qemu>Developing for non-x86 Targets using QEMU</a>.</p> |
388
3eeb77934265
Add project summary page to website, moving news to its own page.
Rob Landley <rob@landley.net>
parents:
384
diff
changeset
|
67 |
1050
333c8f799302
Update lots and lots of web pages for the project name change to Aboriginal Linux.
Rob Landley <rob@landley.net>
parents:
1032
diff
changeset
|
68 <b><h1><a href=downloads>Downloading Aboriginal Linux</a></h1></b> |
379 | 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"> |
1618
ff283fe54626
Web page tweaks: put "start here" in header, slightly reword menu entries, use style sheet hackery to make blank lines after lists go away, and remove spanish translation about the about page that went 404.
Rob Landley <rob@landley.net>
parents:
1597
diff
changeset
|
130 <ul style="margin-bottom:0px;"> |
1580
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
131 <li>Eliminate the need for cross compiling</li> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
132 <li>Allow package maintainers to reproduce/fix bugs on more architectures</li> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
133 <li>Automated cross-platform regression testing and portability auditing.</li> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
134 <li>Use current vanilla packages, even on obscure targets.</li> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
135 <li>Provide a minimal self-hosting development environment.</li> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
136 <li>Cleanly separate layers</li> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
137 <li>Document how to put together a development environment.</li> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
138 </td></tr></table> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
139 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
140 <ul> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
141 <li><p><b>Eliminate the need for cross compiling</b></p></li> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
142 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
143 <p>We cross compile so you don't have to: Moore's Law has |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
144 made native compiling under emulation a reasonable approach to cross-platform |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
145 support.</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
146 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
147 <p>If you need to scale up development, Aboriginal Linux lets you throw |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
148 hardware at the scalability problem instead of engineering time, using distcc |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
149 acceleration and distributed package build clusters to compile entire |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
150 distribution repositories on racks of cheap x86 cloud servers.</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
151 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
152 <p>But using distcc to call outside the emulator to a cross compiler still |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
153 acts like a native build. It does not reintroduce the |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
154 complexities of cross compiling, such as keeping multiple |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
155 compiler/header/library combinations straight, or preventing configure from |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
156 confusing the system you build on with the system you deploy on.</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
157 </li> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
158 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
159 <li><p><b>Allow package developers and maintainers to reproduce and fix bugs |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
160 on architectures they don't have access to or experience with.</b></p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
161 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
162 <p>Bug reports can include a link to a system image and a |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
163 reproduction sequence (wget source, build, run this test). This provides |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
164 the maintainer both a way to demonstrate the issue, and a native |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
165 development environment in which to build and test their fix.</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
166 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
167 <p>No special hardware is required for this, just an open source emulator |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
168 (generally QEMU) and a system image to run under it. Use wget to fetch your |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
169 source, configure and make your package as normal using standard tool names |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
170 (strip, ld, as, etc), even build and test on a laptop in an airplane |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
171 without internet access (10.0.2.2 is qemu's alias for the host's 127.0.0.1.).</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
172 </li> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
173 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
174 <li><p><b>Automated cross-platform regression testing and portability auditing.</b></p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
175 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
176 <p>Aboriginal Linux lets you build the same package across multiple |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
177 architectures, and run the result immediately inside the emulator. You can |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
178 even set up a cron job to build and test regular repository snapshots of a |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
179 package's development version automatically, and report regressions when |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
180 they're fresh, when the developers remember what they did, and when |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
181 there are few recent changes that may have introduced the bug.</p></li> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
182 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
183 <li><p><b>Use current vanilla packages, even on obscure targets.</b></p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
184 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
185 <p>Nonstandard hardware often receives less testing than common desktop and |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
186 server platforms, so regressions accumulate. This can lead to a vicious cycle |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
187 where everybody sticks with private forks of old versions because making the |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
188 new ones work is too much trouble, and the new ones don't work because nobody's |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
189 testing and fixing them. The farther you fall behind, the harder it is to |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
190 catch up again, but only the most recent version accepts new patches, so |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
191 even the existing fixes don't go upstream. Worst of all, working in private |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
192 forks becomes the accepted norm, and developers stop even trying to get |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
193 their patches upstream.</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
194 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
195 <p>Aboriginal Linux uses the same (current) package versions across all |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
196 architectures, in as similar a configuration as possible, and with as few |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
197 patches as we can get away with. We (intentionally) can't upgrade a package |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
198 for one target without upgrading it for all of them, so we can't put off |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
199 dealing with less-interesting targets.</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
200 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
201 <p>This means any supported target stays up to date with current packages in |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
202 unmodified "vanilla" form, providing an easy upgrade path to the next |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
203 version and the ability to push your own changes upstream relatively |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
204 easily.</b></p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
205 </li> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
206 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
207 <li><p><b>Provide a minimal self-hosting development environment.</b></p></li> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
208 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
209 <blockquote><p>Perfection is achieved, not when there is nothing more to add, |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
210 but when there is nothing left to take away." - Antoine de Saint Exupery</p> |
1050
333c8f799302
Update lots and lots of web pages for the project name change to Aboriginal Linux.
Rob Landley <rob@landley.net>
parents:
1032
diff
changeset
|
211 </blockquote> |
881
0da87d1ef528
Update the web page. Put the left-side nav bar back, move about page to "about.html" and make news.html the default index. Add architectures page. Note that IRC discussion is now on #edev.
Rob Landley <rob@landley.net>
parents:
879
diff
changeset
|
212 |
1580
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
213 <p>Most build environments provide dozens of packages, ignoring the questions |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
214 "do you actually need that?" and "what's it for?" in favor of offering |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
215 rich functionality.</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
216 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
217 <p>Aboriginal Linux provides the smallest, simplest starting point capable |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
218 of rebuilding itself under itself, and of bootstrapping up to build arbitrarily |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
219 complex environments (such as Linux From Scratch) by building and installing |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
220 additional packages. (The one package we add which is not strictly required |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
221 for this, distcc, is installed it in its own subdirectory which is only |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
222 optionally added to the $PATH.)</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
223 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
224 <p>This minimalist approach makes it possible to regression test for |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
225 environmental dependencies. Sometimes new releases of packages simply won't |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
226 work without perl, or zlib, or some other dependency that previous versions |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
227 didn't have, not because they meant to but because they were never tested in |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
228 a build environment that didn't have them, so the dependency leaked in.</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
229 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
230 <p>By providing a build environment that contains only the bare essentials |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
231 (relying on you to build and install whatever else you need), Aboriginal |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
232 Linux lets you document exactly what dependencies packages actually require, |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
233 figure out what functionality the additional packages provide, and measure |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
234 the costs and benefits of the extra code.</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
235 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
236 <p>(Note: the command logging wrapper |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
237 <a href=/aboriginal/FAQ.html#debug_logging>record-commands.sh</a> can |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
238 actually show which commands were used out of the $PATH when building any |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
239 package.)</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
240 </li> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
241 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
242 <li><p><b>Cleanly separate layers.</b></p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
243 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
244 <p>The entire build is designed to let you use only the parts of it you want, |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
245 and skip or replace the rest. The top level "build.sh" script calls other |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
246 scripts in sequence, each of which is designed to work independently.</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
247 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
248 <p>The only place package versions are mentioned is "download.sh", the rest |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
249 of the build is version-agnostic. All it does is populate the "packages" |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
250 directory, and if you want to provide your own you never need to run this |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
251 script.</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
252 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
253 <p>The "host-tools.sh" script protects the build from variations in the host |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
254 system, both by building known versions of command line tools (in build/host) |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
255 and adjusting the $PATH to point only to that directory, and by unsetting |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
256 all environment variables that aren't in a whitelist. If you want to |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
257 use the host system's unfiltered environment instead, just skip running |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
258 host-tool.sh.</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
259 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
260 <p>If you supply your own cross compilers in the $PATH (with the prefixes the |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
261 given target expects), you can skip the simple-cross-compiler.sh command. |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
262 Similarly you can provide your own simple root filesystem, your own native |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
263 compiler, or your own kernel image. You can use your own script to package |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
264 them if you like.</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
265 </li> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
266 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
267 <li><p><b>Document how to put together a development environment.</b></p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
268 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
269 <p>The build system is designed to be readable. That's why it's written in |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
270 Bash (rather than something more powerful like Python): so it can act as |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
271 documentation. Each shell script collects the series of commands you need |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
272 to run in order to configure, build, and install the appropriate packages, |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
273 in the order you need to install them in to satisfy their dependencies.</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
274 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
275 <p>The build is organized as a series of orthogonal stages. These are called |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
276 in order from build.sh, but may be run (and understood) independently. |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
277 Dependencies between them are kept to a minimum, and stages which depend on |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
278 the output of previous stages document this at the start of the file.</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
279 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
280 <p>The scripts are also extensively commented to explain why they |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
281 do what they do, and there's design documentation on the website.</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
282 </li> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
283 </ul> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
284 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
285 <b><h1>What's next?</h1></b> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
286 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
287 <p>Now that the 1.0 release is out, what are the project's new goals?</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
288 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
289 <table border=1><tr><td bgcolor="#c0c0ff"> |
1618
ff283fe54626
Web page tweaks: put "start here" in header, slightly reword menu entries, use style sheet hackery to make blank lines after lists go away, and remove spanish translation about the about page that went 404.
Rob Landley <rob@landley.net>
parents:
1597
diff
changeset
|
290 <ul style="margin-bottom:0px;"> |
1580
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
291 <li>Untangle hairball build systems into distinct layers.</li> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
292 <li>Make Android self-hosting</li> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
293 </ul> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
294 </td></tr></table> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
295 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
296 <a name=hairball> |
1597 | 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 |
1626
6f74d6a209da
Typo spotted by Tadeusz Tomala.
Rob Landley <rob@landley.net>
parents:
1618
diff
changeset
|
413 GNU tools, no glibc or uClibc, and no gcc or binutils. All those are all |
1580
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
414 excluded from the Android base install, meaning they will never |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
415 come bundled with the base operating system or preinstalled on devices, |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
416 so we must find alternatives.</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
417 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
418 <p>Android's libc is called "bionic", and is a minimal stub sufficient |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
419 to run Dalvik, and not much more. Its command line is called "toolbox" and |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
420 is also a minimal stub providing little functionality. Part of this is |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
421 intentional: Google is shipping a billion broadband-connected unix machines, |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
422 none of which are administered by a competent sysadmin. So for security |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
423 reasons, Android is locked down with minimal functionality outside the Java |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
424 VM sandbox, providing less of an attack surface for viruses and trojans. |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
425 In theory the <a href=http://lxc.sf.net>Linux Containers</a> infrastructure |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
426 may eventually provide a solution for sandboxing applications, but the |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
427 base OS needs to be pretty bulletproof if a billion people are going to |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
428 run code they don't deeply understand connected to broadband internet 24/7.</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
429 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
430 <p>Thus replacement packages for the C library and posix command line |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
431 should be clean simple code easy to audit for security concerns. But it |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
432 must also provide functionality that bionic and toolbox do not |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
433 attempt, and do not provide a good base for. The musl libc and toybox |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
434 command line package should be able to satisfy these requirements.</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
435 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
436 <p>The toolchain is a harder problem. The leading contender (LLVM) is sponsored |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
437 by Apple for use in Mac OSX and the iPhone's iOS. The iPhone is ahead of |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
438 Android here, and although Android can use this it has other problems |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
439 (implemented in C++ so significantly more complicated from a system |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
440 dependency standpoint, making it difficult to bootstrap and impossible |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
441 to audit).</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
442 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
443 <p>The simplest option would be to combine the TinyCC project with QEMU's |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
444 Tiny Code Generator (TCG). The licensing of the current TinyCC is incompatible |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
445 with Android's userspace but permission has been obtained from Fabrice |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
446 Bellard to BSD-license his original TinyCC code as used in Rob's TinyCC fork. |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
447 This could be used to implement a "<a href=http://landley.net/qcc>qcc</a>" |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
448 capable of producing code for |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
449 every platform qemu supports. The result would be simple and auditable, |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
450 and compatably licensed with android userspace. Unfortunately, such a project |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
451 is understaffed, and wouldn't get properly started until after the 1.0 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
452 release of Toybox.</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
453 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
454 <p>Other potential compiler projects include Open64 and PCC. Neither of these |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
455 has built a bootable the Linux kernel, without which a self-bootstrapping |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
456 system is impossible. (This is a good smoketest for a mature compiler: if it |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
457 can't build the kernel, it probably can't build userspace packages of the |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
458 complexity people actually write.)</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
459 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
460 <b>Why does this matter?</b> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
461 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
462 <p>This is time critical due to network effects, which create positive |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
463 feedback loops benefiting the most successful entrant and creating natural |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
464 "standards" (which become self-defending monopolies if owned by a single |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
465 player.) Whichever platform has the most users attracts the most |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
466 development effort, because it has the most potential customers. The platform |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
467 all the software ships on first (often only) is the one everybody wants to |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
468 have. Other benefits to being biggest include the large start-up costs and |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
469 much lower incremental costs of electronics manufacturing: higher unit |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
470 volume makes devices cheaper to produce. Amortizing research and development |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
471 budgets over a larger user base means the technology may actually advance |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
472 faster (more effort, anyway)...</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
473 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
474 <p>Technological transitions produce "S curves", where a gradual increase |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
475 gives way to exponential increase (the line can go nearly vertical on a graph) |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
476 and then eventually flattens out again producing a sort of S shape. |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
477 During the steep part of the S-curve acquiring new customers dominates. |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
478 Back in the early minicomputer days a lot more people had no computer than had |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
479 an Atari 800 or Commodore 64 or Apple II or IBM PC, so each vendor focused |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
480 on selling to the computerless than converting customers from other |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
481 vendors. Once the pool of "people who haven't got the kind of computer |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
482 we're selling today but would like one if they did" was exhausted (even if |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
483 only temporarily, waiting for computers to get more powerful and easier |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
484 to use), the largest players starved the smaller ones of new sales, until |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
485 only the PC and Macintosh were left. (And the Macintosh switched over to |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
486 PC hardware components to survive, offering different software and more |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
487 attractive packaging of the same basic components.)</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
488 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
489 <p>The same smartphone transition is inevitable as the pool of "people with |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
490 no smartphone, but who would like one if they had it" runs out. At that point, |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
491 the largest platform will suck users away from smaller platforms. If the |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
492 winner is android we can open up the hardware and software. If the winner |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
493 is iPhone, we're stuck with decades of microsoft-like monopoly except |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
494 this time the vendor isn't hamstrung by their own technical incompetence.</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
495 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
496 <p>The PC lasted over 30 years from its 1981 introduction until smartphones |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
497 seriously started displacing it. Smartphones themselves will probably last |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
498 about as long. Once the new standard "clicks", we're stuck with it for |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
499 a long time. Now is when we can influence this decision. Linux's |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
500 15 consecutive "year of the linux desktop" announcements (spanning the period |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
501 of Microsoft Bob, Windows Millennium, and windows Vista) show how hard |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
502 displacing an entrenched standard held in place by network effects actually |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
503 is.</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
504 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
505 <b>Why not extend vanilla Linux to smartphones instead?</b> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
506 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
507 <p>Several reasons.</p> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
508 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
509 <ul> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
510 <li><p>It's probably too late for another entrant. Microsoft muscling in with |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
511 Lumia is like IBM muscling in with OS/2. And Ubuntu on the phone is like |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
512 Coherent Unix on the PC, unlikely to even register. We have two clear leaders |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
513 and the rest are noise ("Coke, Pepsi, and everybody else"). Possibly they |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
514 could still gain ground by being categorically better, but "Categorically |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
515 better than the newest iPhone/iPad" is a hard bar to clear.</p></li> |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
516 |
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
517 <li><p>During the minicomputer->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> |
1618
ff283fe54626
Web page tweaks: put "start here" in header, slightly reword menu entries, use style sheet hackery to make blank lines after lists go away, and remove spanish translation about the about page that went 404.
Rob Landley <rob@landley.net>
parents:
1597
diff
changeset
|
597 </ul> |
ff283fe54626
Web page tweaks: put "start here" in header, slightly reword menu entries, use style sheet hackery to make blank lines after lists go away, and remove spanish translation about the about page that went 404.
Rob Landley <rob@landley.net>
parents:
1597
diff
changeset
|
598 |
ff283fe54626
Web page tweaks: put "start here" in header, slightly reword menu entries, use style sheet hackery to make blank lines after lists go away, and remove spanish translation about the about page that went 404.
Rob Landley <rob@landley.net>
parents:
1597
diff
changeset
|
599 <hr> |
1580
455f8dec31a0
Large rewrite of about page, probably still needs cleanup.
Rob Landley <rob@landley.net>
parents:
1341
diff
changeset
|
600 |
881
0da87d1ef528
Update the web page. Put the left-side nav bar back, move about page to "about.html" and make news.html the default index. Add architectures page. Note that IRC discussion is now on #edev.
Rob Landley <rob@landley.net>
parents:
879
diff
changeset
|
601 <!--#include file="footer.html" --> |