Adding value to Windows

Andy Bechtolscheim says:

It’s really hard to add value to Windows. Whatever you add, Microsoft is going to take away from you.

Linux has opportunities. There are many ways to add value. There are lots of things Sun customers expect that are missing from Linux

The first two sentences are relatively common wisdom. The last sentence, maybe. But are the middle sentences right? There is an implicit assumption that you can add things to Linux without some big bully taking it away from you – or at least making the attempt.

Plagiarism watch

Thanks to google code watch I see that an open source real-time Linux project has reached new heights of originality – changing the magic number that they copied from RTLinux 10 years ago to a new number. The constant definition

#define RT_TASK_MAGIC 0x754d2774

which was in very early versions of RTLinux and appeared every previous version of the claimed “completely original” RTAI releases has been replaced by

#define RT_TASK_MAGIC 0x9ad25f6f

And people say there is no originality in open source software! For the non-programmers, a “magic number” is a elementary way of identifying a data structure to help in debugging – chosen to be unusual but not bound by any functional requirement at all. It’s just an arbitrary marker. The appearance of 2 identical magic numbers, with identical symbolic names, used in the identical way, in similar data structures, in code that essentially does the same thing can only be due to copying. Of course, this is a well known example, we’ve been pointing it out to people for years.

Formal methods and verification

One of my correspondents has said my comments on formal method (here and here) were too terse. There are a couple of things that annoy me about formal methods, but the lack of results is the foremost annoyance. After multiple decades of “research”, there should be at least one theorem that tells us something non-obvious about programs. The absence of such a theorem tells us something about the analytical capability of formal methods. About 10 years ago, I asked a formal methods list for an example of such a theorem and got nothing convincing. Remember “non-obvious” is a requirement so a complex re-statement of “a n element queue can be emptied in n steps” does not qualify.

Ambrose Bierce (photo above) defined cynic by: “A blackguard whose faulty vision sees things as they are, not as they ought to be.”

The Embedded Enterprise, Pruit-Igoe, Ayn-Rand, the telecommunications stack and why software does not suck

Programmers will readily tell you that “Windows sucks” or “Linux sucks” or “POSIX sucks” why this or that software is badly designed, bloated, slow, buggy, un-needed, ugly, and generally disgusting. But, Windows is actually an immensely useful and sophisticated program with astounding capabilities – Linux is too. POSIX is a comprehensive solution to many difficult problems. These programs and APIs are widely used because they solve real problems. Large, complex, “high capability” software is never as simple and clean as it seems like it should be to programmers, but I think that’s because the Le Corbusier fallacy is so hard to resist. It is possible, with some effort and skill, to write a prototype Operating System or Data-base or web browser that is fast, lean, clean, and beautifully structured. But the demands of the applications will conflict with the clean etc. design and force all sorts of changes. The Le Corbusier fallacy is the belief that the aesthetics of the architect trump the sloppy requirements of the mere users. In actual architecture, this belief results in unlivable high rise slums , but in programming we get either failed projects or “prototypes” that don’t actually serve any purpose. Programmers are too ready to dismiss working code that actually does something useful because they are entranced with imagined clean, pure, designs. I’m certainly not arguing against designing software or in favor of sloppy design, far from it. Software design must be motivated by external considerations – the utility of the software, not by some internal idea of what is “clean”.

The telecommunications stack we have been building and starting to deliver to customers is an unbelievably complex software structure that is capable of incredible feats. Imagine a Windows application, using .Net and SQLServer that maintains customer data, a SuSe Linux based Oracle SS7 application, a fault tolerance and remote maintenance scheme running on Carrier Grade Linux, and large number of pedal-to-the-metal RTLinux POSIX threads maintaining VOIP connections – all on a single multicore multiprocessor connected by shared memory with TCP/IP running over it. This system is not something that can be easily captured in some whiteboard drawing of boxes. It’s a city, not a housing project.

Back from India

We were going into a government facility in Mumbai, and the guard points at me and asks, as if finding it hard to believe “He is a foreigner?” This was my fourth visit to India and, like all the others so far, mostly a rushed series of meetings and trips to airports, but I got to meet a lot of smart people, hear about some amazing projects, and even saw some northern Western Ghats as we drove from Puni to Mumbai – mountains are always good.

We started in Bangalore just as Diwali ended (flying in at night, the fireworks were awesome) for the Embed Asia conference at the beautiful campus of the Indian Institute of Science. Professor S.K. Sinha took me on a whirlwhind tour of the EE department where a mere 12 layer board is just part of a student project and the race for the sub-$100 laptop is on. If only they did projects like that at US computer science departments these days instead of specializing in advanced grant grubbing and similar topics. I also saw some great robotics projects in the Embedded Systems lab at IIT Mumbai where my one-time Ph.D. advisor, Prof. Krithivasan Ramaritham has now become a Dean. The embedded lab projects have to do with automatic cruise control. I want to see one of the auto-rickshaws driving through Mumbai on automatic control, but believe it would require major breakthroughs in computer science and quantum physics.

India reminds me of Lew Wallace’s famous exit line as he fled New Mexico back in the 1800s. Maybe it has something to do with chilis. (Photo is Ramesh and Ramana at Puni Reservoir)