Bumblebee software

by John on May 16, 2011

Some say that aerodynamics can’t explain how a bumblebee flies. Perhaps that was once the case, but as far as I know there are no difficulties now. The bumblebee story persists as an urban legend. And it makes a nice metaphor for things that work better in practice than in theory.

Here’s the passage that brought the bumblebee story to mind.

Almost every software engineering principle that has become generally accepted as useful and valuable, Emacs flouts. The code is 24 years old, huge, and written by hundreds of different people. By rights, the whole thing should blow up. But it works — and works rather well.

This comes from Jim Blandy’s chapter in Beautiful Architecture. Blandy explains that Emacs’ architecture has allowed it to thrive despite some apparent disadvantages. Emacs is mostly written in its own programming language, Emacs Lisp.

Emacs Lisp has no object system, it’s module system is just a naming convention, all the fundamental text editing operations use implicit global arguments, and even local variables aren’t quite local.

In short, Emacs expects developers to be self-disciplined and does not enforce a great deal of external discipline. However, because the software is so light on bureaucracy, it is easy to customize and to contribute to.

TeX is another bumblebee project. Like Emacs, it has thrived for decades without following currently fashionable software techniques. Knuth implies in this presentation that TeX would have been a dismal failure if it had used technologies that are trendy now.

Related posts:

Serious lessons from Knuth’s joke
Giving Emacs another try

{ 3 trackbacks }

Software architecture as a function of trust — The Endeavour
05.26.11 at 06:25
Trust your developers? « ben tsai
06.17.11 at 12:47
John McCarthy and the origin of Lisp — The Endeavour
10.24.11 at 16:42

{ 3 comments… read them below or add one }

1

David 05.16.11 at 07:14

If you read the source code for the Apache DefaultHttpClient, you will find seemingly perfect object oriented composition, and will likely find it completely inscrutable.

2

PhilM 05.16.11 at 07:58

@David:
After resisting Apache HTTP Client library for many years, I finally gave in last week and attempted to use it. Reading the tutorial and skimming the code, I just had to cry at all the OO atrocity. And mind you, I am a grown man :) After championing OOP, Design Patterns and TDD for many years, I am saddened to see them mostly used as rituals than substantive aids to the process of product development. What is even worse is the lack of appreciation of ‘engineering’ in software development.

3

Marc Brooks 05.18.11 at 14:53

Emacs still works because developers prefer working on the tools to get the job done MUCH MORE than working on the job itself.

Emacs is a tool, and working on that tool is “fun”…

Leave a Comment

You can use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>