tags:

views:

408

answers:

8

I know there are other similar question but this one is unique so please don't close it.

I am getting ready to release a product and I'm trying to decide on how to share the code but still protect myself from competition. I want to share the code as a teaching tool from a development stand point, but I don't want it being redistributed or being turned into another competing product.

Are there any licenses that address this kind of thing or am I just best off not releasing it publicly?

+7  A: 

If you want to prevent redistribution, there is no suitable Open Source license. Open Source is all about redistribution.

There's nothing stopping you (or your lawyer 8-) from writing a license that allows people to study the source code but not to redistribute it - as the copyright holder you can license your code under whatever terms you like - but it wouldn't be an Open Source license. See Sam Saffron's answer for a pointer to such a license.

RichieHindle
MS reference licenses forbids redistribution, but I agree, its against the spirit of open source.
Sam Saffron
Licenses that forbid redistribution are not open source. (Not all MS licenses are open source.)
David Thornley
Sure, it just seemed in line with what Micah was asking, he wanted to give the code out for people to look at, only. Which is against the spirit of open source
Sam Saffron
btw, +1 for pointing out that Micha is not really looking for an open source license ....
Sam Saffron
+1  A: 

If you want to release the tool, but not the sources, you cannot use an open source license. You can however own the copyright, and distribute it freely, and make your own license terms. For example, refer to http://www.foobar2000.org/?page=License

Checksum
+5  A: 

MS-RSL (Which is not an OSI approved open source license, and not really open source) is what MS use to license the BCL, its a for your eyes only license that means no one can do anything with your source code, except for look at it.

Less restrictive is GPL which is viral, meaning anyone can change it and re-release it, but the source must remain GPL.

Least restrictive are BSD and MIT style licenses, which would allow third parties to duplicate your product and sell it.

It all depends on what you want to achieve.

Sam Saffron
RSL is not Open Source.
T.E.D.
and of course, it's not OpenSource.
Javier
+1  A: 

Releasing a product or chunk of code with an Open Source license is primarily a way for you to share your work with other people. It allows them to use the code (persuant to the terms of the license) and does not prevent competing products or redistribution.

If you don't want your code to be released or used by others, then you definitely do not want to release it as open source.

However if you are wanting to share your code, but don't want other people to basically rip-off your work and not keep sharing it, the GPL is the best way to go there. It requires that anybody that uses your code to share your code and their modifications when they distribute their copy - this keeps everything out in the open.

By the sound of your question however, it looks like you should be writing your own proprietary license or just not releasing your code. If you have to share this code with others, make sure you include a copyright notice under your name stating you have reserved all rights to the software.

Redbeard 0x0A
+2  A: 

Probably GPL would work best for you. It could still be redistributed, but GPL severely limits a recipient's options for making money off of redistributing it. If they put it in their product, their entire product has to be GPL.

There are quite a few companies that use this as a business model. The freely available version is GPL, but if you want a license that doesn't render your code GPL too, you have to pay for it.

If someone redistributing your sources at all is unacceptable, then you don't want an Open Source license. That's kind of the point of them.

T.E.D.
exactly the point of GPL: don't allow freeloaders.
Javier
+1  A: 

One problem with releasing source as a teaching tool is that people will want to use parts of it (if it's any good, that is). A long time ago, I saw a good Macintosh framework in MacTech (or maybe it was MacTutor then), couldn't find license information, and wound up annoyed. I didn't want to reimplement it myself, particularly since I couldn't be sure to avoid copyright violations. It wasn't clear that I could use it.

No Open Source license (as defined by the Open Source Initiative, which is the standard in this area) will restrict redistribution or building a product on it. Such licenses can include some restrictions: the Gnu General Public License, for example, will prevent some possible uses, and will prevent somebody from producing a closed-source competing product.

You might want to look at some proprietary licenses for guidance, if that is definitely what you don't want. Microsoft has some, for example. You could look at the Free Software Foundation's license list and look through the ones that don't qualify as Free Licenses by FSF criteria. Some of these licenses are called "shared source" or "source available".

Or, you could roll your own. You might want to check with a lawyer, or not.

You do need to consider the following things:

  1. Exactly what do you want to permit? Is this going to impede its desired use? Will it annoy your users too much?
  2. Exactly what are you trying to protect? You're pretty close-mouthed about what this thing actually is.
  3. What will you actually lose if somebody violates the license?
  4. How do you intend to enforce the license? (It won't do much good to go into excessive details if you don't intend to enforce them.)
  5. What do you want from the user community?
David Thornley
+1  A: 

Note that license issues are usually a part of civil law, not criminal law. This means that enforcing the license is up to you. Your local district attorney won't care about your license or violators.

And unless a license is enforced, it may not have much practical value.

Larry K
A: 

One thing you could do is to open source specific components of your application. For example if I wrote a screencasting utility, you can abstract the video processing functions in a library which would enable the community to look at it, but unless the implement the guts of the application like the GUI, etc, they won't be able to distribute it.

If you're looking for a license, you can choose between copyleft and non-copyleft.

Using a copyleft license like the GPL forces anybody using your code in their applications to release it as open source. A lot of companies release libraries as a dual license - saying that they can purchase a license which enables them to use the code in their applications.

If you're releasing a library rather than a full application, consider releasing it under a less restrictive license like the MIT, BSD or Apache license. This would benifit any user rather than just people who write GPL'ed code.

Andy.

antileet