I am working on a project whose source code I intend to release on GitHub, but I might also like to sell the binary on an app store. I would like to prevent others from simply copying my code and distributing/selling it without major modification to undercut my own sales.

However, if someone were to view my source code and reuse parts of it or use it as inspiration for their own independent project, I don't see a need to prevent them from selling their own work in that case.

Are there any well-known licenses which work this way? Is this even a common/sensible mindset for "open source" code, or are there good reasons not to try to do this?

  • 2
    Copyright (and licenses) are the wrong tool for maintaining integrity of a product. Trademarks are what you should be thinking about using: release the code under whichever license you like but with a different name. Restrict the usage of your name to those who abide by your trademark policy. Mar 5 '17 at 23:07
  • I've seen trademark restrictions in licenses like BSD, e.g. the third item of daringfireball.net/projects/markdown/license. But that seems orthogonal to the issue of allowing or disallowing sales of the software if it hasn't been heavily modified.
    – jtbandes
    Mar 5 '17 at 23:21
  • If you want the core of your software to be open source, but you don't want people distributing it without changes, then make the branding of your version non-free and don't license it to anyone else. Mar 5 '17 at 23:34
  • When you refer to making the branding non-free but the core open source, do you mean simply posting the source with no explicit license (but just a copyright notice)? Wouldn't that prevent others from using any parts of the code without explicit permission? I'm only interested in restricting commercial use/sales of substantial portions of it.
    – jtbandes
    Mar 6 '17 at 0:24
  • 4
    No, the code can still be open source. As an example, consider the difference between Chrome and Chromium. Chromium is completely open source. Chrome takes the Chromium software and adds non-free branding (and probably some extra stuff, I'm not sure) to it. Google release it as freeware, but it could also be released as commercial proprietary code. Mozilla had a somewhat similar trademark in the past, which is why Debian didn't have Firefox for some time. If you really want to block anyone else from selling your product (and not just sell support) I think these are good approaches. Mar 6 '17 at 0:32

So, I think as defined by the Open Source Initiative, what you're trying to do is explicitly not open source. The open source definition includes:

1. Free Redistribution

The license shall not restrict any party from selling or giving away the software as a component of an aggregate software distribution containing programs from several different sources. The license shall not require a royalty or other fee for such sale.

Rationale: By constraining the license to require free redistribution, we eliminate the temptation for licensors to throw away many long-term gains to make short-term gains. If we didn't do this, there would be lots of pressure for cooperators to defect.

I don't know of a common open source license that restricts resale of the software. This is not to say that I think what you're trying to do is bad, I'm just not sure it's considered open source. I think I remember seeing the term "shared-source" used to describe something like what you're going for.

Anyway, I don't know of a generally available license that meets your needs, but what you could do is find some sample licenses of other software products that restrict their usage, and hack together your own license. What comes to my mind is something like the Microsoft Office Student edition license (pdf download), which already limits the use of the software and just change the limitations to meet your needs.

If you find several different software licenses that each restrict usage, you can probably get a sense of the important / common themes from them and create a license that works for your project.

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.