Episode 2 – Software Licenses and Version Control

Thank you!

First off I wanted to give each and everyone one of you a huge thank you. I did not anticipate the reaction to this series and how overwhelmingly positive it’s been. It’s very encouraging, and I’m so looking forward to seeing where we can take this series.

In this episode

Today we will cover the concepts of software licenses and version control. Do not expect this to be an “expert” explanation on the topics as I’m aiming for more of an informal discussion about key concepts, why they are important, etc. I highly encourage you in your free time to put the effort into reading more about these concepts and expand your own personal knowledge of them.

Software Licenses

The first important thing to know regarding software licenses is copyright. Wikipedia describes copyright as;

Copyright is a legal concept, enacted by most governments, giving the creator of an original work exclusive rights to it, usually for a limited time. Generally, it is “the right to copy”, but also gives the copyright holder the right to be credited for the work, to determine who may adapt the work to other forms, who may perform the work, who may financially benefit from it, and other related rights. It is a form of intellectual property (like the patent, the trademark, and the trade secret) applicable to any expressible form of an idea or information that is substantive and discrete.”

Software (code specifically) counts as a unique and creative work, and therefore from the moment it is created it has copyright. You cannot copyright an idea, however unique implementations of ideas can have copyright. Some examples of copyright protected works would be things like paintings, songs, movies, and literary works.

Software licenses lay out what you can (and cannot do) with a piece of software. There are three general categories that software licenses fall under;

  1. Public Domain (things that belong to all Humanity)
  2. Properitary Licenses (also called closed source licenses)
  3. Free and Open Source Licenses

For this series we won’t talk too much about Public Domain licenses and Properitary Licenses, but it is important to know the general differences between them. Public Domain software is software that has no owner – everyone can do with it as they please. Public Domain software has no copyright. Properitary Licensed software is what any software falls under unless you otherwise specify what the terms of your license are (what you make is automatically considered yours, and you get to choose what the terms for that licenses are).

In this series I will be advocating (and using) Free and Open Source licenses. These licenses, generally speaking, allow anyone to have access to the source code of a piece of software upon request. They also cover specifics for distribution rights, derivative works rights and requirements, etc.

There is a lot of variety when it comes to properitary and open source software licenses, as each license has unique terms. In this series I will be using the Lesser GPL v3 (LGPL v3) for our mod.

Now for Minecraft modding we need to understand the concept of derivative works. A derivative work is an unique work/expression based off of another unique expression/work. Since Minecraft mods are unique pieces of software based off of another unique piece of software (Minecraft), they are considered derivative works.

Mojang’s Terms of Use for Minecraft lay out their license for Minecraft. In it they specify a few things, namely;

  • Don’t distribute anything they’ve made (don’t give out the source code for Minecraft, don’t give out copies of the game, etc)
  • Don’t make your stuff look “too official” (don’t impede on their trademark)
  • If you’ve bought the game, you may play around with it and modify it (we can make mods, but don’t grief and don’t distribute modified versions of their files)
  • Any tools you write for the game from scratch belong to the author
  • Plugins for the game along belong to the author and you can do whatever you want with them, as long as you don’t sell them for money
  • Mojang reserves the final say regarding what constitutes a tool/plugin and what doesn’t
  • Mojang can change these terms at any time, with or without warning, and the changes would take effect immediately or retroactively

What this tells us is that we are allowed to make mods and what Mojang expects from us.

In general when it comes to development, I recommend going with open source licenses whenever possible and permissible. Specifically I like the LGPL as it allows derivative works to take on a different license than the parent work, and I feel that fits very well for Minecraft modding. As stated before, the mod we will be making together as part of this series will be licensed under the LGPL v3 and in later episodes I will cover the specifics of how to show that that is the mod’s license.

A final note before we move on to the concept of Version Control. Software licenses and copyright (when it comes to Minecraft modding) have a fair bit of controversy. There are those that believe mods do have copyright, there are those that do not. My goal for this series is for it to be purely educational in nature, and for it to show a better representation of what goes into making a Minecraft mod (and in general, how to approach new software development projects).

What I expect from people throughout this series is to be respectful to one another and as such this is not a place where attacks are welcome. The goal is to try to teach anyone and everyone some tips and show some how-to’s and I hope we can all get along and just enjoy making something together 🙂

Version Control

Now I’m going to just very lightly touch on this topic because it is very easy to get into the theory and academics on version control.

Version Control (also known as Revision Control and Source Control) is the concept of keeping track of different documents at different points in time. The changes to these documents could come from one or more people. What this allows us is the ability to move back and forward from points in time within individual documents, to manage conflicts between two (or more) peoples work, and a safe way to go back to a known working piece of code. Version control is a really good development practice to have.

There are multiple different approaches to version control, and for this project we will be using Git. Examples of other methods for version control include CVS, Subversion, and Mercurial.

We will be hosting our project on the public (and free) Git repository host GitHub, which is where I host my other open source Minecraft projects.

New approach, and next episode

For this episode I tried a more “free-form” approach to the video as opposed to episode one which was much more of a prepared presentation. I’d like some feedback on this new approach (I feel it’s easier for me to do and sounds more approachable) so please leave comments on how you felt this approach came across in the YouTube comments. The bottom of this post will also have some links to help you start learning more about the concepts we covered today.

In the next episode we will be covering some helpful tools that I like to have/use while development, and we finally get to setting up our development environments!

Please be share to like/favourite the video if you liked it, subscribe to my YouTube channel to get automated notifications of new videos going live, and keep visiting my website for the latest news in what I’m working on 🙂

Until next time!

Links for concepts covered in this episode