8

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?

5
  • 3
    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, 2017 at 23:07
  • 1
    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, 2017 at 23:21
  • 1
    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, 2017 at 23:34
  • 1
    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, 2017 at 0:24
  • 5
    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, 2017 at 0:32

2 Answers 2

6

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.

-1

You could have a look at the Elastic License is one such license: https://www.elastic.co/fr/licensing/elastic-license

It says the following:

You may not provide the software to third parties as a hosted or managed service, where the service provides users with access to any substantial set of the features or functionality of the software.

It's not specific about modified vs. unmodified form, though.

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