When I first became interested in open source software, I had a somewhat romantic notion — like most people do when they first hear about open source — of how it was produced. I imagined that there is somehow an elite patrician class of programmers, perhaps living in some nerdy shangri-la, who spend their nights and weekends writing linux kernel code and then altruistically donate it in order that some day mere mortals might be saved from the dark power of Windows. Well, come to find out, open source doesn’t quite work like that. This is the first installment of a 2,891 part series on open source software, how it works, and how industrious and creative people have learned to create business value from it.
For the first post, I need to explain what open source software is in general, especially for the benefit of my readers who don’t spend their free time playing Illuminati. (If you have played, or plan to play this game within the next six hours or so, feel free to skip this post.)
Software is created primarily by writing source code — a sort of schematic that describes how all the features and functionality of a software application should work. Source code is written at a fairly high level of abstraction; it’s meant for humans to work with. Computers however, are notoriously bad at working with abstractions. Their power stems from thier ability to do simple tasks extremely fast. Instead of using source code, computers need something called object-code — a much lower level version of the source code.
Let me try to illustrate the difference between source code and object code with an example. Source code is analogous to this kind of instruction:
- Go to Walmart
- buy a Mountain Dew
- bring it back to me.
The object code version of this “program” would be something more like this:
- Open the front door
- Take 351 steps
- Open car door
- get in car
- Turn car on
- Drive until the wheels have rotated 31,867 times
- Get out of car
- Walk in to walmart
- Go down Aisle 1
- look for a Mountain Dew.
- If found, go to step 13
- Go to step 9 and use the next aisle over
- Go to check out
- Pay cashier
- Ok, that’s enough. I think you get the point

In fact, if you simply read the “object code” version of this “program”, you might never see the forest for the trees — it’s difficult to understand the intent of the program. The very fact that the object code is so difficult for a human to comprehend also makes it very difficult to modify. What happens if I want you to go to Walgreens instead of Walmart? I have to calculate a new number of tire rotations for the trip there and back, tell you to go down a different aisle, etc. (Footnote: Curious how source code get turned into object code? A special computer program called a compiler does it automatically!)
Getting back to open source: Software companies, such as Microsoft, Apple, or Sun need to make money from the applications that they produce. If they gave away the source code, then any old Ben Bitdiddler would be able to modify the code, and maybe steal code for their own competing product. Instead, traditional companies sell you the object code along with a license (End User License Agreement, aka EULA) that permits you to legally run the program for your own purposes. The source code is essentially viewed as a trade secret that the company chooses not to release. This is how most software that you are familiar with works (MS Word, Adobe Photoshop, and practically any video game).
With open source software, the source code is made freely available to anyone with an Internet connection. Programmers are encouraged to download the code, modify it, and run it. A major side effect of this fact is that it becomes much more difficult to create a traditional software business around open source software. Companies can no longer charge “for the bits” (the object code), because the source code is available for free. This great mystery of how open source software is created and how companies make money from it is what I hope to shed light on in the next 2,890 installments of this series.
I imagine that 
If you’re like me, twitter seems a little useless. Even if I did have the time to let the whole world know that I am eating left over macaroni salad for lunch or that the starbucks chick gave me a free coffee, who would care? Well, come to find out, there actually are some
It all started a couple years ago when Steve Jobs — the charismatic Apple executive – was diagnosed with pancreatic cancer and treated with a procedure that probably
Let me explain with a slightly long-winded, yet colorful example. Everyone knows that a computer nerd’s favorite food is pizza, so over the years Dirk Niedermyer — a fictitious programmer/entrepreneur — has decided to publish a directory containing all of the pizza places in New Haven. He has a vast collection of pizza restaurants and their phone numbers written on index cards. Now of course these cards are organized – anyone who knows Dirk would describe him as slightly obsessive compulsive; unfortunately they are ordered by distance from Dirk’s house and are not in alphabetical order. As all self-respecting phone books are organized alphabetically, Dirk is going to have to do some work to get his list ready for publishing. But he’s a busy guy and doesn’t really have time for the mundane, so he asked for your help — for a 10% equity stake in the new venture of course. First, however, like any good entrepreneur would do, he wants to test you before he hires you to make sure you’re
One of the key things to note about computational complexity is how much longer it takes you to solve a problem as the input increases in size. For example, imagine what happens to your tasks if Dirk lived in New York, where there are many more pizza places than in New Haven. Selecting the first pizza place is going to take you somewhat longer than it did for New Haven. However, sorting all the cards will take you much, much longer than sorting the New Haven stack. In fact, a large 








