9

I'm looking for a license that fit in the following points:

  • Software source code will be public so anyone can read it or use it.
  • Anyone can contribute or add modifications to the source code (pull request) providing an express grant of patent rights.
  • License must allow to publish the software in any app market or to be distributed.
  • License must protect against forking the source code and publishing or distributing the same version (changing name and authors) without modifications. Anyone can fork the original source code, modify how it works and distribute that new version.
  • Commercial and private use is allowed.
  • New versions must keep the same license. So any forked version has the same protection.
  • License should be distributed with the software.

After checking GNU/GPL, Mozilla, Apache, etc. I don't really know which one covers all points. Especially I don't know if any of them protect against distributing the software with other name but without any modification. I would like to make the source code public and allow new modified versions of it, but I don't want that someone just copy the project and distribute under its name without making any modifications on how it works or what the software does. I want that in case a person wants to distribute the exact same software, he/she refer third people to the original or distribute the software keeping the original name and a reference to the original authors.

Is there any license that covers all points? Does this kind of license have sense? Will be still an open source license?

24

My colleague has posted an excellent explanation of why a licence that does exactly what you've asked for would be pointless. It would also be non-free, because the right to distribute both non-modified and modified copies of software are two of the four freedoms of free software.

You say that you want "in case a person wants to distribute the exact same software, he/she refer third people to the original or distribute the software keeping the original name and a reference to the original authors". Might I ask if you've considered using a copyleft licence like the GPL? GPLv3 s4 permits the distribution of verbatim copies of software

provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice

which makes it pretty clear that the original author has to be "conspicuously and appropriately" credited. If the only change a distributor were to make was to rename the software, they would still be obliged to distribute the source code, and that source conveyance would still be covered by s4, so your copyright notices would need to remain. Anyone changing the name and removing your "conspicuous" copyright notices would be in breach of the licence.

So the name doesn't have to be kept, but the reference to the original authors does. Would that suffice?

7
  • 11
    It should also be emphasized that, for large portions of the FOSS community, verbatim redistribution is a completely standard practice. Name-changed verbatim redistribution is rarer, but not unheard of (e.g. Iceweasel).
    – Kevin
    Jun 17 at 16:16
  • 1
    Seems like GPLv3 could fit the purposes. After reviewing it, I think that will cover everyone rights. Now comes the hard part. After doing some research about this license I saw that there’s some controversial about publishing a GPL’d software in Apple’s App Store. Some folks say it’s possible, others denied it. Do anyone know if there’s an official article about this topic? Do I have to rethink the license and go for a BSD type if I want to distribute the software in that app market?
    – raaowx
    Jun 17 at 16:52
  • 3
    @raaowx: See apple.stackexchange.com/a/59495/227346 If everyone holding copyright to this software agrees, you could publish it in App Store under a proprietary license, while in other places it would be published under the GPL. Otherwise, you can't.
    – user31389
    Jun 17 at 17:21
  • @user31389 thank you!
    – raaowx
    Jun 17 at 17:33
  • I’ve decided to mark this answer as the one that solve the question because it expands the explanation from previous answer and gives an alternative. Although the first answer was very clear and goes direct to the point.
    – raaowx
    Jun 17 at 17:39
32

This license isn't going to do what you want it to, for two reasons:

  1. I get the code, I add one space to an error message. It's now a modified version, so I can distribute it.
  2. I get the code. "My friend", Khilip Pendall, makes a modification which adds a bug to the code and distributes it under your proposed license. I take "Khilip"'s version, remove the bug and distribute it.
1
  • Nicely explained, very clear
    – raaowx
    Jun 17 at 16:46
-2

It sounds to me like the Apache License 2.0 would fit the bill.

Software source code will be public so anyone can read it or use it.

This is less a matter of license and more a matter of how you decide to host your repository. Your license can give users a right to access the source, but forcing people to use a public repository (github, etc) is impractical. That's one reason the GPL still makes a reference to distributing source code on request by mailing out copies on disk/CD.

Anyone can contribute or add modifications to the source code (pull request) providing an express grant of patent rights.

Apache 2.0's big selling point over BSD/MIT is that it requires that sort of patent grant (see section 3 and to a lesser extent section 5). Here, such a grant is automatic, so you don't have to keep track of contributor release agreements, etc. The contents of a pull request or submitted patch are my changes, thus I own the copyright and do not need your license's permission to submit them. If I choose to submit them, section 5 automatically licenses those changes under Apache 2.0 and sections 2 and 3 give the upstream project and end users all the permissions they need to use those changes.

License must allow to publish the software in any app market or to be distributed.

Section 4 permits redistribution "in any medium, … in Source or Object form", so publishing it via app store should be fine in and of itself. If the app store in question requires additional restrictions to be placed on the user, then you'll have a problem. A redistributor does not have the legal right to take away something that the copyright holder has granted. That's going to be a problem no matter what license you use. The copyright holder can dual-license the code to meet the app store's restrictions, but a mere redistributor cannot.

License must protect against forking the source code and publishing or distributing the same version (changing name and authors) without modifications.

I can't tell exactly what you're getting at here, but there seem to be several aspects of the license that apply. The copyright-related grants in section 2 do not give the recipient permission to remove the copyright notices that contain your name, and copyright law prevents the recipient from claiming any of your code as their own. Section 4 requires all "copyright, patent, trademark, and attribution notices" in the source code to be retained, with the exception that you can add an additional copyright notice that only covers any changes you've made (existing notices must stay intact). Author information that you include in a NOTICE file is required to be retained as well, and must be distributed along with both source and binary copies. If you want to make sure people know where to find the original, add a link to your website/repo in the NOTICE file.

Trying to prevent someone from distributing a verbatim copy (zero modifications) is probably not something you want to waste time on. A source that distributes unmodified copies is also called a mirror, and those are generally considered beneficial. Without the ability to redistribute verbatim copies, your software couldn't be included in a Linux distribution's package manager (for instance).

Anyone can fork the original source code, modify how it works and distribute that new version.

Section 4 gives the right to "reproduce and distribute copies", including modified copies.

Commercial and private use is allowed.

The rights granted to the user in sections 2 and 4 are not qualified. They apply to commercial and non-commercial use cases equally.

New versions must keep the same license. So any forked version has the same protection.

Section 4 technically allows a modified version to be distributed under a different license, in the sense that you can add additional rights. For example, I could sell the software to my customer under a modified license that includes the right to a year's worth of support services (from me) or that obligates me to provide access to old versions of the program for 5 years after the initial release date. The recipient still keeps all their original rights and protections, but may also get a few more.

License should be distributed with the software.

Section 4 requires you to "give any other recipients of the Work or Derivative Works a copy of this License". That applies to both source and object form.

4
  • 4
    A weak copyleft like apache does not fulfill all criteria. Namely I can change license and make it closed source. Jun 18 at 5:46
  • @planetmaker The copyright owner can always make their own code closed-source regardless of what license they choose. Section 4 allows a fork to license their modifications under a different license, but the unmodified portion remains licensed under Apache, the Apache license must be retained, and the "NOTICE" file containing a reference back to the original project (OP's big concern) must be retained.
    – bta
    Jun 21 at 17:37
  • Apache fails "New versions must keep the same license. So any forked version has the same protection.". As I only need to retain the copyright notice, but not the license and licence tearms. That means I can change conditions and make it with my own modifications or even only my own name for it a proprietary software.. Jun 21 at 18:35
  • @planetmaker Section 4.a requires you to retain the license notice and distribute it along with derivative works. 4.c and 4.d prevent you from removing the names of the original authors and claiming it as your own work (as do various basic aspects of copyright law). You can use an Apache library in a program and use a proprietary license for the program as a whole, but the library itself is still Apache and you still have to give the license and "NOTICE" to the end user. OP is concerned about forks, and never expressed concern about composition.
    – bta
    Jun 21 at 18:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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