Outreachy BW2: You got a license for that, mate?

A beginner's struggle with open source licensing

In the beginning ...

If you're a student of computer science or someone interested in software development or have any familiarity with the tech community, in general, it is likely that you have heard the term "open source". And if you're someone like me, it's also very possible that you have been extensively leveraging "open source" products for your career in one way or another. Perhaps it is the operating system (linux) you're using right now, or the version control system you've used to store your projects (gitlab), the browser you're using to read this blog (mozilla) etc. - these are all examples of products termed as "open source". In fact, the majority of the internet is developed utilizing such technologies - thus, everyone on the internet right now are benefiting from the "open source" softwares. It is fair to say that, open source is everywhere!!

For this week's Outreachy blogpost, I have chosen to follow a particularly icky term for me - "SOFTWARE LICENSING". I have previously tried to understand what the various legal terms or the license versions represent, but they have always remained out of my grasp. So this time, I am finally forcing myself to understand what's going on here and explain the concept as best as I can. Although, I will primarily be focusing on opensource licensing here as it is more aligned with my internship.

So what does "open source" actually mean?

The term "source" refers to the actual lines of code written in any programming language on a text file, that can be used to generate an executable program capable of running on our machines. These source codes are intellectual properties of the creators and are considered the same as "literary works", making source codes copyrightable. In that context, source codes can be published in two different ways.

  1. Proprietary Code or Closed Source: Release the executable, but keep the code to yourself. Only the creator/s or the maintainer/s have the exclusive right to add, modify and control it's distribution.

  2. Free and Open Source: Publish the source code for everyone to read and repurpose. However, this doesn't mean that these softwares are free by default. The original creators are allowed to charge money for the service and maintenance of these programs. Here, free refers more to freedom as it allows the users certain freedoms.

Well, the definitions seem simple enough. You can either release or keep your source code, why would you need a license for that? Let's get into it.

Life with or without a License

Creative works like source codes are protected by exclusive copyright in the US and many other countries. This implies that without the creator's or author's express permission, no one may lawfully use, duplicate, distribute, or change that programme. The underlying presumption is that you do not have authorization to use the programme if that licence is missing.

An explicitly written license is used to provide the right to do so as the form of this authorization, by defining both your rights as a consumer and the rights of the original creator/s. Organizations utilising unlicensed programmes are more likely to violate copyright laws than those using licensed components (if any).

You must accept a lengthy, complex licence outlining the rights of both the manufacturer and the user when you buy proprietary software (either through a subscription or a one-time price). Large companies often add extremely wordy and complex EULAs with whatever software they supply. The most prevalent restrictions include the ones that forbid making copies of the programme under any circumstances, limiting its use to a specific number of devices, or forbidding its reverse engineering. Just like these proprietary softwares, despite the freedom to have open access to the source, most of the open source softwares are also subject to various legal constraints and rules depending on the license it's under. OSS licenses have the peculiarity of being both a social and a legal contract. Therefore, it's crucial to follow the rules of the open source software licenses.

Where do OSS licenses come from

image.png There are over a hundred different licenses available to choose for your project. However, they are usually recognized if they are certified by the Open Source Initiative (OSI). As a non-profit organisation, The OSI is actively involved in the development of the open source community, public advocacy, education, and raising awareness of the importance of non-proprietary or open source software. The Open Source Initiative upholds and promotes the Open Source Definition in an effort to create an open source ecosystem globally.

image.png

There is also the Free Software Foundation (FSF) that maintains a list of licenses they consider "Free". The difference between the two organizations is more philosophical, than material as they both push for free softwares. The FSF is founded on anti-establishment and moralistic ideals, while OSI views its goals to be more pragmatic and business-driven while sharing a similar background and purpose.

An abundance of OSS License

As mentioned in the previous section, there are 100+ OSS licenses listed by OSI on their website. In a broader sense, all of them maintain the following rules:

  • Software can be modified, used commercially, and distributed.
  • Software can be modified and used in private.
  • The programme must have a licence and a copyright notice.
  • Program creators are not responsible for anything and offer no guarantee with the software.

Categorization

Depending on the level of restriction, most of the OSS licenses can be largely grouped into two categories while abiding the basic statements described above.

  1. Permissive License : As the name suggests, this type of license means there are not a lot of restrictions associated with the repurposing of a source code. A permissive licence often allows for the modification of software without any requirement to share the updated version. Users are only need to include the original copyright notice and a copy of the licence language in any redistribution of the licenced software. This is a lucrative feature for anyone developing proprietary software from open source code and willing to keep the modified codes secret from rivals. This characteristic is one of the key factors behind the popularity of permissive licences. Additionally, they frequently feature a high degree of licencing compatibility, allowing you to legally integrate and distribute several pieces of software.Currently 76% of the OSS on the internet uses permissive licenses. Popular permissive licenses include : APACHE 2.0, MIT and BSD.

  2. Copyleft License: The opposite of copyright is copyleft. When someone obtains a copyleft product, they creators are enforcing that anybody who alters the original programme must continue to make their changes as open-source that is accessible to the general public. Sharing of the modified source code is mandatory under these licenses. Additionally, every iteration of the code has to be precisely as "open" as the original. The agreement is straightforward: give as freely as you have received. Some of the most used copyleft licenses are The GNU General Public License (GPL) and it's derivatives, The Eclipse Public License (EPL), The Mozilla Public License (MPL) etc.

image.png Overview of various popular licenses - source

But I want the best license for my project!

Well, there is no best license in existence. The most suitable license for a project largely depends on the objective of the developer and the associated logistics.

Maybe you can ask yourself the following questions to narrow down your choices :

  1. What licenses are already used in my project components? What frameworks or libraries are you using? Is their any license requirement from that end?
  2. What are the Terms of Services of the hosting service I am using for your software? For example, what does github or npm say about your repository's status?
  3. Do I personally want the derivatives of my code to have the same license?
  4. Do I want to maximize the use of software and to invite contribution from people and corporations?
  5. Do I care if people are using my code to make money?

Answering these questions might not mean that you will have a definitive answer. But hopefully, they can steer you in the right direction for your cool projects!

Conclusion

Software Licensing or even only OSS licensing is a very large topic to cover in an article. After all, there are people who built their career on navigating these concepts. In my article, I have only tried to summarize what basic ideas I have managed to learn over the week and I would admit that it wasn't an easy run for me. But I am glad that I managed to finally learn about this because of my intership at the Wikimedia Foundation that maintains all the Wikiprojects from Wikipedia to Wikidata, Wikitionary, Wikiquotes and many other useful knowledge management platforms and tools. The GNU Free Documentation License (GFDL) and the Creative Commons Attribution-ShareAlike 3.0 Unported License (CC BY-SA) are two of the co-licenses that apply to the majority of the content of these projects. These licenses allow free access to Wikimedia contents just like the free softwares license. Copied Wikipedia material will continue to be available for use by anyone under the terms of the applicable licence, with the exception of a few limitations, the majority of which protect that freedom and it is a form of the Copyleft License we talked about earlier.

Special thanks to my mentors from the Wikimedia Foundation for helping me pick the topic and sharing their experiences and insights. Most of the things we talked about in our meetings, including the use cases and confusions were not covered in this article - however, I look forward to write more on this, soon. My friend, Istiak, also deserves a thanks for letting me bounce idead off of him, while patiently explaining the GPL 2.0 license to me and providing some interesting resources.

References

There are tons of places that discuss in-depth about these licensing issue and to be honest, there’s really no end to it. After all, people build their whole careers on Software Licensing!! Here I am adding links to some of the references I have used in my blog :