Note: this essay may not be of much use without more links to necessary contextual information
I occasionally find myself thinking about my goals as a software engineer, and my thoughts continually return to the original iPhone. It still astonishes me that something created under incredibly onerous constraints could transform the way humans in the first world relate to technology. I find myself also thinking about how difficult it must have been, and how fragile that process of creation was. Let’s put that thought on hold for a second.
Sometimes I find myself thinking about the Global Village Construction Set. This project aims to build open-source versions of the 50 machines necessary to sustain a small, modern civilization, from tractors to circuit boards. Once finished, I and a few of my friends could go to India and conceivably build up a small, sustainable, self-sufficient community. In this society, though, if I wanted to build a general-purpose computing device or software that ran on it, I couldn’t. The GVCS isn’t designed to address anything further up the stack. It relies on these, but cannot supply them. Let’s put that thought on hold for a second.
Sometimes I find myself thinking about Alan Kay’s Steps to Reinventing Computing project. This project aims to reimplement a modern computing system (operating system, graphical user interface, & networking and document creation) in less than 20,000 lines of code. There are many remarkable aspects to this project; two accomplishments of particular note might be 1) A comprehensible implementation of TCP/IP in fewer than 400 lines of code, and 2) Nile/Gezira, a DSL and 2D graphics library that functions as a rough analogue to Cairo, in fewer than 600 lines of code. However, at its lowest levels, the project runs on a 32-bit x86 processor. The STEPS system isn’t designed to address anything lower down the stack. It relies on these, but it cannot supply them.
On the surface, the STEPS project and the GVCS have similar aims. They’re attempting to take the ideas we’ve built our technology on, disentangle them from their traditional implementations, and weave together those ideas in radically simpler, more comprehensible implementations, one that might be easier to sustain, extend, and improve. I think it’s interesting to consider whether the iPhone was the result of a similar process†, pulling some of our best ideas in human-computer interaction out of their old implementations and weaving together a model of HCI that was remarkably more comprehensible, and in the end, revolutionary. I have strong feelings about the revolutionary implications of both the Global Village Construction Set and the STEPS project†. But I wonder about the gap between them. The scope of the GVCS just occludes semiconductor fabrication, and the scope of projects like STEPS intentionally avoids getting tangled up in the difficulties of hardware. The computer chip itself is nearly opaque to our community of open source makers, it seems; Xilinx and Altera dominate the market for hardware prototyping tools, and the incredible difficulty of semiconductor fabrication is the Colossus in the room. I wonder how hard it would really be for an isolated community running off the Global Village Construction Set to build a clean room, to do the silicon purification, wafer construction, photolithography, and so much more that would be required to build a computer processor on par with the original iPhone’s humble ARM11, and from there, whether we could build software that was good enough to create a system every bit its peer in terms of capability. We’ll get there. My only question is whether we can get there faster.
† Accelerated by the human and financial capital of Apple as a company, of course.
† I am less confident of the immediate impact of Alan Kay’s STEPS project, because Kay et al are less concerned with building an implementation that will be used by laypeople in the near future.