There is no denying that open source software has emerged as a powerful force in the development of modern enterprise technologies. Some of the hottest developments in software technology have emerged with strong links to the open source movement. A good example of this is the Internet of Things (IoT), one of the most talked about technology developments in recent years.
Open source software plays a key role in its emergence: It is Linux-based, and open source networking standards make it possible for smart devices from different manufacturers to talk to each other. But although open source software is in the vanguard of many emerging technologies, it will not necessarily eclipse more traditional proprietary software. Get a group of techerati in the same room to discuss the relative merits of open source versus proprietary software, and you’re bound to elicit some strong opinions.
However, regardless of where you stand in the open source vs. proprietary debate, you probably use tools every day that were developed with open source programs. Many in the tech industry argue that the collective action of open source development results in better programs and code—an argument which does carry some statistical weight.
On the other hand, those opposed to open source development say that the process doesn’t do enough to weed out potential security flaws, nor does it incentivize programmers to solve more difficult issues, among other things.
Below, we’ll discuss some of the pros and cons of using an open source development process to build software, as well as how those differences in process ultimately affect the end-user experience. And we’ll run through the kinds of open source tools commonly used for both commercial and personal purposes.
What is Open Source Software?
Let’s start from the beginning, by taking a brief dive into the world of open source development. The first thing to understand is the concept of source code. Every computer program relies on source code which can be defined as a collection of executable commands that can be compiled into a single working application. Source code can be categorized by its method of licensing, in other words, whether it’s available for public use (open source) or not (proprietary).
Open source software contains source code which anyone can view, edit, modify and inspect. It’s distributed with a public license, such as the GNU General Public License, which lists the terms and conditions for using and modifying the code.
Just to be clear, however: open source is not the same as free. For instance, Google applications like Google Mail and Google Docs may be free to anyone with a Gmail address, but they do not expose their source code to the public for open source development. That separates them from programs like Open Office, a similar productivity suite exclusively developed using open source code.
This doesn’t mean that code modifications are a free-for-all with no oversight. The code for such programs is typically hosted in a repository, where it can be downloaded freely to allow crowdsourced adjustments and enhancements. Generally, if a programmer makes a change that they think will be beneficial, they submit their proposed adjustments for review. Changes are then inspected using some sort of oversight mechanism: either directly by the owners of the software or by a group that manages and reviews that application. Only upon reviewing each change and approving it will it be added to the main source code.
People who open source code up to the public believe that the collective effort of many developers working at once can ultimately deliver more robust and secure code, and unleash more creative problem-solving, than a small team used to approaching their work from the same angle. That viewpoint has its roots in the very origins of the internet, which was itself designed to work through the collaboration of various devices, machines, applications and programming languages. When a software developer decides to make their code open source, they’re appealing to the grass-roots spirit of the Internet itself.
The Advantages and Disadvantages
Software development is not a black and white science by any means. Almost every choice a programmer makes has potential pros and cons. Licensing is no different. Allowing public access to source code comes with certain advantages—which often get passed onto the end user—for instance, the benefit of many talented developers working together to build the best product possible. This can be an enormous gain in terms of both the general ease-of-use and the security of any data users put into the application.
However, there are drawbacks as well. The proprietary versions of certain applications may have more robust features or may be better integrated to work with other popular programs. The developers who work on them are financially motivated to design the best application possible, rather than coding these projects in their spare time or as training for something else. Below, you can read a more in-depth look at the advantages and disadvantages of open source tools.
Pro: Collective Effort
There’s some truth to the saying “two heads are better than one”, which is the idea behind the agile coding practice knows as “pair programming.” Many of the most important developments in computing history—the creation of email clients, web browsers, web pages—occurred in open source environments where groups of dedicated developers across the globe worked to design and perfect internet technologies. In code reviews of open source and proprietary software, researchers typically find that the open code is more efficient; that is, there are fewer lines of code used to achieve similar results. They’re also less likely to harbor defects. For instance, a review of more than 700 C/C++ applications found that open source projects had an average defect density of about 0.59, compared to 0.72 for proprietary applications.
Con: It Can Give Hackers an Opening
Open source applications and software allow a window into an application’s inner workings. And that means that any blackhat programmer who understands code can potentially seek out exploitable vulnerabilities. Of course, such flaws can occur in any environment, no matter how carefully teams inspect their code. Witness, for example, this recent high-profile Microsoft Windows Defender vulnerability that experts say left billions of devices exposed before its discovery. And that’s a company with hundreds of thousands of employees. Developers must constantly work to stay on top of hackers, so offering direct insight into code could potentially present its own problems.
Pro: Long-Term Stability
Commercial proprietary apps typically only stay around as long as it is profitable to continue to develop and support them. Because open source tools often are often maintained with the work of volunteers, their financials look somewhat different. Many popular open source projects have been in continuous development for years; for instance, the Apache Software Foundation, the group behind open source web development projects like Cordova and Tomcat, was formed in 1999—five years before the invention of Facebook.
Con: No Teams Assigned to Seek Out Defects
One of the most powerful aspects of a conventional development workflow is the ability to specifically seek out bugs before they become a problem. Proprietary software companies have a team of experts assigned to look for flaws—specifically, the kinds of security issues that could expose their end-users to privacy threats and other types of infiltrations. Large open source operations often have similar procedures in place, but it’s not always a given.
Popular Types of Open-Source Software
There’s an open source version of nearly every kind of application you use, from your most basic word processing tools to entire operating systems designed to handle heavy duty computing. In particular, true to their origins, many programs used almost exclusively by developers to build applications and websites and to manage data and files are open source. Here are some of the most popular open source tools available.
1. Open Source Operating Systems
Perhaps one of the most notable examples of open source is the open OS Linux. Linux has long been a favorite with developers and programming types. It’s free and supports a wide range of programming languages and applications, as well as allowing for advanced commands and scripting—and is the only OS used for supercomputers. For these reasons and more, it’s wildly popular amongst the development community. However, it is not the only open source operating system. Other platforms include Chrome OS, ReactOS, FreeBSD and the mobile OS Android.
2. Productivity Software
Open source alternatives to well-known programs like Microsoft Office 365 do exist. Some popular open source productivity suites include Apache OpenOffice and LibreOffice. These products are much cheaper than commercially licensed proprietary software. Additionally, open source users have the option of requesting new features—or even developing them on their own if they have the ability.
3. Database Management
Open source products are often employed in database relationship management. For instance, MySQL (now owned by Oracle) is a family of exclusively open source tools used for database setup, monitoring, security and backups. Although open source, the commercial versions of MySQL are not free, and require an annual subscription of $2,000 or more (although there is a community version available without cost). Other open source database tools include Actian X (previously Ingres).
4. Website Development Tools
There are many open source tools for use in website development. For instance, you may already be familiar with WordPress, an open source blog hosting and website publishing platform. There’s also open content management systems Joomla and Drupal, web server softwares like Apache and NginX and the open scripting tool PHP.
5. Web Browsers and Email Clients
As you may have already gathered, there’s an open source option for nearly any application you run on your computer. The same is true for the simplest of applications, the web browser. If you’d like to browse the web in a completely open source platform, you can choose to install Mozilla Firefox. And for open source emailing, there’s Mozilla Thunderbird.
6. Software Development Tools
Some popular software programming tools are non-proprietary, as well. For instance, the web application framework Ruby on Rails is a community-managed resource that has been used for a number of popular online apps, such as Hulu and Basecamp. Another example is the Eclipse Foundation, which offers a number of resources for programmers working in Java and PHP.
7. Big Data Tools
Open source technologies like Hadoop, Revolution R Enterprise, Cassandra, RapidMiner and Python have made a major contribution to the development of Big Data applications. Hadoop alone has helped to create an entirely new software ecosystem and has become synonymous with storing and analyzing huge sets of data.