In my first post I talked about my brief investigation of a piece of open source software. Today I will attempt to explain free and open source software, as well as give my perspective on the issue.

What is Open Source Software?

I won’t get into too much detail about open source software since there is a wealth of information online that can explain it better than I can. Here I will try to give my own brief description. If you want more information, a good place to start might be Wikipedia or any of the other links that I will scatter throughout this section.

The basic idea behind open source is that the source code of a piece of software should be publicly available to be viewed, modified, and distributed. Of course, the details are a little more complicated than this. It gets even more complicated when you consider the differences between “free” and “open source” software. Free software is similar to open source software, but with a few subtle differences. I will attempt to explain the differences, but for more details it is probably best to visit the Free Software Foundation and The Open Source Initiative websites.

First of all, it is important to understand that the “free” part of free software has nothing to do with cost. Instead, it has to do with certain freedoms that users of a piece of software should have. These freedoms include the ability to view, modify, and distribute software, which is essentially the same as the ideas behind open source software. In order to distinguish between the different possible interpretations of “free” software, it is common to hear the comparison of gratis versus libre. Richard Stallman, the founder of the Free Software Foundation, offers another way to make this distinction. He says that you should think of “free” as in “free speech” not “free beer”.

Although the end goal for both free and open source software is the basically the same, the difference comes from the underlying motivation. The motivation behind the free software movement is the idea that it is ethically and morally wrong for software to be proprietary. The motivation behind open source software is based on the belief that it is the most efficient and practical way to develop software.

Open Source in Everyday Life

To many people, this probably doesn’t sound like a very important topic. However, many of those same people would probably be surprised to find that they probably use open source software in their day-to-day life. For example, Android, which is currently the most used operating system on smartphones and tablets, is open source. Mozilla Firefox, which is one of the most used web browsers, is also open source. Anybody reading this or any other WordPress blog1, can thank open source software for making it possible to easily publish websites and blogs.

The list goes on an on. There are often free (as in speech and beer) and open source alternatives to common proprietary (and often expensive) software. For example, LibreOffice is an open source office suite which provides much of the same functionality as Microsoft Office. GIMP is an open source image editing program which is often compared to Adobe Photoshop. While it definitely does not have all of the features and power of Photoshop, it provides more than enough power for a casual user. When you consider that Photoshop costs hundreds of dollars and GIMP is free, it becomes clear that open source software can definitely have some advantages over their proprietary counterparts.

As a software developer, open source software is often vital to my workflow. Some examples of open source software that I use include Eclipse, VirtualBox, Notepad++, and GCC to name a few.

Everything that I’ve listed so far has been software that I use on a fairly regular basis and are fairly widely used. The list of all open source software that I’ve used would probably contain hunderds of items.

Open Source as a Software Developer

Although I have shown that open source software can impact average users in their day-to-day life, many of them still will not care much about the issue. However, as a software developer, the issue has a much different and much greater impact. A software developer must decide if they want to release their software as free and/or open source.

Perhaps the greatest and most obvious disadvantage of releasing your software as open source is that it is harder to monetize since anyone can download the source and build and run the system on their own. Another possibile disadvantage is that it becomes easier for someone to take your ideas, or perhaps even your entire source code, and pass it off as their own.

The advantages are much less obvious, especially for those who are unfamiliar with the idea. Open source projects can often lead to better software because there can be much more people working on the software. The large community of developers can lead to quicker improvements, changes, and bug fixes. This can also improve the security of the software, which is becoming increasingly important as more and more people use computers on a daily basis. Making a project open source can improve quality in another, more subtle way. Because the code is under scrutiny of the public eye, it often causes developers to strive to write better code.

Reflection

Having released several of my projects as open source, I can personally attest to the last fact. Even though my projects have probably not reached many people, I definitely try to write better code when I know that there is even a small chance that someone else might look at it.

For my projects I chose the BSD 2-Clause License, which is a very simple and permissive license. Because the projects that I’ve released are small, I feel comfortable letting people do with it as they please. For a larger project, I might go with something more comprehensive and restrictive. One such license that I would look into is the very popular GNU General Purpose License.

Open source definitely has it’s place, but I’m not sure if it’s the right choice in all situations. For example, even though Photoshop is proprietary software, there is no image editing software that I know of, that comes close to being as capable and powerful as Photoshop. On the other hand, open source software is often free, which is where it can outshine proprietary software.

Although I won’t necessarily release all my software as open source, I will definitely try to continute to release small personal projects and I would recommend that other developers do the same. First of all, it will hopefully help you to strive to write better code. Second, you never know when someone will find your software and want to make improvements. You may find new potential in your software that you hadn’t seen before.

  1. This blog was originally hosted on WordPress.com at https://toddtaomae.wordpress.com