6

With the rise of much licensing debate around here on Stack Exchange, there's been a lot of arguments about having a license closest to the status quo. Initially, I would've thought that the closest license would be the GPL, but I'm struck between the major copyleft victims: The GPL, LGPL, and the MPL.

I'm not so sure about the GPL because the Creative Commons license doesn't strike me as having a viral nature, which lead me to believing the LGPL was the closest. But after more consideration, especially after reading this answer to a previous question of mine, I'm not leaning towards the MPL. Here's a quote from that answer:

  • I have multiple image files as "sample" files that users can build upon that I hope to include within my project. These files are images that I have found online on various sites. Many of them are licensed under a Creative Commons ShareAlike license (CC-BY-SA). I'm unsure of whether the ShareAlike clause will be an issue,

You can safely include these. The ShareAlike is not a problem. Each license only apply to the independent work (the image) itself, it does not require license compatibility with other images (or with code). This is because these does not depend on each other, so no derivative work is created.

This strikes me as the license only applies to the file, similar to what the MPL is known for: file-level copyleft.

Am I right in assuming the MPL resembles closest the CC BY-SA license that Stack Exchange employs? If not, which license does?

8
  • The "status quo" is that there was no clarity whatsoever on code, just the completely informal understanding that the code was in some sense "free for all". It was published by most with that understanding, and probably used mostly as if it were.
    – vonbrand
    Commented Jan 18, 2016 at 13:03
  • @vonbrand What do you mean by that? On Stack Exchange, there was no "informal understanding". Anyone who read the license and terms of service should have clearly understood that all content, including code, is CC BY-SA 3.0. However, the problem is that CC BY-SA 3.0 (and all CC licenses) are not well-defined for software - they don't address source code, binary files, linking, etc. If you have non-code content under one of the CC licenses, it does make sense to look at closely related licenses specifically for software that address the concerns that CC doesn't. Commented Jan 18, 2016 at 13:48
  • @vonbrand Any license would be "free-for-all", in the sense that it's available to anyone that can access it. I'm just asking because a lot of people have said that contributions should be licensed under the GPL, because it's closest to the licensed used now. I disagree that the CC license is closed to that, which is the motivation for this question.
    – Zizouz212
    Commented Jan 18, 2016 at 14:30
  • 1
    @vonbrand Why does that matter? It's not my problem if someone fails to read or reads, doesn't understand, and doesn't ask questions about the terms of use that they are agreeing to. Refusing to acknowledge and understand the rules is not an excuse for not following them. Commented Jan 18, 2016 at 18:07
  • 1
    @vonbrand That is not correct. What you're saying is that we should change the rules because people don't understand or obey the rules. Commented Jan 18, 2016 at 18:10

2 Answers 2

5

CC BY-SA does have a viral nature. ShareAlike means that you need to distribute under the same or compatible license. Section 4.b of the license addresses that. There are currently no non-CC licenses that have been designated as compatible with BY-SA 3.0, but the Free Art License and GPLv3 are compatible with BY-SA 4.0.

My initial thought would be the GPL or the LGPL. The difference is that the LGPL allows you to link a library to your software package without forcing the GPL onto your software. Since CC isn't created with software in mind, there's no consideration to source code and/or binary distributions. Other than that, they appear to meet the criteria of CC BY-SA: redistribute (source or binary), modify, extend, commercial use, attribution, and redistribution under the same or compatible license. However, the GPL and LGPL do not explicitly protect the names and trademarks of the owners of the material. This is something that CC BY-SA does.

The Mozilla Public License isn't a perfect mapping, either. It does add the name and trademark protection into the license instead of something the creator can optionally do, but it also requires that if you distribute an executable under the MPL, you must make the source available. CC BY-SA allows derivative works to be created in any medium. Although, since CC BY-SA isn't designed for use with software, I'm not sure the difference between source code and a binary distribution would be considered a different medium or not.

I don't think that there is a software license that has a complete and total mapping to CC BY-SA.

4
  • I agree with most of what you say, but I'm quite sure that using an MPL library doesn't force you to redistribute the executable under the MPL as well. Anyways, great answer. :)
    – Zizouz212
    Commented Jan 18, 2016 at 14:36
  • @Zizouz212 Section 3.2 of the MPL says that if you distribute MPL licensed software in executable form, then you must also make the licensed software available in source form and must inform people who receive the executable form how to go about obtaining the source form. If you distribute the executable under a different license, you can not limit or alter the rights of recipients in the source code form. You may not have to disclose all of your source, since it is file-based. But you do have to disclose anything that is covered by the MPL. Commented Jan 18, 2016 at 14:42
  • 1
    @Zizouz212 Although, if you're specifically interested in code posted on Stack Exchange, you don't want a copyleft license. Copyleft makes sense for the complete work - text + figures and diagrams + code that make up questions and answers or comments. It helps ensure that the content is freely available. However, copyleft isn't suitable for code since it precludes use in closed-source applications. See my explanation as to why Apache License v2 is the best license for code on a Stack Exchange site. Commented Jan 18, 2016 at 14:52
  • @Zizouz212 I misread your comment. using an MPL library doesn't force you to redistribute the executable under the MPL as well - That's a true statement. However, if I choose to release my executable under MPL, I must make the source also available under MPL. There's also a viral nature to the MPL, meaning if I make modifications to an MPL library, than those modifications may be forced into the MPL as well (there's a file-level separation, so it depends on how I make the modifications). I don't think there's anything incorrect in my answer - if there is, please point it out so I can fix. Commented Jan 19, 2016 at 18:01
3

This is impossible to answer unless one knows what CC BY-SA is "about", as it applies to code, because the reason this proposal was brought up was because the way CC BY-SA applies to code is unclear in the first place. Furthermore, there are properties of CC BY-SA that aren't spelled out in the license itself - its implied and de facto properties - and these depend on circumstance and who you ask.

So rather than give a single answer, I'll try to cover the major properties and ambiguities of CC BY-SA, so you can pick and choose your own interpretation.

Brand name, wide compatibility

I strongly suspect the original decision to use CC BY-SA was because it was a popular and trendy license even used by Wikipedia. (Interestingly, CC BY-SA version 2.5 was once known as CC-Wiki.) Being well known makes it easier for people to understand the license; being widely compatible makes it more useful.

There's a potential conflict here though: most open source projects are permissively licensed. In order to accomodate these projects, to add code to them without changing the project's license, we would have to exclude all copyleft licenses. If you care about closed-source projects, you would also have to exclude all copyleft licenses because they are incompatible with closed source.

As a compromise, I think the license would need to be at least GPL-compatible. The various GPL licenses are the most popular copyleft licenses, by far.

In any case, the license should preferably be well known.

As an aside, the popularity of licenses varies a lot depending on language and industry; for examples, MIT has outsize popularity within front-end web development, and the Artistic License is virtually unused outside Perl.

Easy to use

One major advantage of CC licenses is they are (relatively) easy to use. In most cases, simply mentioning the author and the license (e.g. "Creative Commons Share-Alike") is enough.

This property is actually pretty rare outside the CC licenses. Virtually all software licenses require including the full text when you distribute the software. Note that this doesn't mean you have to paste the entire license in your source code; you can simply include a comment like Copyright 20XX John Smith, Foobar license and elsewhere in your distribution, include the full "Foobar license".

But if even that is too onerous, there are two options:

  • Use the shortest license possible, so you can just copy-paste the whole thing
  • Use a crayon license, modifying/waiving the license inclusion clause(s)

Copyleft?

This is the most problematic aspect of CC BY-SA for code: what kind of copyleft it represents, with respect to source code and linking.

None of the CC licenses address these points, and this issue has never been tested in court. CC's own lawyers probably looked at this issue, and discourages using their licenses for code.

One way to interpret the -SA clause is that "source" and "binary" forms are adaptations of each other, so it's perfectly fine for someone to take CC BY-SA licensed code and only distribute the binary freely. Another way to interpret it is that it's a file-level copyleft, since other files cannot be derivative of the CC BY-SA file. Another interpretation is that the whole project should be treated as a single work, so -SA is a project-level copyleft. Another interpretation is that it shouldn't be how -SA theoretically works for software, but the spirit of copyleft in general, and thus copyleft should extend to linking too.

All of these interpretations are equally (in)valid, because CC BY-SA is unclear.

Then again, some regard this lack of clarity as a feature, not a bug. They believe CC BY-SA should be used for knowledge, not code, so the trouble with deciding whether CC BY-SA code can be copy-pasted into other projects is a good thing.

Which license to use?

By now it should be abundantly clear that there is no single license that is equivalent to CC BY-SA. How much a license resembles CC BY-SA depends on how you interpret the above properties. For example, I could choose:

MIT with optional link-only attribution, because:

  • It is based on the most popular software license
  • It is permissive, making it compatible with the vast majority of software projects, closed or open
  • The link-only attribution makes it easy to use; it can also be used in the same manner as MIT which is also very easy
  • It takes an extremely liberal interpretation of "-SA"; since CC BY-SA doesn't explicitly guarantee access to the source, MIT spells it out so that paranoid users don't need to worry

...but I'm pretty sure you'll strongly disagree with this choice.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.