Slashdot Mirror


Selecting a Software Licence?

indraneil asks: "I am a code monkey and have been so for close to 5 years now. I have recently been doing some self-started work that lets me design, implement and test stuff all by myself. A couple of people have liked my prototype and wanted to use it. I would be happy to let others use it, but I am unsure of what license to release it under. My CS course did not include any awareness of licensing and while I am aware of GPL, LGPL, Apache, BSD and Creative Commons licenses, I never got around to understanding them well enough to be able to form an opinion on what suits me best. I notice that SourceForge also expects me to specify my licensing choice, while I am setting up my project. If a person doesn't know about software licensing, where should they educate themselves about the ins and outs, so they can properly choose the license that is right for their project?"

25 of 123 comments (clear)

  1. Wikipedia by Metasquares · · Score: 2, Informative

    Wikipedia has some useful information on the various licenses if you don't want to read through them directly.

  2. Some good points by orclevegam · · Score: 3, Informative

    This guy has some good points and it's worth a read. Title of the article is "Pick a License, Any License"

    http://www.codinghorror.com/blog/archives/000833.h tml
    --
    Curiosity was framed, Ignorance killed the cat.
  3. Re:Twofo by gEvil+(beta) · · Score: 2, Funny

    http://goatse.ch [twofo.co.uk][goatse.ch]

    I looked into that one once, but it was full of holes...

    --
    This guy's the limit!
  4. Short version: by Daniel_Staal · · Score: 5, Informative

    The short version:
    BSD: Anyone can use your code, any way they want, as long as they mention your name.
    GPL: Anyone can use your code, as long as they mention your name and allow others to use the code as you have let them use it.
    LGPL: Same as GPL, but with some exceptions allowing others not to be bound to your licence if they don't actually touch your code in their project, but just use it.

    Other licenses have variations on the above. In general I think most people should stick to one of those three, if for no other reason than to stop the confusion.

    Pick the philosophy you like the best. That is the main point.

    --
    'Sensible' is a curse word.
    1. Re:Short version: by qbwiz · · Score: 2, Insightful

      They can't use your name to endorse or promote their product, but they have to include your copyright notice (in the documentation, if they just distribute a binary).

      --
      Ewige Blumenkraft.
    2. Re:Short version: by pragma_x · · Score: 2, Informative

      Are you referring to the advertising clause?

      http://www.gnu.org/philosophy/bsd.html
      http://en.wikipedia.org/wiki/BSD_license#UC_Berkel ey_advertising_clause

      There's a whole slew of variants of the BSD license, all colloquially referred to as "BSD"; as Wikipeida mentions, even the MIT license is easily confused with it. Depending on what variant of BSD you're using, it may or may not apply.

      Now, I don't know if this is what the GP meant, but regardless if the advertising clause is present, you do have to "mention" the original author(s) in the copyright statement within the source, when you compose a derivative work.

    3. Re:Short version: by Safety+Cap · · Score: 2, Insightful
      If you don't mind many others making stuff with your code, avoid GPL and use Apache/Mozilla instead. If you want to only have your code used by unwashed hippies like RSS, then go GPL and don't look back.

      Many corporate shops I've worked with avoid GPL'd code, because they want the option of selling the product they make. They may never exercise that option, but they want it.

      --
      Yeah, right.
    4. Re:Short version: by dghcasp · · Score: 5, Insightful

      Funner version:

      Public Domain: You want anyone to use your code free of restrictions. Nobody knows what you wear or what you eat. Your code is for simple binary trees and is published in University textbooks.

      BSD: You want anyone to use your code, but not to blame you for it. You have medium hair and a T-shirt. Someone paid you less than minimum wage to write the code, and you use the money to eat at McDonalds. Your code is the TCP/IP protocol and is widely adopted and ubiqutous. Linux people think you're dead.

      GPL: You wish everyone would use your code and share their modifications with the world. The only people who end up using it are Linux fanboys. You have long hair and a poncho. You spurn money and instead grow potatoes on your commune. Your code is the fourth non-completed conversion of an IBM PC game from the 1990s listed on sourceforge.

      LGPL: You wish you could use the BSD licence, but are afraid the other people on the commune will throw potatoes at you.

      Any other Licence: You either fail to realize that all other licences are basically the same as the BSD or GPL licence, or you contribute code to a project that has the same problem. You wear whatever everyone else wears and eat pasta because you heard it was "trendy." Your code calculates the phase of the moon on any past day using the Julian calendar because you can never remember the rules for converting from the Gregorian calendar.

  5. Licensing 101 by pieterh · · Score: 3, Insightful

    If you are an individual or small team, the most important thing is to keep control over your copyright so you can make money from those people willing to pay for your work.

    If you want to open source it, use the GPL and offer a commercial license opt-out. If you use the BSD, no-one will pay.

    Do not accept any contributions unless people are willing to transfer (c) to you, or you cannot relicense your work.

    Do not use GPL libraries, only BSD-licensed ones, or you cannot relicense your work.

    If you are a team or company that does not want to make money from the software, license it under the BSD or Apache license.

    1. Re:Licensing 101 by Dan+Ost · · Score: 2, Informative

      Do not use GPL libraries, only BSD-licensed ones, or you cannot relicense your work.

      LGPL libraries are also safe to use unless you make changes to them and don't want to share those changes.

      --

      *sigh* back to work...
  6. GPL by vga_init · · Score: 3, Informative

    There are many software licenses to choose one, and everyone should have a license that does exactly what they want it to do. You don't even have to pick a preexisting one; write your own with the help of a lawyer (if you need it).

    However, it sounds to me that your intention is to share this software with others. If you want to share it with just those individuals you choose, use some different license and have them sign an nondisclosure agreement or something (ps I am not a lawyer). If your intention, however, is to share your software with the public at large and have the community benefit as a whole, then please use the GPL.

    The reason why the GPL is important for this purpose is that it makes your community software stay in the community. Lots of commercial enterprises use the GPL for reasons like this; they have valuable assets they want to give away (in the from of source code), but they don't want their competitors using it to screw them over--they want the world to benefit, and they themselves might benefit from seeing improvements to their code. That's the GPL.

    If you use the GPL, not only will you be sharing your hard work with others in a way that you deem appropriate, you are also encouraging them to share their work with you. Whoever uses your project or develops it will assume a mutually beneficial role with everyone else who does the same, including you.

    You know how they say...if you love something, set it free? You'd want to take some steps to ensure that it at least STAYS free, right?

  7. Official commentary on the GPL by datastew · · Score: 3, Informative

    For the official Free Software Foundation (FSF) commentary on their GNU Public License (GPL) and other licenses, http://www.gnu.org/licenses/license-list.html is the place to start. The title of the page is: "Various Licenses and Comments about Them - GNU Project - Free Software Foundation (FSF)." I have referred to it often over the years.

  8. License Education by Secret+Rabbit · · Score: 4, Informative

    I find it hilarious that the OP asked how to educate him/her-self on this topic and immediately there are lots of post recommending a license (overwhelmingly the GPL); this is NOT what the OP asked for.

    @OP:

    If you want to educate yourself on what licenses would be appropriate for what /you/ want, read the licenses. This site:

    http://opensource.org/

    has a TONNE of them.

    The most common are the BSD, MIT, MPL, Apache, GPL and LGPL. That is according to sf.net. Please note that there are licenses that don't just protect you, but seriously effect how others can use your work. Please consider this as well when choosing your license.

    To add in my personal opinion, I *really* don't like the GPL. What it does is FORCE other developers that use your work (whether dynamically linked to or not) to use the GPL as well. My personal opinion is that as a developer, I don't have the right to choose the license of someone else's work. There is of course the argument that the developer just shouldn't use your work. But, IMO, that is a non-argument as in some areas there really is only one or two real options.

    At any rate, agree or disagree. That's just my opinion.

    1. Re:License Education by Lao-Tzu · · Score: 2, Insightful

      To add in my personal opinion, I *really* don't like the GPL. What it does is FORCE other developers that use your work (whether dynamically linked to or not) to use the GPL as well. My personal opinion is that as a developer, I don't have the right to choose the license of someone else's work.

      I like to think of it in terms of slavery. Let's imagine you're the supreme leader of your own country. The people of the country are asking you, "Is Slavery allowed in this country?" You have a couple of choices.

      You can be pro-slavery, or anti-slavery. A slavery supporter would state that everyone has complete freedom in your country, including the freedom to enslave others. An anti-slavery supporter would say that personal freedom must stop when it violates the personal freedom of another being -- you can do whatever you want, except deprive another of their freedom.

      The "complete freedom" is akin to a BSD-type license -- I grant you the right to do anything you want, including take my software, distribute it, and deprive other people of the freedom and rights that I originally granted to you. The only thing the BSD license really prevents is a lawsuit against the original author, by claiming that he is not liable for the software. (That's why the BSD license is better than releasing software into the public domain, by the way)

      The "restricted freedom" (ie. no slavery) is akin to the GPL -- I grant you the right to do a lot of things, but you cannot take my software, redistribute it, and not give other people the same rights that I gave you. All people have the same access to source code that the first distributer had.

      Personally? I like them both. It depends on what you want to do with your software. If I want something to be widely used, I'd go with a BSD license. If I believe that it could be a huge benefit to a big company, I'd say that a GPL license would prevent them from taking it, making money off it, and not giving back to the community. They could take it and make money off it, but everyone would benefit from their changes if they're redistributing the software.

    2. Re:License Education by Secret+Rabbit · · Score: 2, Insightful

      This is probably going to come off *way* more adversarial than intended. Please take that into account while reading it as I don't have the time to fix it.

      I respect the person, but not the view. Though, I wouldn't have a problem with the GPL if this clause was more along the lines of, "must use another OSI approved license" rather than "must use the GPL" i.e. there are less a**hole ways to keep things open source. To me, the GPL wreaks of arrogance.

      But, I don't believe that most people that choose the GPL actually understand what it means. I mean, I've seen *a lot* of fud out there. Also, from what I've seen, *a lot* of developers think that open source == GPL. So, they choose it by default. And GNU/FSF aren't exactly speaking up on this issue as these misconceptions work in there favour.

      Another problem that I have with the GPL is it creates and was born out of the "us v.s. them" mentality. This doesn't exactly breed a non-adversarial environment.

      Again, there /is/ a way for everyone to keep there own personal views and still maintain an open environment. I personally like the idea of non-adversarial licensing; I don't like RMS's ideology shoved down my throat. But, this isn't a perfect world. And although the GPL people technically have the right to do what they do, I don't have to like it nor do I have to feel it is the right thing to do.

  9. Re:Junior achievement. by aardvarkjoe · · Score: 4, Insightful

    This AC post is right -- you are going about this backwards. Your first question should not be "what license do I use?", it should be "what do I want to happen to my code?" Sit down and decide whether you want to give away the source code or not, whether you want to allow others to modify the code, whether you want to require modifications to be released to the public, and anything else that you think is important.

    Once you've done that, picking a license is pretty straightforward. People have already posted links to a bunch of different places that compare licenses. Unless your requirements are pretty unusual, you should be able to find a license that matches them.

    --

    How can we continue to believe in a just universe and freedom to eat crackers if we have no ale?
  10. License Ramifications by 99BottlesOfBeerInMyF · · Score: 2, Insightful

    There are really two big open source licenses, along with many that are similar or slight modifications thereof:

    • BSD - if you want to let people do anything they want with your code (so long as they credit you in the copyright). With this license people can use it pretty much without restriction, including closing the source, making changes and selling it without paying you or even letting you see what they did. Use this if you view this as a charitable donation to the companies and projects of the world.
    • GPL - if you want the project to be kept open source and want to be repaid for your work with improvements and changes from others who might modify or improve your project, this is the license to use. Basically it lets people use your code all they want, provided any time they redistribute something that uses your code, they have to give a copy of the source as well. This is sort of like a public trust, where you give the code to the world, not to be resold to them or you in the future and not to be closed to them. This license is (IMHO) most likely to foster a community to form around it and result in improvements being submitted and the project evolving.

    Otherwise, keep the license closed and license it specifically to other individuals and groups for $20 a head and provide it like a traditional, commercial product.

  11. Public Domain? by FunkyELF · · Score: 2, Insightful

    Is "public domain" a kind of license?

    1. Re:Public Domain? by Gregory+Cox · · Score: 2, Informative

      Strictly speaking "public domain" is not a license, but everyone mentioning it above is obviously using the term "public domain" as shorthand for a license consisting entirely of the following statement:

      I hereby place this code in the public domain.

      --
      If you all Google Slashdot, will it Slashdot Google?
  12. Re:Mix and Match by Anonymous Coward · · Score: 2, Informative

    Unfortunately, Creative Commons is not meant for software.

  13. Important: you can change by JavaRob · · Score: 2, Informative

    Whatever license you choose, remember that you can *change* your selection later, as long as you still own the copyright completely.

    You can release it as GPL, then (if people convince you there are good reasons to relax the license somewhat) you can switch to LGPL, BSD, whatever.

    You can also *sell it* to commercial customers who want to distribute it as a part of a closed source project. Yes, at the same time as you have a GPL version out, or you can stop distributing the GPL version and go pure closed source.

    The point is, as long as you personally own the copyright, you can leverage that however you want. If/when you start accepting contributions/patches/etc. from other developers under the GPL, though, you have to get agreement from them to change anything (unless they sign over copyright for their code to you). Getting permission to change from many, far-flung developers is not easy... so ideally you should make sure you are happy with your license before accepting donated code.

    Yes, if you release it as GPL then go back to closed source, other people might "fork" your project and continue development & distribution of their own version. But THEY must always stay GPL -- they don't own the copyright, so they don't have the option (like you do) of changing the license.

    These distinctions are important to understand; they're what make the MySql business model (for example) possible.

    1. Re:Important: you can change by Arker · · Score: 3, Interesting

      One correction - you don't have to require copyright assignments to retain your ability to sell a proprietary product based on your own GPL product. All you have to require is a side-license on contributions - the contributors can still retain copyright on their own code, as long as they grant you a special license that allows you to use those contributions as you will.

      Most will not mind doing this in order to get their code into the main tree and have you maintain it. It's a much less onerous requirement than a copyright assignment, but it's just as good for you.

      --
      =-=-=-=-=-=-=-=-=-=-=-=-=-=-
      Friends don't let friends enable ecmascript.
  14. You have a few choices... by nevali · · Score: 3, Informative

    In order from least to most restrictive:

    Use Public Domain if you don't care what people do with your code.

    Use the MIT or X11 license if you want to give it as much chance as possible of being used by as many people as possible, without them being able to pass your code off as theirs.

    The BSD (3-clause) license goes further by preventing other people from using you to endorse their products without your permission.

    The LGPL ensures that the code will remain 'open' (i.e., distributing altered binaries means you have to distribute the matching sources). The LGPL specifically allows your code to be linked with, but not included in, non-LGPL projects. If your code isn't a library (or included in one), the LGPL isn't hugely different from the GPL, although releasing a program under the LGPL would mean somebody could turn it (or portions of it) into an LGPL-licensed library without any hassle.

    The GPL is much the same as the LGPL, but doesn't contain any such provision for linking, so people linking with your code (if it's a library) had better make sure their do their homework first.

    The GPL-compatible licenses (which includes PD, MIT/X11 and BSD) are so-called because they don't contain any restrictions beyond those included in the GPL. This means that your code, if released under a GPL-compatible license, can be legally be included in a GPL-licensed work: your code as you originally released it is still under the license you originally used, but the modifications and the derived work could be GPL'd.

    Generally, the BSD license is a safe bet if you don't feel passionately about making sure that people who use your code must make their changes available to anybody who wants them, otherwise pick the LGPL or GPL depending on circumstance and requirements.

    Avoid non-GPL-compatible licenses, especially home-grown ones: they usually end up doing nothing but preventing people who might want to use your code from doing so. Unless you're a huge multinational company, it's a sure-fire way to ensure that relatively few people will bother with what you've released (in which case, what was the point in releasing it?), and even then it'll stymie adoption.

  15. Re:Sell it. by syntaxglitch · · Score: 2, Funny

    Make a living. Sell your code to the highest bidder. Don't listen to those Open Source Hippies. Yes, you should make your money by selling something incorporeal using a business model supported by a government-enforced monopoly. I mean, if you're relying on your own efforts instead of the government for your living you must be a hippie! Maybe even a communist!

    Er, wait, I think I missed something here.
  16. Re:license? by Shai-kun · · Score: 2, Informative

    http://en.wikipedia.org/wiki/License Second sentence? Right.

    --
    ...or so I've been told.