7 Mar 2001 ahosey   » (Journeyer)

jlf and I just had an interesting conversation. We were talking about the parallels people often try to draw between electrical engineering and software engineering. i.e. there is the notion that EEs can take a packaged IC off of a shelf and just use it, knowing the inputs and knowing the outputs. The parallel idea in software is often discussed as "reusable software." Related to that, I remember Rob Pike saying something about how 80-90% of the work he did on Plan9 was just "compatibility" stuff - POSIX, TCP, etc. So... what if we were all able to download a POSIX library and just use it in our work, a la pulling an IC off a shelf?

The language <=> language problem is not a big issue, it's been solved many times many ways. (One) problem with the idea not often discussed is that software, and software engineers, have to deal with all the different hardware architectures and operating system platforms out there. This is where the software engineering <=> electrical engineering analogy breaks down. Imagine you're an EE and the laws of physics are slightly different every time you start a new job. Now those pre-packaged ICs are less useful, yeah? That's the difficultly facing the issue of reusable software. Ultimately any piece of software has to run on some piece of hardware. There are plenty of POSIX-compatibility libraries out there, but in order to be used they all have to run on an appropriate hardware/OS platform. That's why there are so many of those libraries!

So what's to be done? Right now, and I really stress the "right now," the great leveller we have is the network. So imagine there was a big machine out there on the Internet which exported the entire POSIX API via some form of RPC. Now anyone on any platform in any language really would have access to a reusable POSIX implementation... Erm, provided their computer is attached to the network. For that reason (and others) POSIX via RPC is not really a serious solution, but I wanted to throw out that example in the search for truly reusable software.

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!