11

I have developed an open source project, and people can get the community version from Github. But I also want some customers to buy an advanced version based on the open source project, the advanced version has rich features that community version does not have. When a customer buys the advanced version, I will distribute the source code to them. There is a problem: How can I prevent paying customers from distributing the source code of the advanced version?

At first, I wanted to distribute the advanced version under a proprietary license, but I need to make the source opened to them, because the project is not simple, most customers will add new features based on their own requirements.

So how can I reach a balance for my open source project? I need some pay to make the business run.

  • Yes. Paying customers will add new features on the the advanced version they have bought. – Bes Ley Sep 15 '15 at 9:06
  • 1
    @Nicolas Raoul - OpenSource and access to the source is not the same. OpenSource means that you follow the OSS guidelines from opensource.org. Giving someone access to the sourcecode does not give him any rights. – schily Sep 15 '15 at 10:01
  • 1
    If customers add features to your advanced version, are they allowed to distribute their modified version? If you try to say that that's not allowed, it wouldn't make sense to me (and it might not be legal, not sure.). Why don't you consider another technical way to achieve what you're trying to do -- provide a plugin API, for example. Then your customers can develop enhancements to your software (plugins). The customers own the plugins they develop, but you own the "advanced software" needed to make full use of those plugins. – Brandin Sep 17 '15 at 12:42
  • @Brandin, That's a great idea about to use plugin API. I should consider the new way. Thanks. – Bes Ley Sep 19 '15 at 9:39
  • 2
    You can do it by getting a lawyer to write a custom license for you. – ArtOfCode Apr 22 '16 at 9:40
6

First of all, make sure that anybody who makes contributions to the open source project assigns copyright to you, or else your ability to use their contributions in the proprietary version will be restricted and any copyright lawsuit will become extremely complicated.

Next, make sure the "LICENSE" text file for your open source project is not included in the proprietary one to make sure nobody can claim the proprietary code is available under an open license.

Finally, if somebody uses a pirated copy of your code, make sure they are unable to contact you for technical support and unable to receive bugfix patches in a timely fashion.

You can do this by simply typing "XXX pro source code" into google and check if it's visible on the first page or two of results, then send a DMCA takedown notice: http://rising.blackstar.com/how-to-send-a-dmca-takedown-notice.html

If they do not take the content down in a timely manner then they are guilty of "wilful infringement", and you can try to find a lawyer who's willing to work "on contingency", basically you only pay them if they win the case for you.

Be sure to "register" the copyright for your source code, it's cheap and and makes you eligible for up to $150,000 in statutory damages if somebody distributes pirate copies of your work. This will make it much easier to get a lawyer on contingency, since they know they can take a share of the $150,000.

Some people will still pirate your work, but the vast majority of your customers will choose to pay instead as long as your price is "reasonable" and it's somewhat difficult to pirate the source code within a day or so of an important bugfix.

It is not possible to completely eliminate piracy, but it's also unnecessary. As long as "enough" customers pay, then your business will thrive.

  • Two things to note: The implications of copyright assignment are complex, and they will require a good level of understanding of the relevant jurisdiction's law in order to make sure things run smoothly. The other thing worth noting, is that the DMCA only applies to the US. It works to deal with Google, but if you've got other places, it may not be so easy. – Zizouz212 Jun 29 '16 at 1:31
4

If your customers really need the source code of the advanced version, you should provide it to them under a license which does not permit redistribution. If you suspect they will break this license, I can't think of any good solution... maybe you could try introducing subtle differences in the source code so that at least you know who leaked?

You could also split the advanced version between:

  • Code that your customers need to be able to modify
  • Code that your customers don't need to modify <- This one can be compiled, source not distributed, and can include a server call to check a subscription status.

But I don't think such extreme measures should be needed. Alfresco is an example of a company in your situation, my company was their customer for a few years. They provided us with CVS access to the whole source code of their premium product. The same was accessible by many other customers, and is highly valuable, but you don't see that source code being redistributed around. Maybe everyone is respectful, or maybe because it is Enterprise software so risks are high if caught. Anyway, your worse-case scenario has never happened for them, it seems. Another thing is that their product is evolving quickly, so staying up-to-date would be really hard, you would have to find leaked version every once in a while, especially when security vulnerabilities are found. Companies are not willing to play this game.

Another way to make your business sustainable can be to sell a support subscription. If your customers need to modify source code, it sounds like they could use professional support from you.

  • Yes, I provide professional training service and technical support for customers when they buy my software. I remand them promise that they can't redistribute the source code to others. But there is still a risk, I can't trace the source code directly. – Bes Ley Sep 15 '15 at 9:01
  • 1
    @BesLey Businesses aren't going to risk violating the license agreement. It sets a bad name for them and could end up with them being not being able to do business. – ratchet freak Sep 15 '15 at 9:42
  • 1
    DevExpress, which is a fully propriety product, also releases their source as a reference without a license to redistribute at their highest subscription level. It seems to work out for them. – Martijn Sep 15 '15 at 10:06
  • In your case, there will likely be systems in place to stop distribution of source as well. The company can be liable for civil damages, but if (as example), data such as personal information were released, then the company can also be criminally responsible. Anyways... Good answer :) – Zizouz212 Jun 29 '16 at 1:34
2

You should have a lawyer experienced with software licensing assist you with your customer agreement for the proprietary advanced version. The agreement would include license terms describing exactly what they can do with it, who owns any derivative works, and their obligation to maintain confidentiality. If the customer breaches a well drafted agreement, you could go after them for copyright infringement, breach of contract and trade secret misappropriation.

And registering your code as mentioned above would be a very good. If you do it before the infringement or within 3 months of publication, you can get attorneys' fees from the infringer in addition to the statutory damages described above.

1

Releasing a non-free version next to a free version is somewhat standard practice, and number of questions on this site cover the basics.

You can protect the sourcecode of you propriety source as every other piece of propriety code you release. Protecting your source code through legal means can be difficult. You have legal recourse to sue when a license breach is detected, and there are DRM options. All are beyond the scope of this site, since they are explicitly about non-free non open source software.

  • We are a small team now, and we don't have enough energy and time to detect and sue the illegal users. I think it's better to get a suggestion that the first step what I can do to reduce the risk of the source code redistribution from customers. Thanks. – Bes Ley Sep 15 '15 at 9:30
  • @BesLey there is nothing iron-clad. DRM is going to be possible, but difficult as your users will be unable to sign their modified versions. But these are all inherently techniques for non open-source software. We're not well-equipped to answer those questions here. I don't really know if there is a good SE to ask the broader question of how you can distribute source code, allow users to run modifications, but technically inhibit them from re-distributing it. – Martijn Sep 15 '15 at 9:37
0

Must you must distribute source of the advanced version? The GPL's requirement to distribute source does not apply to you -- you own the copyright. Assuming, that is, that you require other people who contribute to assign copyright to you, and that you haven't incorporated other people's GPL libraries. If you own the copyright on the whole thing, you can choose to distribute advanced version sourcelessly.

If you don't have the option to distribute it sourcelessly, you have to depend on contract law to prevent leakage. The general principle is this: if your product is expensive enough to be worth bothering to sell, you are selling it to the sort of corporate customer who does not run around violating contracts.

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.