1. Introduction

We’re used to seeing the term “open source” frequently. But what does it mean? What’s the difference between open-source and free software? What are some examples of open source?

In this tutorial, we’ll first define what open source means. Then, we’ll discuss its history and check some examples, followed by the difference between open and free software. Finally, we’ll discuss how the open-source movement works and how to contribute to such projects.

2. Definition

We say a software tool is open source if its source code is publicly available and open to everyone to modify, study, and freely distribute it.

Usually, such code is developed by several contributors in a collaborative and public environment. As a result, we can access the code, adapt it to our needs, and share our modifications with the rest of the world.

So, the open-source concept is more than a license to change and use code. It’s a decentralized way of developing and maintaining software.

But how did this movement start?

3. History of the Open-Source Movement

Around the 1950s, IBM released some source codes of their programs, and that was one of the first demonstrations of the open-source approach.

Another relevant example is the ARPANET, which led to the Internet as we know it today. In this initiative, researchers shared feedback to build safe telecommunication protocols in the 1960s.

3.1. Linux

But we can’t talk about open source without mentioning the game-changer Linux. It’s the most significant and most used open-source software in the world.

The birth of Linux dates back to the 1990s with Richard Stallman. He developed a set of tools within the framework of the GNU project that Linus Torvald later used to create Linux.

By doing so, he challenged the way software companies used to sell operating systems. Instead of a company selling proprietary software with after-sales support, anyone could create their own Linux distribution. That was precisely what happened.

Since its inception, Linux has been a free, open-source operating system under the GNU General Public License (GPL). GNU allows us to run, modify, and share the source code. However, we should remember that any modification to a GPL-licensed code must be distributed under the same license.

4. How Does Open Source Work?

The workflow of an open-source project mainly happens in a repository. This repository can be found in (Git-based) collaboration platforms such as GitHub.

We can access the source code on these platforms, suggest improvements, and report bugs. But, to efficiently develop software as a community, we need a well-defined workflow system.

4.1. Workflow

Let’s say we want to contribute to an open-source project by fixing a bug.

First, we must locate the corresponding code repository and clone the source code to our computer. Then, we locally change the code to fix the problem. This won’t affect any other user since we change it on our computer.

Now, we need to incorporate our local update with the public source. On GitHub, that means making a pull request. Afterwards, a committer evaluates our update. That’s usually a very experienced user and developer of the open-source code. We, as contributors, wait to see if our request is approved.

Our change will be approved if we provide enough information about the bug and our solution is clear. Consequently, the source code of the program will be updated, and all the other users will be able to get the latest version with our code:

open source workflow

So, a good way to join the open-source movement is to start reporting and fixing bugs in a repository of an open-source tool.

4.2. Foundations

As an open-source project grows and attracts more and more contributors, we usually create a foundation. A foundation manages pull requests, releases, and the source code. 

Examples are the Linux Foundation and the Eclipse Foundation.

Researchers found that most foundations had two things in common: providing legal support and offering users expert help. However, an open-source project must reach a level of maturity before establishing its foundation.

Further, although they play a crucial role in the open-source movement, foundations might differ depending on the project. Also, not every foundation has governance, development, or code of conduct guidelines.

5. Mixed Projects

Can we have the strengths of open-source and proprietary software in the same world? This is precisely what mixed-source strategies are about.

One of the best examples is the Red Hat Enterprise Linux (RHEL). Its kernel and related software are open-source. However, the Red Hat company offers support and additional services for branded versions sold under paid licenses.

So, we can say that RHEL is a Linux distribution for commercial use and production, with its kernel being open source but merged with licensed elements.

6. Open Source vs. Free Software

Another thing we can discuss is the difference between open-source and free-source software. Free software posits that proprietary software controls users. As a result, developers control the software, putting the user in an unfair situation.

6.1. Free Doesn’t Refer (Only) to the Price

Let’s begin by clarifying a common misunderstanding. First, when discussing free software, we’re not talking about price. Free software is a concept that involves a broad vision of freedom and sets it as a high priority. It considers freedom as a fundamental value of users and the community. Free software doesn’t impose constraints or restrictions on users, such as demanding a changelog for any modifications to the source code.

6.2. Not All Open-Source Code Is Free

But what about open-source? Stallman himself stated that open-source and free software aren’t the same. Open source cares about practical advantages and doesn’t consider the principles such as freedom. It’s a concept more pragmatic and less based on a vision. For instance, open-source software tools can impose constraints on users. One example of these constraints is requiring users to use a specific license when releasing the software they derived from open-source code. This affects permissions, and failing to comply with this can lead to legal problems. Another example is forbidding third-party software to be incorporated into an open-source code. In contrast, that could never happen with free software.

Free software can be considered open-source, but not all open-source programs are free. The operating system Linux is an excellent example of free software. We can run, study, modify, and redistribute its code.

On the other hand, NASA released many open-source software tools that aren’t considered free. NASA allows a user to modify those tools’ codes only if the entire modification is implemented from scratch by the user. That means that changes using a third-party code are forbidden. However, that restriction means the NASA’s tools aren’t free.

7. Pros and Cons of Open-Source

Let’s summarize the benefits and shortcomings of the open-source approach:

Focus

Advantage

Disadvantage

Availability

Accessible to everyone

Sometimes comes with a non-user-friendly UI that can be challenging for some users

Flexibility

We can adapt the source code to our needs

Setup can be difficult, and driver compatibility issues may arise

Cost

Free access

We might face scalability problems in large-scale scenarios

Transparency

Since we can see the code, we tend to trust it more

The code is also visible to cyber criminals, which demands more attention in security concerns

Community

Everyone can contribute and fix bugs

If bad pull requests are approved, unprofessional code might be incorporated into the project

8. Conclusion

In this article, we presented the history of open-source software with examples, Linux being the most prominent one. We also explained how to contribute to the movement, starting with a pull request that can be later integrated into the source code.

Later on, we highlighted the differences between open-source and free software. While open-source stands for practical licensing aspects in releasing software, free software incorporates a broader view of freedom to the user. According to this view, no restrictions can be imposed on the user for a source code to be considered free.


» 下一篇: 长度扩展攻击