Moving to GPL version 3
Hi everyone! Just a quick note before main article. As many of you know, I've been a regular contributor to MuseScore for a long time now, and back in February of this year I was invited to join the internal team in the brand new role of Community Ambassador! It's my job to represent MuseScore to the open source community, and the community (that's you guys!) to MuseScore. (See Meet the MuseScore Contributors for more details about what I do and how you can contact me if you need to.) In my first post on the forum as your ambassador, the honour falls on me to announce our plan to change the license that the source code for MuseScore's desktop program is released under. Don't worry; it will remain open source and free for all users!
Since its creation by Werner Schweer back in 2002, MuseScore's source code has been released under a particular open source software license called the GNU General Public License, version 2 (GPLv2). Today, we are formally announcing our intention to switch to releasing under version 3 of the GPL (GPLv3). While this seems like a simple "upgrade", it's actually quite difficult (in licensing terms, updating a license is no easier than switching to a totally new one). We have been planning this move for several years now, as many of you know, and the idea has been around for a lot longer than that, predating the 2017 acquisition when MuseScore joined with Ultimate Guitar.
Open source licenses
We all know that MuseScore is open source, but what does this actually mean? It means everybody can:
- View the source code for the official version of MuseScore.
- Edit the source code to create their own modified version of the program.
- Share the source code and executable of the official version or their modified version.
The first two points are covered by making the code freely available on GitHub or any other code-sharing website. The final point is covered by releasing the code under an open source software license. A software license is simply a written document (or text file) that tells you what you can and can't do with the program and its source code. The license is open source if it allows you, and everyone else, to do the three things listed above (and a few other things besides).
There are lots of open source licenses to choose from, and in some cases the terms of one license are not compatible with the terms of another license. This happens to be the case with GPLv2 and GPLv3, which means that code solely under GPLv2 cannot be used in the same program as code solely under GPLv3 — the licenses are incompatible. This may seem surprising at first, but consider this: if version 3 was the same as version 2 then there would be no reason for version 3 to exist.
While GPLv2 and GPLv3 are very similar, GPLv3 clarifies certain details and introduces a few additional terms and conditions that are intended to protect open source projects from certain types of (ab)use. At MuseScore, our main reason for switching is to take advantage of third party open source code that is only available under GPLv3, such as the VST audio plugin interface. In addition, GPLv3 is compatible with other open source licenses that GPLv2 is not compatible with, such as the Apache License 2.0, which opens up the possibility of using third party code under those licenses too.
Changing the license
So how do we switch from GPLv2 to GPLv3? When it comes to MuseScore's source code, we can simply swap the GPLv2 licensing text in the file LICENSE.GPL with the text for GPLv3 and update the copyright header that appears at the top of each source file. Normally you can only do this for code that you yourself have written, but MuseScore has a Contributor Licensing Agreement (CLA) that allows us to make this change on behalf of our contributors too. Existing code will be available in the commit history under GPLv2 as well as GPLv3, but all code added after the license change will be under GPLv3 only. To be on the safe side, this change will also apply to MuseScore's plugins that are distributed with the program, such as colornotes.qml.
Replacing third party code
The difficulty arises when it comes to third party code that is not covered by MuseScore's CLA, including software libraries used by MuseScore. MuseScore can only relicense code written by people who have signed our CLA, so all other GPLv2 code must either be replaced or removed. We could approach the upstream authors and ask them to make their code available under GPLv3, but if they don't have CLAs for their project, or if they themselves depend on other GPLv2 libraries, then they would be unable to do so.
Having gone through MuseScore's code with our legal team, and with the help of a handy copyright file maintained by @mirabilos for the Debian project, we now know what has to be excluded from MuseScore 4 before we can switch to using GPLv3. The most noticeable loss will be the audio effects, including the code from Aeolus that is used by our Zita plugin. However, these effects use old technologies and their loss is more than compensated by the introduction of VST support. While there is other third party GPLv2 code in the repository, most of it is not actually used anymore so it can be safely removed, or a replacement library is available under GPLv3 or a compatible license.
When it comes to source files that are not code — such as sounds, images, and musical scores (e.g. templates and demos) — the license does not have to change (though we may decide to change it anyway in some cases). Sounds and images function independently of the program, so while they are bundled with the program, they are not considered to be part of the program for the purposes of the GPL (see GPLv3, final paragraph of section 5). The same is true for fonts distributed with MuseScore, including text fonts, music fonts, and SoundFonts (.sf2 and .sf3 files). While fonts do include formatting code, this code is not tied to MuseScore's code (fonts work with other programs and MuseScore works with other fonts). Score files are not part of the program any more than that book you are writing is "part of" Microsoft Word.
The way forward
You'll start to see more activity over the coming days as we get ready to make the switch to GPLv3. The team has already started removing third party GPLv2 code in preparation for the license change, and the final commit to update the copyright headers and license text should arrive later this month. We hope you'll stay with us for this next chapter of our journey, as we say a fond farewell to GPLv2 after nineteen years of loyal service, and we enter the brave new world of GPLv3.
April 29, 2021: These changes have now been made in the repository's master branch but not the 3.x branch. This is as intended. MuseScore 4 will be released under GPLv3, but the program will remain GPLv2 for the remainder of the MuseScore 3 series.
Disclaimer: Information on this page must not be taken as legal advice. Always consult a legal professional when making licensing decisions.