« Tech Bytes 4: More Firefox Tips | Main

Tech Bytes 5: Open Source

Listen Now:

Direct MP3 Download
iTunes Subscription
RSS Feed

- Show Transcript -

Welcome to Tech Bytes Episode 5: Open Source. I'm Kevin, and this episode of Tech Bytes is ready for consumption. If you follow any technology today, you've more than likely heard the word Open Source a few times. In fact, if you listen to any of my shows, you've definitely heard me mention it many times. I discovered the concept of Open Source software about three years ago, and it has definitely been a great learning experience for me. I also realized that I'd been using open source software for some time. I have found that open source is a difficult concept, especially if you've never done any programming. However, I'm going to attempt to boil it down to something easier to understand, and also talk a bit about the pros and cons.

When a programmer writes a program, they are producing what is called source code. This is a human-readable format of the program that can be understood by anyone who knows the programming language. There are many programming languages; some you may have heard of include C++, Perl, BASIC, and Java. These languages share many similarities, one being that they are intended to be usable by humans (specifically programmers). Now, you may have noticed that if you try to open a program like Microsoft Word in a text editor that there is nothing human-readable about that program. This is because the source code has been run through a compiler. A compiler takes a programming language and turns it into an executable file. It may also obfuscate the code so that it cannot easily be decompiled back into the source code. The code that goes into a compiler is source code, and the code that comes out is object code. Object code cannot be modified. Whenever Microsoft wants to make changes to Word, they make the changes in the source code and then recompile the program. What this means is that if a programmer wants to build on another programmer's work, they need the source code.

The idea of open source software is to always make the source code of programs available so that other people can modify, build on, and hopefully improve the original program. For instance, if Microsoft Word was open source, another programmer could take the source code and modify it so that you can save a file as a PDF. Or, maybe someone wants to write a program for designing web pages, but they don't want to write a spell checker. If Word was open source, they could take the spell checker built into Word and put it in their new application. These are very simple examples, but they illustrate how open source allows one innovation to be shared amongst the whole programming community. Maybe the person programming the web design software takes the spell checking software and improves on it. Then, Microsoft could take those improvements and easily apply them to Word. Now, of course, none of this is possible because all of Microsoft's software is not open source.

Open source software is not just unobfuscated source code. Open source also means that the source code is accompanied by a license that permits modification and distribution of the code. Just like any other written creations, under US law a computer program is given a copyright as soon as it is produced. So, unless permission is given to take that source code and use it in another program, doing so is against the law. One of the more popular open source software licenses is the GNU General Public License, or GPL. The open source operating system Linux is released under the GPL. The GPL and other open source software licenses are designed to easily allow software programmers to release the source code of their programs without any confusion as to how the code can be used by other people. These "one size fits all" licenses are provided so that a programmer does not have to be a lawyer to write open source code.

I've already mentioned the main advantage of open source software: it fosters a community of collaboration on software. This enables programmers to work together and build off of prior work to produce improved software. There is no need to invent the wheel if someone else has already done it. It is very analogous to the experimental scientific community. If you look through any science journal, you can see papers that detail experiments and their outcomes. This enables another scientist to take that experiment, try to reproduce the results, and potentially come up with a new conclusion. By working together in communities, both the programming world and the scientific world benefit. The open source environment is also very beneficial to newcomers. Someone trying to learn programming can look at the source code of a program and see how it ticks. This is not possible in closed source software.

Revenue difficulties are normally sited as the main disadvantage of open source software. If Microsoft Windows was open source, they would not be able to easily charge you for every copy because someone could modify the source code and release their own version. The revenue model is very different with open source software. Instead of charging for units, a developer may instead charge for support or installation. Other software developers will release an open source version of a program that is very similar to a "professional" closed source program that they develop. The open source program is used to stimulate interest in the professional version. Mozilla makes a lot of money from the Firefox browser from Google and other search engines whenever people use those search engines in the browser. Admittedly, these revenue models are not as straight forward as the standard "buy 1 unit for x dollars," but one could argue that the benefits to the community of open source software outweigh these difficulties.

Another common contention between open and closed source software arises on the issue of security. On the closed source side, people argue that closed source software is more secure because attackers cannot see the code and use this information to hack the program. This is referred to as security by obscurity, and the number of security patches you get from Microsoft each month illustrate the fact that this is not a foolproof security method. On the open source side, the argument is that because the source code is available, the entire software community acts as a security audit for the program, and can even suggest fixes to security flaws. While this is a great concept, historically it has been shown that the pool of people willing to trudge through source code looking for security flaws is pretty small. I would say that the jury is still out on this issue, but open source has the advantage that if motivation was found for programmers to audit programs, they would definitely be more secure than their closed source counterparts. One thing I will add is that I will never use a closed source privacy program such as data encryption software. This is because there is no way for me to know for sure that the programmer did not provide a "back door" into my private data, whereas this would be very evident in an open source program.

Well, that's my primer on Open Source software. I hope I have educated some of you without making any glaring mistakes, and perhaps recruited some new proponents of open source. If you are looking for more information, Wikipedia is chock full of great stuff on open source software. As always, if I talked too fast or you can't stand the sound of my voice, you can find a full transcript of this show at www.techbyteshow.com. If you want to hear more talk about technology, you should subscribe to our sister show Tech Talk with 5 to 9 Computer Services which you can find at http://www.techtalkshow.com. To request a topic to be covered in a future Tech Bytes show, send an e-mail to requests@techbyteshow.com. I'm Kevin, and I'll be back next week with another serving of Tech Bytes.


TrackBack

TrackBack URL for this entry:
http://www.aztechsupport.net/tt/mtype/mt-tb.cgi/83



Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)