Open Source and Stone Soup

Sometimes all you need is a little kernel of an idea to get something started, and it will grow to take on a life of its own.

In their book "The Pragmatic Programmer," Andrew Hunt and David Thomas tell the story of stone soup. It goes like this: the village was in a famine, and although each villager had some food items, none had enough ingredients for a full meal. A stranger came into town and started to make "stone soup" by boiling water over the fire, with three stones in the pot. The villagers were curious, and asked all about this stone soup. The stranger replied, "Well, it would be even better if we could add some potatoes." One of the villagers said, "Oh, I have some potatoes," and went and got them. Repeat for various other ingredients, and suddenly the whole village shared a delicious soup; the best meal they had enjoyed in some time.

The point of the story is that the soup never would have been made but for someone building a framework within which the soup could be made. This kind of thing happens frequently with, and is one of the great qualities of, open source. Someone has an idea for some "soup," gets a pot and some stones together, and makes the code available to the world. Over time, people add more and more "ingredients," and before you know it, we have a vibrant ecosystem of useful code built upon that initial broth.

A great example is the emacs text editor. More than thirty-five years after emacs was initially written, I am typing this blog post in emacs. Not many programs from thirty-five years ago are still in use, but emacs is.  Why? Emacs was written in a unique way: there is virtually no boundary between the "internals" of the program and the program itself. When I use a keyboard shortcut, or execute a command at the mini-command-prompt, it executes emacs lisp code.  If I want to, I can change how that code works, right here in the editor itself. The editor is infinitely malleable:  everything in the editor is itself editable, changeable by telling emacs what to do using its built-in lisp language. This allows me to customize emacs to operate exactly as I need it to operate. People can write plugins that do anything, and in fact, people have. In emacs, there is a web browser, an irc client, and code-highlighting modes for any known language (and when new languages are invented, just search GitHub and probably someone has already created an emacs mode for it). After more than three decades of people contributing to the emacs stone soup, the pot is full of wonderful ingredients.

Emacs has proven to be such a valuable platform that new spin-offs have come about. One of the most exciting things to come to my attention recently is xiki. Xiki (eXecutable wiki) is a plugin for emacs that could be described as a vision of a better command line prompt. (Support for other editors is growing as well.) Xiki can access the shell, talk to a database, build web pages, or even act as a full-fledged wiki, allowing you to keep notes and organize ideas. It's built as a framework to allow anyone to add new "menus," which, again, can do myriad tasks. Already, programmers from around the world are starting to build custom menus and add them to the soup.

So if you have a brilliant idea for a new project, but it seems too big to take on, consider starting a "stone soup" of your own, open-source it, and you might be surprised to see it evolve on its own into a delicious dinner for everyone.

Join the Network World communities on Facebook and LinkedIn to comment on topics that are top of mind.
Must read: 10 new UI features coming to Windows 10