Moving to GPL version 3

• abr 14, 2021 - 17:52

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:

  1. View the source code for the official version of MuseScore.
  2. Edit the source code to create their own modified version of the program.
  3. 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).

License compatibility

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.

Accompanying resources

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.

Updates

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.


Comments

As far as I know Aeolus is (since 30. Juni 2013) under GPLv3 too, so we could just replace the old and outdated Aeolus code (which we're not actively using anyway after getting into a struggle with its author some time in 2013, it was never used in any release as far as I remember) with the latest Aeolus code and gain a really cool and fully fledged Organ synthesizer. And keep Zita too, as that is (meanwhile) GPLv3 too. See http://kokkinizita.linuxaudio.org/linuxaudio/downloads/index.html and https://github.com/fugalh/aeolus
But as far as I can tell the Aeolus stuff has been removed from the master branch already anyway, so isn't an issue anymore at all, or am I missing something here?
Anyway, MuseScore's move to GLPv3 should enable us to start to use Aeolus and continue to use Zita rather than preventing us to use them, if we'd update to their latest code, which is GPLv3 too.

Code licenced under “GPLv2 or later” can stay. I think this includes most of the effects.

VST support is not a substitute. I expect the average user of a Free GNU/Linux system will not have any VSTs available. Making mu͒4 playback worse without VST presence will be a major regression.

You should mention that the change applies to mu͒4 only, not mu͒3 (which is, likely, a good thing).

Note I didn’t analyse all code (e.g. some thirdparty stuff was already excluded anyway), and not in master yet, only for the versions I packaged.

In reply to by mirabilos

I decided to avoid mentioning the "or any later version" clause because it tends to confuse people (they think it is a built-in feature of the GPL when it is actually a separate permission that must be granted explicitly by the copyright holder). But you are right of course: we don't need to remove GPLv2 code for which the copyright holder has granted special permission for it to be released under later versions of the GPL.

Hopefully the presence of VST support in a mainstream app like MuseScore will encourage third parties to make their VST plugins available on Linux. In any case, we will also provide our own playback system (which may or may not be based on VST) so users will not have to go looking for third party VSTs unless they want to add something on top of our system. The system we provide will be far better than anything currently available in MuseScore.

I should indeed have mentioned that the license change applies to MuseScore 4 and not any future releases in the MuseScore 3 series (none are planned). I have now mentioned this in an update at the bottom of the article, where I also state that the license change has since been implemented in the master branch.

In reply to by shoogle

>>>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.

What is the intention of keeping Musescore3 at gpl2?

I would like to request that Musescore-3 is release under GPL3-or-later (which is easily possible using the CLA). This would keep progress on MU3 while MU4 takes form, and keep MU3 in linux-distribution more viable (linkage to newer fluidsynth for example).

>>> I decided to avoid mentioning the "or any later version" clause because it tends to confuse people
>>> (they think it is a built-in feature of the GPL when it is actually a separate permission that must be granted explicitly by the copyright holder).

This is incorrect, you as a distributor of software are free to choose any later version of GPL3.
It is an important mechanism that keeps old "GPL2 or later" software compatible with GPL3.

Do you still have an unanswered question? Please log in first to post your question.