A geeky milestone

Posted by Jacques Chester on Monday, October 6, 2008

Linux, the operating system that continues to reshape the computing world, is 17 today.

It started modestly enough:

Do you pine for the nice days of minix-1.1, when men were men and wrote
their own device drivers? Are you without a nice project and just dying
to cut your teeth on a OS you can try to modify for your needs? Are you
finding it frustrating when everything works on minix? No more all-
nighters to get a nifty program working? Then this post might be just
for you :-)

As I mentioned a month(?) ago, I’m working on a free version of a
minix-lookalike for AT-386 computers. It has finally reached the stage
where it’s even usable (though may not be depending on what you want),
and I am willing to put out the sources for wider distribution. …

I can (well, almost) hear you asking yourselves “why?”. Hurd will be
out in a year (or two, or next month, who knows), and I’ve already got
minix. This is a program for hackers by a hacker. I’ve enjouyed doing
it, and somebody might enjoy looking at it and even modifying it for
their own needs. It is still small enough to understand, use and
modify, and I’m looking forward to any comments you might have.

In those days the entire sourcecode for the Linux kernel was a few thousand lines long and fit into less than an old floppy disk. These days it runs to 312Mb and tens of millions of lines of code. Most of that code is drivers for various pieces of hardware — the actual heart of the OS runs to a few tens of thousands lines and can be reproduced in an annotated book form (and has been).

Linux still continues to set the pace for all other opensource projects in many areas. They were the first to introduce decentralised version control and the most popular such system — git — was originally authored by Linux supremo Linus Torvalds. The frantic pace of development and the process followed are still quite unusual even amongst opensource projects. Yet it’s a very successful project.

By the way — Minix, which Linus mentions in that post, is still around. Hurd, which was meant to be the capstone of the free software effort which Linux fulfilled instead, was only released a few years ago and is essentially a dead, or at best academic, project.

Linux is an example of the triumph of momentum and timing over perfectionism. When Linux was released, there was no Unix or Unix-like operating system kernel available for Intel-based PCs — they were either teaching tools, expensive commercial packages or free code tied up in nasty litigation. If you wanted to work on it you needed access to an expensive workstation. Most universities taught operating systems from Unix-like systems — and most still do — so there was a lot of pent-up demand for a system that students could themselves use. Linux came along at the right moment — after the rest of the basic Unix environment was available for free, but not the kernel to tie it all together.

Here’s to the next 17 years. It will be interesting to see how things play out in the long run.



This entry was posted on Monday, October 6th, 2008 at 1:45 PM and filed under Geeky Musings, History, IT and Internet. Follow comments here with the RSS 2.0 feed. Apologies. Comments and trackbacks are both currently closed.

16 Responses to “A geeky milestone”

  1. NPOV said:

    Of course, Linux is also a triumph of innovation without the profit-motive :-)
    I’ve always wondered what Adam Smith would have to say about the degree to which modern sophisticated goods & services have been provided out of altruism (sure, many open source developers code primarily for their own personal pleasure, but there are others that are quite explicit about their drive to make contributions that everyone benefits from).

  2. Jacques Chester said:

    NPOV;

    It’s not worth pigeon-holing open source developers. These days most work on the Linux kernel is done by developers paid by for-profit firms or non-profit consortia formed by for-profit firms — Red Hat, Novell, IBM, Intel, the Linux Foundation, SGI, MIPS, Oracle, Google, HP …

  3. Jacques Chester said:

    But, that said, the largest single category of programmers on Linux are those who contribute without being paid for it — roughly 14% of changes. Generally these are people who send in one or two patches for something they stumbled on — the ‘many eyes’ phenomenon discussed by Eric Raymond.

    The governance and economics of Linux is fascinating and there’s a lot of debate about how it fits into various social/economic theories amongst geeks.

  4. NPOV said:

    Yup, I just read this: http://www.firstmonday.org/ISSUES/issue6_12/lancashire/

    which tentatively proposes that much open source development can be explained by conventional economic theory, though I have to admit I’m far from sold on the idea. I’ve done my own bits and pieces of open source development, and my own feeling has always been – “well, this was useful for me, so surely it will be useful for somebody else too – maybe I could make money out of selling it, but I earn enough doing commercial software development, which has many times benefitted from the unpaid work of others, so it’s only fair I give something back”.

  5. conrad said:

    You’re making me reminisce about a life I didn’t have talking about Minix. Alternatively, thinking about how many hours the OS would take to compile on a 386 reminds me that I probably didn’t miss too much except frustration (and seeing that hugely useful segmentation fault error too). I’m sure I wasn’t cracked out for that sort of stuff.

  6. Tel_ said:

    By the way Minix, which Linus mentions in that post, is still around. Hurd, which was meant to be the capstone of the free software effort which Linux fulfilled instead, was only released a few years ago and is essentially a dead, or at best academic, project.

    The original Minix is around as a teaching tool (and better than Linux for that purpose because it is leaner and easier to understand). The new Minix is moving in the same direction as Hurd (although different code, different details) which is a micro kernel and many daemons. The basic principle is that a monolithic kernel (which Linux mostly is) will win on efficiency and speed, a bunch of daemons piping messages to each other will win on reliability (because the micro kernel can selectively isolate disasters and restart sections of the system). Gradually, speed is becoming less important and reliability is becoming more important. That said, a Linux kernel selected from a suitably mature distribution is pretty darn reliable (and fast).

    Of course, Linux is also a triumph of innovation without the profit-motive :-)

    Was it really without profit motive? Most of the Linux people I know, just want a system that works properly that they can use as a tool for getting other stuff done. If anyone needs to fix something, they publish the problem, how they found it and what they fixed (or where they got stuck) and put that onto mailing lists, websites, etc. The information just builds up and slowly gathers upstream. The motive of contributing it really just to get the thing working… because you want it to work.

    Don’t get confused between economic activity and money changing hands. Economic activity existed long before money came along. If I can help my neighbour and my neighbour can help me then why not just do it? Don’t worry about writing invoices and counting beans. The effort of accounting for all those little contributions is too big to be worthwhile.

  7. NPOV said:

    Tel, sure, as an open source programmer, you not only benefit from making changes for yoursef, but also benefit from “gifting” your work to others by ensuring that your work gets merged with that of others to produce a new version you can then use that contains the sum total of all work done by the team. So yes, there is a kind of profit motive, but I would still maintain it’s quite distinct from the sort of profit motive that drives, say, Wall St investors, whose goal is typically “more money for me”, somewhat regardless of the means.

    Also, economic activity traditionally surely involves trade – “I do this for you, if you do this for me”. Most open source programmers contribute towards open source projects without any expectation that others will necessarily contribute something that they explicitly need. And further, you never have to give up anything you own – you keep your own work (which you benefitted from personally) while sharing it. Yes, you do give up the time you spent working, but that’s true too in traditional forms of trade where you also give up the result of your work.

  8. Jacques Chester said:

    Tel — Minix 3 is a pretty ‘pure’ microkernel design, going on the published papers by Tannenbaum et al. I’ve downloaded it and read a few bits of the code. It’s fairly comprehensible stuff.

    Performance is always going to be the killer for marketing reasons, though. In one paper they figure that there’s a rough 10% overhead for the unoptimised code. In modern circumstances most computers are actually idle most of the time, so it shouldn’t matter as much as reliability. Yet Gentoo Linux is one of the most popular distros, so apparently performance is popular.

    I’ve sometimes wondered if CPU manufacturers couldn’t include facilities for process control blocks, so as to speed up context switches by not requiring storage and retrieval of process registers. That seems to be the main killer for microkernels.

  9. Tel_ said:

    And further, you never have to give up anything you own – you keep your own work (which you benefitted from personally) while sharing it. Yes, you do give up the time you spent working, but thats true too in traditional forms of trade where you also give up the result of your work.

    Well, publishing an idea implies giving up the ownership of a secret (and there are plenty of people who regard secrets as valuable).

    The strangeness of trying to map intellectual property onto physical property and draw consistent conclusions comes about because they are deeply different animals. Suppose you were to decide that one set of physics should apply to pneumatic plumbing, and ordinary water plumbing and to electrical wiring as well. It turns out that some rules (e.g. conservation of matter) apply to all three, while other rules are particular to one system or another (electrical wiring has field effects, fluids have turbulence, etc). The approximate similarity on one level should not be taken as evidence that they must all behave the same way.

    When you convert something into money, then all the multidimensional space is lost — money only has one dimension. Thus, the world of barter is bigger than the world of financial transactions. There exist barter exchanges that just can’t properly be converted into a financial exchange because converting it into money destroys the key elements of the exchange (most economists don’t believe that, I can’t help them other than suggesting they look for examples). Another way to put this is that barter exchanges can operate in dimensions inaccessible to financial exchange, but that is still valid economic activity.

  10. Jacques Chester said:

    When you convert something into money, then all the multidimensional space is lost money only has one dimension.

    That’s true, but to me that’s really the great advantage of money as well. It’s a bit like unix pipes (keeping with the nerdy theme) — an unsophisticated interface that forces everything to a universal lowest common denominator.

    It’s information hiding, essentially. That’s the idea of price signals — I don’t need to understand why and how a given price exists, I only decide at the point of purchase whether or not to buy.

    I think there’s something to be said for looking at barter as the basis for opensource economics.

  11. davebath said:

    Jacques said….
    I think theres something to be said for looking at barter as the basis for opensource economics

    The oldie-but-goodie paper “Why are Internet Resources free?” (1992Dec22.134514.19139@iti.gov.sg) offers thoughts on “free” resources that still stand up today – although with some caveats.

    http://wiretap.area.com/Gopher/Library/Cyber/freeserv.net

    And yep, that’s me in there with the newly minted “.au” on my “.oz” address, talking about “karma” : bartering with the commons rather than a single party. The failures of traditional money-based exchange stem from a full accounting of externalities – i.e., the negative impact on the commons, whereas a lot of the benefits of opensource come from improving the commons.

    (And minix at the time was mediocre imho – much preferred coherent for intel implementations – or the old MKS toolkit as a “thunking” layer to DOS. In THEORY I’m a microkernel fan – aka hurd/qnx – , but with loadable modules using lsmod, rmmod,… , I think the lines are effectively blurring).

  12. Jacques Chester said:

    Dave — Minix3 is pretty nice. The code is fairly well laid out and the authors make the argument that theirs is the most micro of the microkernels, including QNX.

    It’s some of the more comprehensible C programming I’ve seen; though the best I’ve come across so far in my limited exposure is the code for PostgreSQL. Very well commented, even a nub like me can get the gist of it.

  13. Tel_ said:

    “More comprehensible than PostgreSQL internals”

    A new landmark in understatement has been achieved this day.

  14. Jacques Chester said:

    I’m fairly sure I was saying that I reckoned the Postgres code was a bit better than the Minix code … or is that what you meant?

    What’s your fave code?

  15. Tel_ said:

    Sorry, I read your comment again… I stand corrected. Maybe I’m prejudiced but I did have a go at understanding the PostgreSQL internals and I still cannot make sense of how it merges multiple simultaneous transactions. I’ve run into other people who say the same, but I admit that I tried going through it years ago and gave up.

    The original idea was that we had an existing proprietary database (written in C) and I wanted to somehow hack PostgreSQL (which has a permissive license) to be able to work directly onto the existing proprietary database structure. Just like Stonehenge, my creation didn’t fly either *SIGH*. I know there have been quite a few rewrites of the code since then. Maybe there’s some structural reason why it can’t work, or more likely you just need to know what you are doing.

  16. Jacques Chester said:

    Tel_

    It seemed quite nice to me — good layout, useful comments and the like. But then I never had to hack on it. Adapting it to use a different file structure sounds like a … uh … challenge. I would have felt that MySQL would be a better fit as it already supports multiple ‘engines’; presumably there’s some sort of API to code to for tasks like that.