Differences between revisions 5 and 38 (spanning 33 versions)
Revision 5 as of 2009-09-30 20:42:55
Size: 5161
Editor: mpm
Comment:
Revision 38 as of 2019-04-05 16:02:01
Size: 5577
Editor: AugieFackler
Comment: Remove some prose that appears to predate our relicense.
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
License Frequently Asked Questions #pragma section-numbers 2
=
License Frequently Asked Questions =
Line 3: Line 4:
==== What is Mercurial's license? ==== Information about Mercurial's source code license.
Line 5: Line 6:
Mercurial as a whole is licensed under [[http://selenic.com/hg/file/tip/COPYING|GPL version 2]] '''only'''. This means it is completely free for most uses including redistribution. <<TableOfContents>>
Line 7: Line 8:
==== What does this mean to me? ==== == Basics ==

=== What is Mercurial's license? ===
Mercurial as a whole is licensed under [[Source:COPYING|GPL version 2]] '''or any later version''' ("GPLv2+"). This means it is completely free for most uses including redistribution.

=== What does this mean to me? ===
Line 10: Line 16:
==== Can I get a commercial license? ====
=== Can I get a commercial license? ===
Line 14: Line 19:
==== When does the license affect me? ====
=== When does the license affect me? ===
Line 20: Line 24:
If you intend to distribute software that includes changes to Mercurial's source code or directly calls Mercurial's internals, your work may be considered a 'derived work' according to copyright law, and you will need to license your work under the GPLv2 and make its source code available. If you intend to distribute software that includes changes to Mercurial's source code or directly calls Mercurial's internals, your work may be considered a 'derived work' according to copyright law, and you will need to license your work under the GPLv2+ and make its source code available.
Line 22: Line 26:
==== What is a "derived work"? ==== == For developers and distributors ==
Line 24: Line 28:
What constitutes a "derived work" can only be precisely determined in a court of law. But conventional wisdom is that if you're modifying Mercurial, copying or translating significant portions, adding plug-ins, or otherwise linking against its internal interfaces, odds are you're creating a derived work. Such derived works must themselves be licensed under the GPLv2 and their source code must be made available on request. === What is a "derived work"? Is an extension a derived work? ===
What constitutes a "derived work"
can only be precisely determined in a court of law. But conventional wisdom is that if you're modifying Mercurial, copying or translating significant portions, adding extensions, or otherwise linking against its internal interfaces, odds are you're creating a derived work. Such derived works must themselves be licensed under the GPLv2+ and their source code must be made available on request.
Line 26: Line 31:
==== Who holds the Mercurial copyright? ==== === Can I bundle an unmodified Mercurial with my product? ===
Provided your product uses Mercurial only through its usual external interfaces, this is fine.
Line 28: Line 34:
Numerous contributors hold copyright to their individual contributions. See the [[http://selenic.com/hg/|project changelog]] for details. === Who holds the Mercurial copyright? ===
Numerous contributors hold copyright to their individual contributions. See the [[https://www.mercurial-scm.org/repo/hg/|project changelog]] for details.
Line 30: Line 37:
==== Is the Mercurial license compatible with... ==== === Is the Mercurial license compatible with... ===
If you are building a project that combines multiple works, you must ensure that their licenses are compatible if you want to be able to distribute it. The FSF has a list of [[http://www.gnu.org/philosophy/license-list.html#GPLIncompatibleLicenses|incompatible licenses]]. Depending on your circumstance and license(s) involved, you may need to talk to a qualified lawyer.
Line 32: Line 40:
If you are building a project that combines multiple works, you must ensure that their licenses are compatible if you want to be able to distribute it. An example of a compatible license is the MIT license or the "3 clause" BSD license. When combining projects with these licenses with Mercurial, the result has a GPLv2+ license.
Line 34: Line 42:
The GPLv2 license is '''not compatible''' with several newer open source licenses, including: === But what can I do if I can't link my program to Mercurial's internals? ===
Just use the command line interface. It's fast, powerful, simple, well-documented, and is currently the only API with stability guarantees.
You may also be interested in the [[CommandServer|command server]] and associated libraries.
Line 36: Line 46:
 * GPL version 3
 * The Eclipse EPL
 * The Sun CDDL
 * The Apache License
=== What if I just want to use the logo? ===
Line 41: Line 48:
This means, for instance, that you cannot write a plugin for Eclipse that directly calls Mercurial's internals, as the resulting work would need to be simultaneously licensed under the EPL and the GPLv2. The FSF has a longer list of [[http://www.gnu.org/philosophy/license-list.html#GPLIncompatibleLicenses|incompatible licenses]]. The [[https://www.mercurial-scm.org/hg-logo/|Mercurial logo]] also has a GPLv2+ license and can be freely used by any project with a compatible license.
For Mercurial-related projects using non-GPL compatible licenses, you should contact [[mpm|Matt Mackall]] (the logo copyright holder and Mercurial project lead) to get a license waiver to allow you to use the logo with your project.
Line 43: Line 51:
An example of a compatible license is the MIT license or the "3 clause" BSD license. When combining projects with these licenses with Mercurial, the result has a GPLv2 license. == Beyond the GPL ==
Line 45: Line 53:
==== Why isn't Mercurial GPLv3-compatible? ==== === Will you relicense/dual-license/sublicense Mercurial? ===
Between Oct 2009 and Jan 2010, Mercurial was relicensed to GPL version 2 ''or later'', where the ''or later'' part is new. Please see [[Relicensing]]. As there is not a single copyright holder for Mercurial, this is a very time-consuming multi-month process. It is very unlikely that we will be relicensing Mercurial again, considering that GPL version 2 or later is forwards compatible with GPLv3 and later GPL licenses. In particular, we will not consider relicensing Mercurial under any terms weaker than the GPL.
Line 47: Line 56:
Mercurial predates the existence of GPLv3 and it was not clear at the time that the GPLv3 would be an improvement so we chose to be GPLv2-only. Whether the GPLv3 is an improvement remains unclear; arguably the resulting license-compatibility problems alone have made it a net failure.

==== Will you relicense/dual-license/sublicense Mercurial? ====

No. We are happy with our current choice of license and there is currently no sufficiently compelling reason to consider relicensing.

Also, as there is not a single copyright holder for Mercurial, relicensing would be a very time-consuming multi-month process with no certainty of success.

==== Can you make a license exception for my project? ====
=== Can you make a license exception for my project? ===
Line 58: Line 59:
==== Why do some parts of Mercurial's source have different license clauses? ==== === Why do some parts of Mercurial's source have different license clauses? ===
Mercurial includes code contributed and borrowed from many sources which have licenses compatible with ours. As a courtesy to the original authors, we have left the original license on these files and you (or they) are free to copy these individual files and use them with their original license. See the distributed Source:COPYING file for the license on all other files.
Line 60: Line 62:
Mercurial includes code contributed and borrowed from many sources. Some of these use the "GPL version 2 or later" clause.
But because most code (including most of the Mercurial core) is GPLv2 only, the package ''as a whole'' is effectively GPLv2 only, as it's the only license that fits the requirements of all files.

As a courtesy to the original authors, we have left the original license on these files. You (or they) are free to copy files marked "GPL version 2 or later" on their own for use with GPLv3 software. See the distributed [[http://selenic.com/hg/file/tip/COPYING|COPYING]] file for the license on all other files.

==== Can I make a clone of Mercurial that's compatible with license <X>? ====
=== Can I make a clone of Mercurial that's compatible with license <X>? ===
Line 68: Line 65:
==== But what can I do if I can't link my program to Mercurial's internals? ====
Just use the command line interface. It's fast, powerful, simple, well-documented, and is currently the only API with stability guarantees.
See also https://www.mercurial-scm.org/pipermail/mercurial/2011-March/037593.html for an explanation by the project leader about why this may not be a good idea.
Line 71: Line 67:
==== Are license discussions appreciated on the mailing list or IRC? ==== === Are license discussions appreciated on the mailing list or IRC? ===
Line 73: Line 69:

----
CategoryProject

License Frequently Asked Questions

Information about Mercurial's source code license.

1. Basics

1.1. What is Mercurial's license?

Mercurial as a whole is licensed under GPL version 2 or any later version ("GPLv2+"). This means it is completely free for most uses including redistribution.

1.2. What does this mean to me?

If you don't distribute "derived works" of Mercurial, you can do pretty much whatever you want with it and you can stop reading here.

1.3. Can I get a commercial license?

Mercurial is Free Software. To use it for your commercial development, simply download it, install it, and enjoy. If you are interested in commercial support, see Support.

1.4. When does the license affect me?

If you do not distribute software that works with Mercurial, you have no license obligations.

If you distribute software that does not modify, copy, or extend Mercurial's source code and only calls Mercurial's command line interface, you have no license obligations.

If you intend to distribute software that includes changes to Mercurial's source code or directly calls Mercurial's internals, your work may be considered a 'derived work' according to copyright law, and you will need to license your work under the GPLv2+ and make its source code available.

2. For developers and distributors

2.1. What is a "derived work"? Is an extension a derived work?

What constitutes a "derived work" can only be precisely determined in a court of law. But conventional wisdom is that if you're modifying Mercurial, copying or translating significant portions, adding extensions, or otherwise linking against its internal interfaces, odds are you're creating a derived work. Such derived works must themselves be licensed under the GPLv2+ and their source code must be made available on request.

2.2. Can I bundle an unmodified Mercurial with my product?

Provided your product uses Mercurial only through its usual external interfaces, this is fine.

2.3. Who holds the Mercurial copyright?

Numerous contributors hold copyright to their individual contributions. See the project changelog for details.

2.4. Is the Mercurial license compatible with...

If you are building a project that combines multiple works, you must ensure that their licenses are compatible if you want to be able to distribute it. The FSF has a list of incompatible licenses. Depending on your circumstance and license(s) involved, you may need to talk to a qualified lawyer.

An example of a compatible license is the MIT license or the "3 clause" BSD license. When combining projects with these licenses with Mercurial, the result has a GPLv2+ license.

Just use the command line interface. It's fast, powerful, simple, well-documented, and is currently the only API with stability guarantees. You may also be interested in the command server and associated libraries.

2.6. What if I just want to use the logo?

The Mercurial logo also has a GPLv2+ license and can be freely used by any project with a compatible license. For Mercurial-related projects using non-GPL compatible licenses, you should contact Matt Mackall (the logo copyright holder and Mercurial project lead) to get a license waiver to allow you to use the logo with your project.

3. Beyond the GPL

3.1. Will you relicense/dual-license/sublicense Mercurial?

Between Oct 2009 and Jan 2010, Mercurial was relicensed to GPL version 2 or later, where the or later part is new. Please see Relicensing. As there is not a single copyright holder for Mercurial, this is a very time-consuming multi-month process. It is very unlikely that we will be relicensing Mercurial again, considering that GPL version 2 or later is forwards compatible with GPLv3 and later GPL licenses. In particular, we will not consider relicensing Mercurial under any terms weaker than the GPL.

3.2. Can you make a license exception for my project?

No. Making an exception is exactly as difficult for us as relicensing.

3.3. Why do some parts of Mercurial's source have different license clauses?

Mercurial includes code contributed and borrowed from many sources which have licenses compatible with ours. As a courtesy to the original authors, we have left the original license on these files and you (or they) are free to copy these individual files and use them with their original license. See the distributed COPYING file for the license on all other files.

3.4. Can I make a clone of Mercurial that's compatible with license <X>?

You should consult a lawyer about the meaning of 'derived work' in copyright law. Also don't be surprised if some Mercurial developers are extremely unsupportive of efforts to subvert the license on their work, let alone introduce new compatibility headaches.

See also https://www.mercurial-scm.org/pipermail/mercurial/2011-March/037593.html for an explanation by the project leader about why this may not be a good idea.

3.5. Are license discussions appreciated on the mailing list or IRC?

No. It's all been discussed before, none of us are lawyers anyway, and we've got more productive things to talk about.


CategoryProject

License (last edited 2019-04-05 16:02:01 by AugieFackler)