I know the title is a bit misleading, I guess it might not be possible to release software as open source with this restriction, so the question is how I should license the following scenario:

I want to release one or more software tools (SDK etc) that has a specific purpose. One of the points behind the whole project idea, is that everyone should use the same API because that benifits the other people using the same tools. Might sound a bit cryptic, but I guess you understand the point.

Other than that, I want the project to be like a normal open source project (MIT/BSD license). Sharing, contributing, no problem. People can even copy the tools and modify them if they want. The only important thing is that they still use the given API for backend requests, at least in any open environment (production), having a local API for testing/developing is no problem.

The goal is to keep the benifits of using the same API, instead of anyone trying to set up their own API for the same purpose, splitting up the project and thereby the benifits for the end users.

Sort of like if Facebook released all their frontend code, allowing people to make their own FB app, only demanding that people use their API instead of setting up their own, so the database of users are not split up.

What would be a possible licensing for a project like this?


If there is no way to release an open source project with the described restriction, how about the following:

I copy the text of an open source license (like BSD), and add a clause for the described API rule. I don't refer to the license as BSD, only use the same text as a template. In the project Readme/docs, I would of course explain that it is not a standard open source project, and refer to the license file. Would that be OK in regards to whatever case where the project license would be relevant?

  • 1
    So basically, you've got a sort of Web service, and you want to release your API/SDK on condition that people use your web service?
    – Zizouz212
    Nov 2, 2015 at 12:56
  • The project is a little more than a web service, but that is more or less it, yes. I want to open source a project, but make sure it could not be divided into multiple smaller setups some time in the future.
    – henit
    Nov 2, 2015 at 13:01
  • 4
    I believe the best way to do this is to just make sure that your offering is the best (easiest to use, best documented, ...) all around. If not, if it falls short somehow, somebody will come out with an alternative.
    – vonbrand
    Nov 2, 2015 at 16:22
  • 1
    What you could possibly do would be to develop that API to link against this website, and make this under the AGPL, or a strong copyleft license, so that if people do make changes, they would have to make it open source as well. That might be a good deterrent, but I personally find it against the spirit of open source. There are of course, various exceptions that you could use.
    – Zizouz212
    Nov 4, 2015 at 1:56

1 Answer 1


This would not be open source. The open source definition mandates:

  1. No Discrimination Against Fields of Endeavor

Using your software for interfacing with a competing backend service is such a field of endeavor.

You are of course free to create an own crayon license based on the BSD or MIT license which forbids interfacing with any API not hosted by you. It's your work and you alone can decide who can use it and for what. But when you make use of your copyright in this way, please do not call it open source.

  • Open source is clearly a misnomer.
    – user15474
    Aug 10, 2019 at 13:36
  • 1
    @derik I'm sorry, but that's how it is defined. Not liking the facts explained in an answer is no reason to downvote it.
    – Philipp
    Aug 10, 2019 at 15:47

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.