Saturday, December 8, 2012

Another Plan (9)

Plan 9 is something I have been curious about for a while. Not curious enough to do much about it, but intrigued nonetheless.

In case the name means nothing, here's a quick 'what the heck is Plan 9'...

Back in the day (being the late 60's), a bunch of computer geeks including Ken Thompson, Dennis Ritchie and Brian Kernighan concocted a new operating system while at Bell Labs. This became known as Unix. Unix has since gone on to be arguably the most important OS ever devised in terms of it longevity and evolution, leading to versions of it still running today on huge number of computers, but also how it has influenced other non Unix operating systems (notably DOS and then Windows, although for sure there are other influences). I'm writing this on a Mac, which today is probably the most successful Unix workstation ever produced in terms. Not far from me is a Linux machine, which is a Unix too in essentially every sense that being able to call itself that for legal reasons. Unix has a long and storied history, with every major systems and software vendor at one time having a version of the OS on offer. In recent times, there has been some consolidation, especially around Linux, but there remains a number of contemporary, supported variants.

For the most part Unix has evolved from its earliest versions, and while it has forked into a number of variants, every version today can trace its ancestry back either directly through evolving code bases, or in Linux' case through borrowed ideas and concepts.

While Bell continued to evolve its own brands of Unix since the original versions, many of the originators of Unix felt that some of the concepts they had distilled into Unix could be improved or replaced by other ideas. In particular, networking was becoming far more prevalent and it was clear that people would need to collaborate across networks and computers so information would need to be stored and easily reached by other users on other systems. Also, graphical terminals were evolving with Unix itself growing new layers to support graphical applications (such as the X window system). There had also been some evolutions in Unix that some felt were bad decisions that broke symmetry and added complexity in software and for users. For instance, one of the genius principles of the original Unix had been that files and streams of data between files could be a foundational concept on which you could build a whole OS infrastructure that maintained simplicity but allowed high degrees of flexibility and sophistication. Over time though, Unix systems evolved special ways to talk with devices, rather that talking to them using this basic file/stream concepts, breaking this symmetry and adding systemic complexity (irrespective of whether this was more convenient or 'simple' for any given device).

Plan 9 then is a sort of "Unix V2", a 'reboot' of Unix where some of those who were instrumental in creating the original got to refine their original ideas, reject some things they saw as mistakes, double-down on ideas they thought were important and also address emergent requirements pertaining to the evolving world of computing.

Having had a connection with Unix since about 1988, I had read about Plan 9 from time to time. Things that intrigued me were:

It is based on 'grid computing' principles with a distributed filesystem

It has a clever backup/snapshot mechanism for files (similar to Apple's Time Machine)

It is a much simpler and orthogonal design, with a file interface for configuration, devices, networking etc.

It has a cool user environment called Acme that borrows ideas from Niklaus Wirth's Oberon system (tiled windows, active text/dynamic hypertext)

It has been offered as free/open software for many years

That's basically all I have known for years. Additionally I have seen a version of Plan 9 called "Inferno" offered for sale as an 'operating environment' i.e. essentially an app to run on other OSes. . I also once compiled a version of Acme for Mac OS X - though never used it much beyond checking that it started up after building it!

What changed recently, is that Richard Miller ported Bell's Plan 9 to the Raspberry Pi and it was highlighted in the main Raspberry Pi news blog. The Raspberry Pi is a fantastic way to explore different OSes, because all you need to do is copy the distributed image file onto a spare SD card and you're then booting up into the new OS within seconds. There's no finding an old computer to experiment with, no fiddling around with virtual machines and you get the satisfaction that, while the Raspberry Pi is a tiny computer, nevertheless it is running these OSes natively.

So, Richard's excellent work presented the ideal opportunity to finally connect with this interesting distributed OS and to find out what's unique and interesting about it.

In the next series of posts I'll document my experiences in getting up and running (from the standpoint of Plan 9 on the Pi from the Richard Millar's distributed image).