Stories
Slash Boxes
Comments

News for nerds, stuff that matters

Selecting a Software Licence?

Posted by Cliff on Thu Apr 19, 2007 01:05 PM
from the an-important-decisions-in-a-coding-project dept.
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?"
This discussion has been archived. No new comments can be posted.
Display Options Threshold:
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
  • Wikipedia (Score:3, Informative)

    Wikipedia [wikipedia.org] has some useful information on the various licenses if you don't want to read through them directly.
    • Subjective by matt me (Score:2) Thursday April 19 2007, @03:16PM
    • Re:Wikipedia by falconwolf (Score:2) Tuesday April 24 2007, @07:33PM
  • Some good points (Score:3, Informative)

    by orclevegam (940336) on Thursday April 19 2007, @01:10PM (#18801551)

    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 [codinghorror.com]
  • Short version: (Score:5, Informative)

    by Daniel_Staal (609844) <DStaal@usa.net> on Thursday April 19 2007, @01:14PM (#18801629)
    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.
    • Re:Short version: by Secret Rabbit (Score:2) Thursday April 19 2007, @01:24PM
    • Re:Short version: by Safety Cap (Score:3) Thursday April 19 2007, @01:51PM
    • Re:Short version: by FunkyELF (Score:2) Thursday April 19 2007, @01:56PM
    • Re:Short version: (Score:5, Insightful)

      by dghcasp (459766) on Thursday April 19 2007, @02:07PM (#18802537)

      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.

      [ Parent ]
    • Re:Short version: by paulxnuke (Score:1) Thursday April 19 2007, @03:07PM
  • Licensing 101 (Score:4, 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.
  • From a developer's perspective, it all depends on who you want to have the most freedom with your code.

    With GPL you give freedom to the community - anything using GPL code will always be GPL.

    With BSD you give freedom to the developer - they can use your code almost any way they want. Closed source devs can modify and distribute binaries as much as they want without giving anything back to the community.

    LGPL is like a mix of the two. The single developer can use thier own license so long as they only link to the LGPL code. Any modifications to the LGPL code are under LGPL, so some things are still given back to the community.

  • GPL (Score:4, Informative)

    by vga_init (589198) on Thursday April 19 2007, @01:21PM (#18801777)
    (http://rankandfile.homelinux.net/ | Last Journal: Friday January 23 2004, @02:58PM)

    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?

    • Re:GPL by Raenex (Score:2) Sunday April 22 2007, @02:02AM
  • Official commentary on the GPL (Score:4, Informative)

    by datastew (529152) on Thursday April 19 2007, @01:22PM (#18801803)
    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 [gnu.org] 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.
  • A brief comparison by the KDE folks (Score:1, Informative)

    by Anonymous Coward on Thursday April 19 2007, @01:27PM (#18801899)
  • by orclevegam (940336) on Thursday April 19 2007, @01:29PM (#18801941)
    You might also want to consider using more than one license for different parts of the application. You could for instance create some sort of support library and license it under LGPL, but use BSD or GPL for the actual application. This way others can use the library in other projects, even closed source ones, but your application is always guaranteed to be open source.
  • License Education (Score:5, Informative)

    by Secret Rabbit (914973) on Thursday April 19 2007, @01:35PM (#18802035)
    (Last Journal: Sunday December 04 2005, @06:31PM)
    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/ [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.
  • License Ramifications (Score:3, Insightful)

    by 99BottlesOfBeerInMyF (813746) on Thursday April 19 2007, @01:50PM (#18802257)

    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.

  • by jayayeem (247877) on Thursday April 19 2007, @01:51PM (#18802273)
    Whatever annoys Stallman the most.
  • Public Domain? (Score:3, Insightful)

    by FunkyELF (609131) on Thursday April 19 2007, @01:54PM (#18802303)
    Is "public domain" a kind of license?
  • You have a few choices... (Score:3, Informative)

    by nevali (942731) on Thursday April 19 2007, @02:22PM (#18802741)
    (http://nevali.net/)
    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.
  • zlib (Score:1)

    by niteice (793961) <icefragment@gmail.com> on Thursday April 19 2007, @02:36PM (#18802919)
    (Last Journal: Tuesday September 18, @07:44PM)
    IMO the zlib/libpng license is the best. It's functionally equivalent to BSD, but you don't need an army of lawyers, university presidents, or OMINOUS ALL CAPS DISCLAIMERS. In English, it says the following:

    - Use the code however you want, but don't claim you're the author.
    - You can modify the code, but don't claim the modified code is the original.

    About as simple as it gets.
  • BSD (Score:1)

    by Wabbit Wabbit (828630) on Thursday April 19 2007, @02:43PM (#18803031)
    Like many, I started out with GPL, moved up to LGPL, and finally realized that the BSD license was really the fairest.

    The license is short and to-the-point, giving the author all the recognition and indemnity they need, and users all the freedom to derive that they could want.

    Stay away from the silliness that is the whole inbred family of Creative Common licenses. They're a mistake that should never have happened.

    You can see a sample BSD license here: http://www.opensource.org/licenses/bsd-license.php [opensource.org]
    • Re:BSD by ricree (Score:2) Tuesday April 24 2007, @05:57AM
  • Public Domain or else. (Score:1, Troll)

    by Purity Of Essence (1007601) on Thursday April 19 2007, @02:57PM (#18803239)
    Want to help people? Public domain: give it away.

    Want to make money? Proprietary license: sell binaries to end users.

    No sense in being half-assed [wikipedia.org] about this.
  • I Like CDDL (Score:2)

    by Quantam (870027) on Thursday April 19 2007, @03:26PM (#18803641)
    (http://qstuff.blogspot.com/)
    I picked the Common Development and Distribution License [sun.com] for my recently open source projects. I wrote up a rather length justification for this decision (and why I decided against others, like the GPL, LGPL, and BSD license) on my blog [blogspot.com].
  • by bssteph (967858) * on Thursday April 19 2007, @06:51PM (#18806403)
    (http://emptymatter.org/)
    ...try O'Reilly's Understanding Open Source and Free Software Licensing, which you can find (gratis) at http://www.oreilly.com/catalog/osfreesoft/book/ [oreilly.com]

    Andrew M. St. Laurent does an IMO excellent job of explaining the predominant licenses, how they differ, why they differ, which phrases of the license are the important ones and which ones are just fuzzy, and other considerations, including how you should select a license (don't forget that just because your work is "self-started", you don't have free license choice, depending on if and what you link against).

    I recommend that, and I recommend all of the above comments saying to stick to one of the big licenses.
  • by Walter Carver (973233) on Thursday April 19 2007, @08:01PM (#18806997)
    (about:blank)
    Just a remind that you can license your code in more than one licenses. MySQL does this.
  • The most important thing about all the most open source licences is that anyone can take your program,change the name, add some trivial changes and sell it (although with GPL they have to give away the code).

    I'm amazed how many people GPL or BSD a program, then flip when someone else does this. If your program gets popular, someone will. Be sure you want that to happen. I think many people would be better off releasing the source code to their program and accepting patches, but not allowing derivate versions.
  • by petrus4 (213815) on Saturday April 21 2007, @01:06AM (#18821591)
    (http://aqpeag.blogspot.com/ | Last Journal: Saturday April 21 2007, @05:39AM)
    If you want maximum exposure/use, the BSD license. GPL zealots will most likely fork and relicense it almost immediately if they wish to use it themselves, however.

    If the acceptance of at least certain tragically vocal elements of the existing FOSS userbase is a priority to you, the GPL is your only real choice. The cult...sorry, community can have a tendency to refuse to use/develop anything that isn't GPL licensed on reflex, even if it is licensed under the BSD/MIT license.

    It is possible to make money from software with the GPL, however be aware that you risk the sort of incident that befell Red Hat recently with Oracle. Oracle took Red Hat's codebase, and began offering support services to people itself, and seeing as support is the only thing Red Hat actually make money from, Oracle effectively took the meat out of their sandwich.

    If you want to make money, I'd probably use a BSD/proprietary dual licensing approach; you have a baseline or "reference" version of the code which you keep under the BSD license, which people are free to take and do what they want with, but you retain the right to release a fork yourself which includes such proprietary elements as you see fit. You can then choose whether to add the proprietary elements back into the open source BSD licensed version later or not. I'd also keep downstream contributions clearly seperate from your own work in the code tree if possible; that way you can talk to the individual contributors about what licensing scenario (other than the GPL, the viral nature of which is specifically intended to assimilate an entire codebase if it is used at all) they want for their work. This way you can also avoid people screeching that you're "stealing their code" and issuing threats in the manner that we've seen Bruce Perens doing over the Microsoft/Novell deal.

    Realise that if you do use the GPL, you are actually relinquishing control of your work far more effectively than if you were to use the BSD/MIT licenses, and that this is what Stallman originally intended. Although the openly viral element is distasteful enough in itself, its' most dangerous elements are actually the entirely subjective and unwritten ones; the insistence that you not only follow the letter of the license as it is currently written, but also that you accept Stallman and the FSF as (at least ideological, and very possibly legal) authority figures, which also means unconditional acceptance of any future version of the license, irrespective of what terms such future versions might contain. The welfare of the collective in abstract terms is the priority; the welfare of the individual is not considered.

    On reflection, if you have the credentials, I would actually recommend seeking employment with a pre-existing software company, rather than attempting to join the FOSS community as an independent developer. Although it originally started out as something positive, I have come to believe that at least as far as Linux is concerned, the FOSS community now represents decentralised collectivism's dark side, or an illustration of what can happen when the anarchist dream is aimed for, but not genuinely reached.

    It may be perhaps possible that at some point in the future, humanity could mature to the point where the concept of individual sovereignty could become a concrete reality. However, as members of the Linux community continue to prove on a daily basis, we're not there yet.
    • 1 reply beneath your current threshold.
  • Open source does not mean no cost.
    [ Parent ]
    • Re:Sell it. by EveryNickIsTaken (Score:2) Thursday April 19 2007, @01:16PM
  • Re:Twofo (Score:3, Funny)

    by gEvil (beta) (945888) on Thursday April 19 2007, @01:14PM (#18801625)
    (http://evil.google.com/)
    http://goatse.ch [twofo.co.uk][goatse.ch]

    I looked into that one once, but it was full of holes...
    [ Parent ]
    • Re:Twofo by TempeTerra (Score:2) Friday April 20 2007, @12:34AM
  • Re:Junior achievement. (Score:5, Insightful)

    by aardvarkjoe (156801) on Thursday April 19 2007, @01:36PM (#18802055)

    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.

    [ Parent ]
  • Re:Mix and Match (Score:2, Informative)

    by Anonymous Coward on Thursday April 19 2007, @02:01PM (#18802431)
    Unfortunately, Creative Commons is not meant [creativecommons.org] for software.
    [ Parent ]
  • Important: you can change (Score:3, Informative)

    by JavaRob (28971) on Thursday April 19 2007, @02:15PM (#18802625)
    (http://jtheory.com/ | Last Journal: Tuesday March 28 2006, @10:45AM)
    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.
    [ Parent ]
    • Re:Important: you can change (Score:4, Interesting)

      by Arker (91948) on Thursday April 19 2007, @02:55PM (#18803207)
      (http://antiwar.com/)
      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.
      [ Parent ]
  • Re:Sell it. (Score:3, Funny)

    by syntaxglitch (889367) on Thursday April 19 2007, @02:23PM (#18802751)

    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.
    [ Parent ]
    • Re:Sell it. by dryeo (Score:2) Saturday April 21 2007, @12:04AM
    • 1 reply beneath your current threshold.
  • Re:license? (Score:2, Informative)

    by Shai-kun (728212) <jeroenc&jscwebdesign,nl> on Thursday April 19 2007, @02:37PM (#18802929)
    http://en.wikipedia.org/wiki/License [wikipedia.org] Second sentence? Right.
    [ Parent ]
  • Re:Other Options (Score:1, Offtopic)

    by madcow_bg (969477) on Thursday April 19 2007, @03:13PM (#18803427)
    Why not try Creative Commons? AFAIK the licenses say nothing about the source, but the work itself. You have very large freedom of modifications to say exactly what you want to be done with your software.
    [ Parent ]
  • Anything that uses the sotware/code must mention the software/code is being used and that part of the code is under the licence (the rest of the software/code is not).

    The zlib license does this. But any license that requires notifying the author before distributing copies for a fee (your criteria 2 and 3) would not be a free software license.

    [ Parent ]
  • Re:GPL (Score:1)

    by hummassa (157160) on Friday April 20 2007, @04:25AM (#18809627)
    (http://slashdot.org/~hummassa | Last Journal: Wednesday August 22, @05:11AM)
    GPL w/linking exception (or LGPLv3 when available!)
    [ Parent ]
  • by mollymoo (202721) on Friday April 20 2007, @07:07AM (#18810237)
    (Last Journal: Friday December 17 2004, @07:14PM)

    (2) If the software/code, or any derived software/code is not being provided for a fee (even a cost of distribution fee), or associated to a fee (i.e. distributed for free, but pay for support), there are no other terms or conditions for use, but also no warantee/gurantee

    The word you are looking for is "warranty".

    [ Parent ]
  • Re:GPL (Score:1)

    by siDDis (961791) on Friday April 20 2007, @12:34PM (#18813897)
    I belive one should choose the license which one belive is most fair for their project. How many restrictions are you willing to put on your source? In many cases I think GPL is just unfair. I really prefer LGPL a lot more than GPL. Let's do an example: I develop a web application which I'm going to sell. I want to integrate an open source database into it, in that case I would have a huge problem with MySQL(GPL). I would have to distribute the source code for my web application to everyone who buys my product, any most of my customers would hate that! PostgreSQL(BSD) on the other hand just demands that I include a text file which says that the PostgreSQL Global Development Group owns it. However with SQLite(Public Domain) I can just grab the source integrate it into my application and tell my customers that the source in the project is all mine.
    [ Parent ]
  • 9 replies beneath your current threshold.