Open Source for Beginners Part 1

If you have ever wondered what "Open Source software" means, what Linux is, what the difference is between Open Source software and "freeware", or why so many people in the Open Source movement (yes, it's a movement!) seem to dislike Microsoft so much, read on...

The idea behind Open Source is very simple, but there is a degree of subtlety in it's application to the world of software that leads to a lot of misunderstanding. To understand what Open Source is really about, and why people are so passionate about it, you need to understand a little bit about how computer programs work.

Most computer programs are written in compiled languages. A programmer writes a set of instructions - the program code - in a plain old text file. Program code may not be comprehensible to the average computer user, but it is human-readable:

int main()
Power x(4.0, 2), y(2.5, 1), z(5.7, 0);
cout << x.getPower() << " ";
cout << y.getPower() << " ";
cout << z.getPower() << endl;
return 0;

This stuff is human-readable, but it means nothing to a computer! It needs to be translated into instructions that a computer can understand, and this is what happens next.

Once the programmer has finished writing the code, it is compiled into an executable file (using another program, called a compiler). This executable is the file that you will double click on to run the program. It consists of machine code that the computer understands. It is not human-readable. It is impossible in general to work back from the compiled machine code to the original text of the program. This is the heart of the matter. It is impossible to work backwards and figure out the text of the original program.

If software is described as "Open Source", it means that the original source code used to produce the program is freely available. This doesn't happen when you buy a closed source program like Microsoft Office - you receive a bunch of machine code, but you don't receive the original source code that was compiled to produce the program.

The analogy often used to explain this difference is the sharing of recipes. If someone cooks you a meal, and offers you the recipe so that you can go home and cook it yourself, they are behaving like an Open Source software developer. If someone cooks you a meal but keeps the recipe to themselves, they are behaving like a closed source software developer.

When people talk about free software, they mean free as in "free beer" but they also, and more importantly, mean free as in "freedom" - the freedom to access the source code of the program and change it if you wish.

In part 2 I'll try to explain why this matters.

Popular posts from this blog

Some Thoughts about Skills-Based Curricula

Planning for Learning or Planning for Behaviour?

My Leadership Story