3
9 Comments

Licensing for open-source core products

I'm working on https://httptoolkit.tech. The plan is to have a totally open-source & free core app, with paid plans available on top for individuals or teams that add extra features etc.

Open-sourcing the core app is easy, but I'd like to give limited open-source rights to people who buy the paid plans. There's an outline of this on the initial pricing page design I've put up at https://httptoolkit.tech/pricing. The idea is:

  • You can do more or less whatever you like with the open-source core app & source.
  • When you pay, you get a perpetual license for a year's releases of the paid app, and access to the full paid app's source.
  • You can't freely redistribute the paid app or source to anybody you like.
  • You can freely change the paid app for your own use.
  • You can freely change & redistribute the paid app to anybody who has a valid license for the original version.

Does anybody know of any licenses like this? Or any other way to do this kind of model? There's a lot of discussion of different types of open-source license around, but this clearly isn't fully open-source, and it's hard to find info on these more limited licenses.

  1. 3

    I've had a similar thought process and requirements for my project. It's probably not a perfect fit for what you want, but you might be able to get an acceptable outcome with one of the https://licensezero.com licenses. Licensezero also comes with a sort of integrated shop, but you don't have to use that to use the licenses.

    For my own project, I won't use open-core, as I don't like the model. I'll use the Parity license for the whole thing, which means people can use it freely when used on or in combination with open-source code (of basically any OSI-approved license). If they want to use my project with close-sourced code, they'll need a private license. Technically Parity is probably not an open-source license because it's not approved by OSI, but I think it makes a lot of sense for people like me who want to develop open source, but need some sort of incentive for people to actually pay up. Even AGPL often doesn't reach far enough.

    There's also the Prosperity license. That one allows people to use your code for non-commercial purposes, and they'll need a private license when they use it to make money. Basically like the shareware model of old, plus available source code. That one is definitely not an open source license though.

    I'd recommend the blog articles on licensezero.com, as well as https://writing.kemitchell.com/ , great content, and a lot of well thought out and reasoned about ideas, IMHO. Kyle (the license creator) is a lawyer as well as developer, so he knows what he's talking about.

  2. 2

    I'm not a software lawyer, not even an expert so take all of this with a grain of salt, but maybe it would make it easy for you to have two different "Editions", each licensed differently.
    The Community Edition would be your open-source core, and the Standard Edition (for example) would be licensed differently.

    However I think that to make this feasible or workable for your clients, you might want to provide a sort of marketplace or internal community for license owners.

    This gives you some control and will help you concretize your special distribution permissions and potentially enforce your conditions (license only allows publishing changes in a special location).

    You could for example create a git repository for each company stipulating that this repo is the only way they could share code with others, then it would be your job to ensure this repo is only accessible by valid license holders.

    Your approach makes me think of those Alliances, similar to Android's (https://www.openhandsetalliance.com/), where all members of the alliance cross share patents and are able to access and share closed source code as well. But this might be out of scale for your project.

    1. 1

      The alliances are a good parallel. That is definitely out of scale for this, but I think there might be some good inspiration there, I'll take a look at how those work.

      I am intending to have two different editions, I think that's how it'll work. The license for the community edition is pretty easy (a standard OS license, probably Apache2), it's the other license that I'm unsure about. I could of course just try to write my own, but that definitely feels uncomfortable!

      A marketplace/community is a nice idea. Building an ecosystem is always useful imo, and this would help build that and manage distribution at the same time. It's not a quick job though. Do you know anybody else doing something similar?

      1. 1

        Github :D

        I'm being serious, you basically have a closed garden set of forks.
        Not all these forks should see each other, but that's usually a common concern in code platforms such as github, which solve it with permissions.

        From my perspective, what you could need is a combo of a code sharing platform, maybe a privately deployed gitlab instance, and a license that prevents people from redistributing code outside out of this platform.

        Having a new paid customer === creating a new fork of your software in your gitlab instance, and a user attached to this repo. Then based on how you want this closed community to work (do you want your customers to see each other by default? or is it a more involved process?) you would enforce visibility and privacy settings in the repo.

        I'm curious however about your business model itself, what's the rationale of allowing code sharing between paid users, and what's a concrete (and hypothetical) scenario you see this process delivering value to your paid customers?

        1. 1

          The primary rationale isn't code sharing between independent customers, but between customers who are actually members of the same teams at work etc. The other element is that open-source (or near-equivalent freedoms) are a substantial differentiator in the market, especially for individual developers, and in my day job I've also seen open-sourcing work superbly as an answer to 'can I be confident that this tiny business won't disappear along with the product?' type questions.

          Of course building an ecosystem is also valuable anyway, and having customers share changes, or contribute changes back to me, helps drive that and saves me work in the process too.

          For now it's mainly the licensing part of this that I'm interested in, rather than platform practicalities & enforcement. Given the target market (professional developers/development companies), they're generally happy to follow licensing rules themselves, I'm just trying to find a good way to make sure the rules are clear & don't have some obvious major loophole in them.

          I won't be surprised if the paid source ends up published somewhere where people could steal it, eventually, I'm not too worried about that. I want a license though that makes it clear though that using that is against the rules and opens you up to legal risk, whilst still giving real paid users as much freedom as possible.

  3. 1

    The latest example I've seen of what you're trying to do was the drama around redis. Redis core is BSD licensed but the add ons come with the Apache 2.0 license and the "commons clause" rider that limits direct competition with the creator of the software.

    The reaction to this kind of licensing model was pretty negative when it came out but it was mostly from hardcore FOSS advocates. It's still something to consider.

    https://redislabs.com/community/licenses/

    1. 1

      Apparently the Commons Clause is void, as it is incompatible with the Apache 2.0 License which explicitly prohibits clauses that restrict the set of rights it transfers, but please don't quote me on this, there are other actually reliable sources on the internet explaining this point in legalese.

      1. 1

        I've read that too. It's hard to know because it was written by a very knowledgeable lawyer that works specifically in this area. I know some people have argued both sides. It's not as clear as what some FOSS people are arguing.

  4. 2

    This comment was deleted 7 years ago

    1. 1

      If you do not have the means to discover who is abusing your licence, to prosecute them once discovered and then to ensure that any Court decision is properly acted upon, then any license is only so many empty words.

      I don't think that's true. My target customers aren't normal consumers, and I'm not worried about piracy from hobbyists/students/etc. My target customers are professional developers or software companies. In both cases, they're not short on cash, and fairly risk averse to breaking licensing rules (companies especially).

      I've seen more than a few companies first hand avoid products entirely due to licensing uncertainty, and actively pay extra to ensure they were following the rules even with no real prospect of enforcement against them. Serious businesses mostly follow licensing laws, and that's enough for me.

      What I'd love is an existing license that:

      • approximately matches the model above
      • clearly spells out what's allowed and what isn't
      • is enforceable in theory (so no obvious loopholes, no 'just be good')
      • I don't have to write myself/pay a legal team to write

      Totally agree that legal teams/legal action/DRM/hefty enforcement isn't the best use of my time. My hope is that some of the many other companies doing open-source core + paid edition models have already put together similar licenses themselves that I can easily tweak and use.

      1. 1

        This comment was deleted 7 years ago