12

I am working on a Java framework that I would like to distribute with GPL V3 but as long as users have an active free subscription to certain site.

Is it possible to do so ?

Clarification - What I am distributing is a Java based framework that developers will use through maven in their code & build process. the subscription to site is actually not required to use the code. My goal is to use the developer base for future capabilities that I want to build into my site.

7
  • Do you mean you require users to have this subscriiption to download the code, or to use the code?
    – MadHatter
    Jul 26 at 6:18
  • 8
    Is your plan to place a "license/subscription check" into the software, which checks to see if there is an active subscription before allowing it to be used? Or is your software a way to make use of a service on a web site, the service itself which requires a subscription? What happens to my GPLv3 copy that I downloaded today, when/if in a few years from now your "free" web site goes down?
    – Brandin
    Jul 26 at 7:37
  • 8
    As long as essential, hard-to-replace parts of the business logic are performed on the server side and not disclosed to the customer, you're in decent form here. If it's just a "is the subscription still ongoing?" check, the customer can just build their own modified copy that doesn't perform that check. Jul 26 at 19:55
  • 2
    Have a limited gpl community version and a more advanced premium version. Be sure to have worthwhile content in the latter. if your stuff is good you should have customers Jul 27 at 14:11
  • 2
    Besides the legal problems with creating a compatible license construct I would ask you to reconsider if it supports your goal: You want to maximize success by having it low entry barrier, homegrown terms or registrations are not that. You could have a very successful lib but the odds are pretty low. On the other hand if your tool is great people will seek out your community anyway. If you only do it to grow a community.. I have never seen that approach to work out I think..?
    – eckes
    Jul 28 at 0:09
1

What you can do (as the copyright owner of the source code, which is not itself bound by GPL dependencies) is release both a GPL distribution and a different commercial distribution for paying customers.

So, suppose your library is targeted to other software developers, they are free to use it if they release their software under the GPL. But if they plan to build a closed-source commercial product that depends on your library, then they have to pay for a commercial license and get the commercial subscription-based distribution (which might contain special add-ons and functionality not available in the GPL version)

22

It is perfectly permissible to distribute under GPLv3 software for using a service, access to which is restricted to registered, or even paying, users. Scrolling down my Android phone, the first example I come across is Mastercom Workbook, a GPLv3+ client which is used to access the workbook functionality of Mastercom's professional offering. If your school doesn't use Mastercom, the free client would initially appear somewhat useless. There are many other examples of free client software for restricted services for Android, and doubtless even more in other fora.

Allowing people to download freely-licensed code which cannot be used as-is except by registered or paying users is fine, because downloaders could also reuse parts of the code in other projects, or they could write their own backends for it, or they could do other things with it that neither you nor I can imagine.

4
  • Please see my clarification above in the question. The code in question doesnt connect to a specific server. The terms of the license expects the user to have an active subscription to the site that hosts the documentation etc. Our goal is not to prohibit the user from using the code in anyway. All we expect is that user using the code will sign up and provide us his contact details so we can send him / her further updates as the product evolves.
    – Gautam
    Jul 27 at 12:58
  • 2
    @Gautam you said that the code will be under GPLv3, but now you're saying that "the terms of the license expects the user to have an active subscription to the site". Are you asking if you can add a clause to GPLv3 that requires the user to register at a certain site? Or are you saying that you want to distribute this software under GPLv3, but only to people who've registered at a certain site?
    – MadHatter
    Jul 27 at 14:07
  • final decision is to release the code without any additional restrictions on user and use a plain GPL V3. As @eckes suggested in a comment above we will focus and support community building rather then enforcing users for a subscription.
    – Gautam
    Jul 28 at 4:28
  • @Gautam glad you got your strategy straightened out. Don't forget to accept an answer to this question now the situation's evolved; and please accept my apologies for the prompt if you were already going to!
    – MadHatter
    Jul 28 at 6:23
15

If you do not depend on any GPL license grants to distribute your software (i.e., you are the sole copyright holder and/or you make use of no one else's GPL'd code), you may achieve this by not offering your code under the GPL at all, but under some other homemade license that prevents redistribution and otherwise grants rights similar to the GPL. Insofar as this would be a nonfree license, and insofar as removing the permission of redistribution requires a substantial rewrite of terms, I cannot advise how to rigorously construct such a license; consult a lawyer experienced in drafting license agreements.

If you do depend on others' GPL-licensed code and therefore must license under the GPL (or you simply really do want to use the actual GPL for reasons of community compatibility or popularity), read on:

If you want to offer your GPL'd code for download to subscribed users only, you may do so: you, as a legal entity, can offer copies to whomever you want or don't want. The set of people to whom you personally offer copies can be limited to those people who have paid you money, or given you their email address, or have listened to your timeshare presentation. However, the GPL requires that you cannot stop other people from also offering the code simultaneously, once they receive it, to whomever they like. The GPL does not compel you to share copies of your software (but does compel you to share corresponding source if and when you do choose to share your software), but it does not allow you to forbid downstream recipients from sharing their copies further, either.

In sum, you can limit when a user can download the software from you, but you cannot limit when a user can download (or offer for download to others) the software generally. If you add terms to your software that forbid freedom of redistribution, you will violate any GPL grants from upstream authors that your software depends upon for you to distribute it.

If you plan to publish regular updates, users may find it worthwhile to offer you contact information so they can be notified about updates and get them quickly. Other users may prefer to get updates from another recipient without giving you their email address; the GPL does not allow you to prevent this.


If it is your plan to write code that uses a network service as a natural part of its functionality, you may certainly make that network service require authentication, and you may charge money for access. For example, if your code interacts with your network service to remotely save data, or communicate with other users, your service can refuse to carry out those actions if the user fails to provide proof of payment. However, users can always modify the code to interact with a different service instead, or modify the code so it no longer makes use of a network service at all.

If your plan is to add code that interacts with a network solely for the purpose of performing a payment-check without supplying any value to the software, you can expect downstream users will modify the code to remove that network interaction immediately, and the new version without the network gatekeeping code will be much more popular.

4
  • 15
    "you can expect downstream users will modify the code to remove that network interaction immediately, and the new version without the network gatekeeping code will be much more popular" And important to note is that this isn't piracy: it's a legal right granted by the GPL.
    – PyRulez
    Jul 26 at 22:00
  • As I clarified in a comment above and in my latest edit to question, the code doesn't connect to a specific server and the subscription in question is not directly linked to the code. As a part of the terms we would like to aquire user contact info so we can send him further updates and evolve the site into a product in future.
    – Gautam
    Jul 27 at 12:59
  • 1
    @Gautam I have added a substantial new leading section that I think addresses your particular case; let me know if I've understood your meaning correctly.
    – apsillers
    Jul 27 at 14:38
  • @PyRulez good example would be bitwarden enterprise I think
    – eckes
    Jul 28 at 4:28
2

If you license your client under GPLv3 and distribute it to the general public, then you have to be aware that the general public is allowed to do two things:

  • They can create a clone of your subscription service (paid or free) and give their users a slightly modified version of your software (still licensed under GPLv3) which connects to their service instead.
  • If your subscription service is not actually required for the program, then they can modifying your software so it no longer needs a subscription and distribute that modified version (still licensed under GPLv3, of course).

What you can not do is release something under GPLv3 and then add an additional condition on exercising their rights under the GPLv3 (like "only use while you are subscribed to my service" or "do not modify to use a different service"). This is explicitly forbidden by Section 10 of the GNU GPLv3:

You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License.

If you are the sole copyright owner and your software does not contain any 3rd party GPL code, then you can of course invent your own license terms with any additional restrictions you want. But then you can not call your license conditions GPL. And you can not call your project "open source" because your license condition would be a "Discrimination Against Fields of Endeavor". And you can not call it "free software" either, because users can not "run the program as they wish, for any purpose" or "change it so it does computing as they wish".

2
  • Also if you try to do this, you need to be aware of is trying to say GPL but you can't do x as license is restricted by Article 7, so you would need to write your own license. Jul 27 at 21:42
  • The solution I have finally is to release code under GPL 3 with no additional conditions and hope that people will signup to the site simply because they love the framework itself and the content we will publish there. The deliberations here definitely helped me make a decision. Most to and fro were caused by GPL 3 additional terms clause which was encouraging my alternate approach brainstorming.
    – Gautam
    Jul 29 at 5:41
2

Thank you all for all the encouraging debate. None of the answers addressed the precise question so I am sharing my understanding here.

There is no real practical way to enforce a subscription through the license and it would be rendered meaningless since users can make alternate copies available under gpl-3. There are some provisions for additional terms in gpl-3 ( clause 7 ) but my understanding is they may not put additional restrictions. This very clause brought up the potential options and this question in the first place.

Since my ultimate goal is to promote active community adoption of the framework we will stick to GPL3 in its original form to alleviate any concerns.

We will encourage free signups to our site through alternate means such as training, blog content and such. Infuture if the framework takes off and developers really appreciate our work, we will offer commercial licensing in exchange for a subscription.

Hope this answer will help future decision making process of other developers.

1

I am working on a Java framework that I would like to distribute with GPL V3 but ...

Everything after the but is incompatible with all versions of GPL.

GPL basically legalizes "piracy" (because legally it is not "piracy" if you have given your users permission to distribute your code). Any user of your code can post it on his own github or put it on a thumbdrive or upload it to a torrent site for others to download and you have given permission for them to do so because your code is GPL.

What you can do is:

...distribute with GPL V3 and ask the user to subscribe to a certain site if they download from me

After that GPLv3 have explicitly given that user permission to re-upload the code for his friends to download.

You also mentioned:

.. the subscription to site is actually not required to use the code. My goal is to use the developer base for future capabilities that I want to build into my site

This is perfectly fine. Lots of libraries ask you to register to download the official version. As the copyright owner of the code (or indeed, as someone who downloaded the code) it is perfectly fine to require a registration before downloading. It is even OK to require users to pay before downloading (see RedHat Linux - not the owner of the Linux kernel but GPL allows them to sell it). What you can't do is sue the user if they re-upload it.

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.