I <3 Steve McConnell*
Coding Horror
programming and human factors
by Jeff Atwood

April 03, 2007

Pick a License, Any License

I hate software licenses. When I read a software license, what I see is a bunch of officious, mind-numbing lawyerly doublespeak. Blah, blah, blah.. kill me now.

meaningless license certificate

If I had my way, everything would be released under the WTFPL. Over time, I've begrudgingly come to the conclusion that, like lawyers, death, and taxes, choosing a software license is inevitable. Of course, it doesn't matter if yours are the only human eyes that will ever see the code. But a proper software license is a necessary evil for any code you plan to release to the public.

I definitely regret not choosing a software license for my CodeProject articles. I'll occasionally get friendly emails from people asking permission to use the code from my articles in various projects, commercial and otherwise. It's thoughtful of people to ask first. I do appreciate it, and permission is always granted with the single caveat that my name and URL remain in the comments.

Because I did not explicitly indicate a license, I declared an implicit copyright without explaining how others could use my code. Since the code is unlicensed, I could theoretically assert copyright at any time and demand that people stop using my code. Experienced developers won't touch unlicensed code because they have no legal right to use it. That's ironic, considering the whole reason I posted the code in the first place was so other developers could benefit from that code. I could have easily avoided this unfortunate situation if I had done the right thing and included a software license with my code.

Unfortunately, we love software licenses like we love standards-- that's why there are so many of them. And what, exactly, are the differences between all these licenses? How do you select the correct license for your software? I've attempted to succinctly capture the key differences between the most well-known software licenses in the following handy chart.

Source License Clauses
No license Open None 0 Without a license, the code is copyrighted by default. People can read the code, but they have no legal right to use it. To use the code, you must contact the author directly and ask permission.
Public domain Open Permissive 0 If your code is in the public domain, anyone may use your code for any purpose whatsoever. Nothing is in the public domain by default; you have to explicitly put your work in the public domain if you want it there. Otherwise, you must be dead a long time before your work reverts to the public domain.
GPL License Open Copyleft 12 The archetypal bearded, sandal-clad free software license. Your code can never be used in any proprietary program, ever! Take that, capitalism!
LGPL License Open Mostly Copyleft 16 GPL with a cleverly-constructed pressure valve release. Your free software can be binary linked to proprietary programs under certain very specific circumstances.
MIT/X11 license Open Permissive 2 Short and sweet. Includes generic legal disclaimer of liability.
BSD License Open Permissive 2 Short and sweet. Includes legal disclaimer of liability with explicitly named organization.
Apache License Open Permissive 9 Requires derivative works to provide notification of any licensed or proprietary code in a common location.
Eclipse Public License Open Permissive 7 Business friendly. Allows derivative works to choose their own license for their contributions.
Mozilla Public License Open Weak Copyleft 13 Allows liberal mixing with proprietary software.
MS Permissive License Open Permissive 3 Resembles the MIT and BSD licenses. Not formally accepted by OSI, and also offered in a "Windows-only" LPL variant.
MS Community License Open Copyleft 3 Resembles the GPL license. Requires all contributed code to be returned to the community. Not formally accepted by OSI, and also offered in a "Windows-only" LCL version.
MS Reference License Proprietary Read Only 3 You can review the code, or make copies of it, but you can't use it or change it in any way. Allows a window (no pun intended) on formerly completely proprietary, secret code.

After compiling this table, I've learned two things:

  1. My head hurts.
  2. I still prefer the WTFPL.

I'm not even going to get into the many religious issues of software licensing, such as...

It's a minefield, people. All I'm saying is this: the next time you release code into the wild, do your fellow developers a favor and pick a license-- any license.

Posted by Jeff Atwood    View blog reactions

 

« Mouse DPI and USB Polling Rate Firefox as an IDE »

 

Comments

Ha! That WTFPL license is nice.

You do realize that thing at the top is actually some kind of license from Russian bureau of nuclear and radiation safety (or something like that)? Looks scary.

Anton Dubina on April 4, 2007 03:07 AM

Thank you for that nice Information about this license

http://blog.diehl-information.de/frmBeitragAnzeigen.aspx?Nummer=394

VolkerD on April 4, 2007 03:22 AM

hey you, is this blog licensed by WTFPL? just kidding. =]

Theses licenses are TOO weird, I prefer the 'normal' license.. 'The source is mine, is private and you must not mess with that'.

Mr.K on April 4, 2007 03:42 AM

I thought that GPL CAN be used in proprietary software.
The "only" limitation is that binary distribution of GPL derivative work has to coincide with source GPL.

If I understand this correctly GPL derivative work can be used in some web-server or an internal research project as long as there is no binary distribution of the project.

Dan on April 4, 2007 03:48 AM

The BSD license actually has three clauses. And that's the “new BSD license”, aka the “three-clause BSD license”; there's an older BSD license, deprecated by Berkeley, that includes an “advertisement clause”. See the Wikipedia article you linked to.

Peter Hosey on April 4, 2007 04:07 AM

That picture of license is actually license allowing company to develop equipment for nuclear stations.

cwiz on April 4, 2007 04:07 AM

"GPL ... Take that, capitalism!"

This makes the oft-repeated mistake that a copyleft license, by ensuring that every user can take the product to anyone they like for improvment, thus encouraging a level competitive playing field for those services, is somehow *against* capitalism.

It takes a whole lot of delusion about what capitalism means to think that *encouraging competition* is somehow against capitalism.

bignose on April 4, 2007 04:11 AM

@bignose: Capitalism isn't about competition, it's about making money. It's much, much harder to make money by writing software under the GPL.

Real capitalists - the ones who actually make lots of money - know that the end point of competition is to destroy all the other competitors.

Angus Glashier on April 4, 2007 04:35 AM

Beer-ware license FTW!

http://en.wikipedia.org/wiki/Beerware

haugland on April 4, 2007 04:58 AM

Speaking as an open source developer about to release a framework into the wild, I have been thinking about licenses a lot lately too. At this stage I may opt for the BSD license as it is permissive, meaning that my framework can be used in comercial, propriety software, most of which I will be producing myself, so I will need to ensure that I give myself correct permission to use my own open source framework in my non-open source commercial applications (or something to that effect!).

john on April 4, 2007 05:11 AM

GPL promotes evolution, but not capitalism.

GPL allows a popular product to develop an unnatural saturation which diminishes market value.

GPL allows a popular product to evolve at such a rate that could cause potential users to become timid about adopting the product.

GPL allows an unpopular product to stagnate which diminishes the ability to "coerce" the end user to spending money on upgrades.

And in case you are still not convinced...
GPL is the devil.

The money to be made with GPL is in the software maintenance contract for a product after it's developed, not the actual development of the product. Given a choice of getting $1 from 1000 people or getting $1000 from 1 person, prudence says to spread the risk and take the $1 from 1000 people.

Big Hairy Chicken on April 4, 2007 05:19 AM

My proposed license for computer programs:

Clause 0.) You can use this program for anything
Clause 1.) It's not my fault if something goes wrong
Clause 2.) If you want to distribute this program, you have to distribute everything that _you_ got with it
Clause 3.) If you want to copy something, you've got to give me credit. If you modified it, you have to give me credit for the base code.

Simple, to the point, and NO legalese!

gjsmo on April 4, 2007 05:43 AM

> I'm not even going to get into the many religious issues of software licensing [...]

But... These issues are the most important ones! Why else so many people would like to make religions out of them? Sure, there's no possible way to end such a debate, which can get annoying, but they get you out of one's narrow minded technical view and offer you perspective on the actual impact writing software can have.

As the old saying goes, if you don't care about politics, politics will take care of you.

Lieutenant Dong on April 4, 2007 06:39 AM

I like (and generally use) the Creative Commons licenses. Easy to understand for everyone involved.

Eric on April 4, 2007 06:41 AM

@Angus Glashier: While you are correct that capitalism is about making money (that's why it's called capital-ism: see http://en.wiktionary.org/wiki/capital#Noun), you are incorrect in saying that serious money cannot be made in selling free software (e.g.: software released under the GPL). How do you explain Red Hat's success? Yes, it is less common for a successful company to be successful due to free software due to the freedom to redistribute the software. However, that doesn't mean it's not possible.

Here's a hypothetical for you: Let's say Internet Explorer wasn't freely available from Microsoft (pre-installed, whatnot). You're walking through your local computer shop, and you see IE CDs. Right next to those, you see Firefox CDs. (Yes, they exist: http://store.mozilla.org/product.php?code=MZ9008) Which would you pick? Sure, you could just opt to download Firefox at no cost online, but what if Mozilla didn't offer it for download at no cost? Most people don't know how to compile source code, and I'd venture to say that most people would trust an official release directly from Mozilla over a binary on a P2P site.

Of course, this assumes you're using Microsoft Windows, because if you were using a free operating system, then you could just install Firefox (or a derivative) via a built-in package manager from a remote repository. I never claimed hypotheticals were perfect.

Christopher Parker on April 4, 2007 06:55 AM

john, you can actually legally relicense your own works. Been done many times for many reasons, sometimes to a more restrictive or proprietary and sometimes to a more open license. The conditions as far as I know are that you have to have the consent of everyone who non-trivially contributed; if anyone doesn't consent, you must remove and rewrite in your own way their contributions. (Some will bypass this step, figuring that getting a little flak and grousing if discovered beats recreating half your code. They're usually right, far more care whether it works than what license you have.) This goes for dual-licensing as well. Or just add a clause to the end of the GPL, "John Collins and any software developed by him is exempt from this license." The JGPL! =p

Starting out on the right foot is always the way to go, but I thought you'd like to know.

Foxyshadis on April 4, 2007 07:10 AM

Jeff's main point here seems to be that there are too many licenses, and having to read them all and figure out what exactly they all mean is a major PITA.

I came to that same conclusion a few years ago. That's why I don't think anyone should be writing new licenses. Just stick to the least-bad well-known license.

For the last 5 years, I have stuck to the following three licenses for all my needs:

GPL - For stand-alone apps only.
GPL with blanket linking permissions (GMGPL)- For libraries, APIs, and the like.
Public Domain - For sources that I want to be usable (perhaps by me when working on company time!) even when pasted into another source file.

I know the WTFPL-dude thinks there are problems with Public Domain assignments outside of North America. Frankly, if Romania or Botswana have their laws that screwed up, they can fix them or suck eggs as far as I'm concerned. :-P

You may not find any of these licenses perfect, but you won't have to spend half an hour reading and parsing them figuring out what they allow you to do. They cover every development need I ever have. They also have the advantage of all being officially GPL - Compatible Free Software licenses (see http://www.gnu.org/licenses/license-list.html#SoftwareLicenses )

I *don't* use downloaded software without reading and understanding the license first, so anyone who uses some new license I'm not familiar with, when one of the old ones would have done, is wasting my time.

T.E.D. on April 4, 2007 07:18 AM

My own software license (yes, I have actually used some version of this in software I produced long ago). I call this the DBML (Don't Blame Me License). It's VERY muck akin to "Works On My Machine":

This software is released as-is for the general good. It may be used without permission for any reason as long as my name is contained in the documentation somewhere. I don't care if it's highly visible or not. I claim no responsibility for damages that may occur to any person, place, thing, idea or noun through the direct or indirect use, misuse or disuse of this product. Caveat lector.

-- Yes, I'm aware "Caveat lector" means "Let the reader beware" and that Caveat emptor is "Let the buyer beware".

Jae on April 4, 2007 07:28 AM

Good article, but your description of the LGPL is far more onerous than it ends up being, and it's quite practical to use the LGPL in a commercial project (Apple uses KDE's WebKit for Safari, for example). The rules are:

1. Use the library in .dll/.so/.whatever-apple-uses; don't statically link it

2. If you make your own tweaks to the library itself, send those tweaks back to the original author, preferably in Unified diff format. That's not so hard/capitalism-hating, and it'll get your company street cred.

Paul Betts on April 4, 2007 08:05 AM

GPL is actually probably the best license for capitalism. With the GPL, you can release your software for free use by the free software world, and charge people who want to license it for commercial use. This is the most viable free software business model I've seen (closely followed by charging for support), and it's used by a large number of companies.

It also forms a least-common denominator for license compatibility. If you use a GPL-compatible license, and Bob uses a GPL-compatible license, and Sue uses a GPL-compatible license, I can take the code written by all three of you, and combine it into a single project under the GPL. GPL-compatibility is essential for any free software license.

It's also a safe license to use early on, before you've evaluated other licenses -- it is by far the strongest license, legally (it's been evaluated by massive numbers of lawyers), and it doesn't give too many rights. If you want to use a more permissive license later, you can. If you release under a more permissive license, and find that you don't like it that someone is proprietizing your code without paying you, you can't take back the rights already released (you can for future code releases, but the anyone who downloaded the original once can use it under the earlier license).

The only licenses really worth considering are: Proprietary, GPL, LGPL, MIT/X (or the new/rewritten BSD), public domain. These go in increasing order of permissiveness. This gives maximal compatibility with existing free software code, makes for a well-tested license, and lets people know how you're licensing your code without having to read a bunch of legal fine print.

Peter on April 4, 2007 08:10 AM

Jeff didn't even scratch the surface on how many licenses there are. Sign up at Sourceforge and create a new project. Look at the drop down of license types. And that's not even counting the different versions of each license. God forbid you work for a company and decide to release a library or application to the public. Then you get the "technology transfer" people involved.

Most developers will spend more time deciding on which license to use and figuring out the difference between all of the licenses than they will developing the app they want to license.

Scott on April 4, 2007 08:20 AM

Eh, I just use a very simple approach for things I make on my own time or am allowed to release: If I use Qt/KDE, it's GPLed out of necessity. If not, I just put it under MIT/X11. Problem solved.

Tyrannicus on April 4, 2007 08:41 AM

By not choosing a license, you have what Mr. K mentioned above. Whatever license you choose, you, as the author, still have copyright. The license only specifies what *others* can and cannot do with the software. If the license doesn't mention if you can do something, then you can't do it.

Personally, I'd choose GPL because it gives me the best chance to get some money out of Microsoft should they want to use my code. Anybody else, I just wouldn't charge as much. After all, I *am* a capitalist. :)

Buck on April 4, 2007 08:49 AM

To add to the confusion, there are multiple versions of GPL.

GPL *can* be used in proprietary software. Just add Google. It only requires you open up your changes to the code if you distribute your product. So if you use GPL for a webservice, you're covered.

Well that is if you use GPL v1 or v2.

Early drafts of GPL v3 attempt to revert this by requiring give back when code is "released" as a web service. This is controversial and I don't know if they'll keep it or not.

Haacked on April 4, 2007 08:58 AM

What about the various permutations and combinations of the Creative Commons licenses? Why did you ignore them??

Jim Howard on April 4, 2007 08:59 AM

I use the zlib license ( http://www.gzip.org/zlib/zlib_license.html ) for all my libraries, since it's simple, to the point, and permissive. The GPL is used for programs, because it's the de-facto standard Free Software license.

Anonymous on April 4, 2007 09:03 AM

I've never understood the whole argument about "leave my name in the source code" - heck, I've written quite a few lines of code that I'd rather someone else took the blame...errr...credit for.

David H. on April 4, 2007 09:12 AM

I don't think you're clear enough about the problem of releasing code without a license.

A lot of developers mistakenly believe that licenses are only used to prevent or control how others use your code. They incorrectly assume that when they distribute code without a license, they've given the code away.

In fact, licenses are necessary to give others permission to use your code.

The problem is that releasing code without a license only does one thing - it declares a copyright without explaining how others can use your code. Experienced developers and development teams know to stay away from unlicensed code because they have no legal right to use it; who wants to waste time on code that can be taken away at any time?

Code sharing sites have gotten a little better about helping users pick a license, but they still have a long way to go. If you actually read most of the license on CodePlex, they still have template names left in. How many BSD licenses still confer copyright to Berkley? Code sharing sites need to move to a wizard style approach which helps you pick a license that fits your intent. Even better would be if the OSI offered license picker similar to what Creative Commons uses: http://creativecommons.org/license/

Here's my post on CodeProject's lack of licensing:
http://weblogs.asp.net/jgalloway/archive/2006/08/16/CodeProject-_2D00_-Avoiding-software-licensing-makes-for-a-very-bad-license.aspx

Jon Galloway on April 4, 2007 09:13 AM

@David H.: FWIW, in DBML I leave the "leave my name in the documentation" because at the time I wanted to see where my code wound up as it wandered this wide wild world. Sort of akin to wheresgeorge.com or that one company that encourages you to put a tag in a book and leave it somewhere it can be picked up for free and registered online to see where it has been.

Now I don't care.

Jae on April 4, 2007 09:18 AM

> I like (and generally use) the Creative Commons licenses.

I researched this. Creative Commons does not apply to source code. It's only for other forms of media created by people (writing, art, music, etc).

http://wiki.creativecommons.org/FAQ#Can_I_use_a_Creative_Commons_license_for_software.3F

http://jay.tuley.name/articles/2006/03/27/5-reasons-not-to-choose-a-creative-commons-license-for-code

---

Creative Commons licenses are not intended to apply to software. They should not be used for software. We strongly encourage you to use one of the very good software licenses available today. The licenses made available by the Free Software Foundation or listed at the Open Source Initiative should be considered by you if you are licensing software or software documentation. Unlike our licenses -- which do not make mention of source or object code -- these existing licenses were designed specifically for use with software.

Creative Commons has “wrapped” some free software/open source licenses with its Commons Deed and metadata if you wish to use these licenses and still take advantage of the Creative Commons human-readable code and Creative Commons customized search engine technology. You can find more details here.

http://creativecommons.org/license/cc-gpl

Jeff Atwood on April 4, 2007 09:36 AM

So jeff, you ever plan to open up your blog with a Creative Commons license?

Speaking of which, I mentioned in my blog post today that it is a good idea to license code snippets in a blog differently from the main blog content.

http://haacked.com/archive/2007/04/04/there-are-only-four-software-licenses.aspx

For example, you may want to reserve all rights to your writing, but release code snippets as public Domain or under a more permissive license such as a Creative Commons or Open Source license.

Haacked on April 4, 2007 10:23 AM

This is why my hobby stuff is all public domain. It's a more formal-sounding "do what the fuck you want" license.

Noah Gibbs on April 4, 2007 10:29 AM

If you truly (as I) believe that WTFPL would be the best default. Why not join your local Pirate Party and fight for it?

http://www.pp-international.net/

Now regarding GPL and capitalism.

If you take capitalism to mean hoarding of exclusive right to the means of production, yes GPL is anti-capitalism. If you think of capitalism as another name for free market, GPL is VERY pro free market (as it's purpose is to stop monopolies).

http://mutualist.blogspot.com/2005/01/definitions-and-distinctions.html
http://mutualist.blogspot.com/2005/12/socialist-definitional-free-for-all_08.html
from
http://mutualist.blogspot.com/2006/12/free-market-anti-capitalism-compendium.html

John Nilsson on April 4, 2007 10:34 AM

One nitpicky comment:

>

I would slightly amend this statement: do your fellow developers a favor and pick a COHEARANT license. I see a lot of people just rattling off something official sounding at the top of their code, often resulting in unclear, vague licenses that are actually worse than having no license at all.

Case in point--this code project article:

http://www.codeproject.com/cs/media/ManWMF.asp

...and this shitty license:

// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
// KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
// PURPOSE. IT CAN BE DISTRIBUTED FREE OF CHARGE AS LONG AS THIS HEADER
// REMAINS UNCHANGED.
//
// Email: yetiicb@hotmail.com
//
// Copyright (C) 2002-2004 Idael Cardoso.

At first glance, this license seems unrestrictive, but the clause "IT CAN BE DISTRIBUTED FREE OF CHARGE AS LONG AS THIS HEADER REMAINS UNCHANGED." is actually extremely restrictive. The license says nothing about modification, derivative works, and is actually incompatible with a number of other licenses.

In any event, the author's mistake here is not going with a standard, known license. I suspect he was going for something sort of like an MIT license, but ended up with something that makes almost no sense at all.

For what it's worth, I agree with the tone of this blog posting: licenses suck terribly, but nothing sucks more than people who vomit some official sounding rubbish at the top of their source files and expect other people to bother trying to parse cryptic clauses.

Jeremy Noring on April 4, 2007 11:00 AM

Or the license was meant to say exactly what is says. Which is similar to creative commons: by-nc-nd.

http://creativecommons.org/licenses/by-nc-nd/3.0/

John Nilsson on April 4, 2007 11:18 AM

"Speaking of which, I mentioned in my blog post today that it is a good idea to license code snippets in a blog differently from the main blog content."

Now I gotta license my code snippets in my blog posts?

Oh f*$k it all.

Scott on April 4, 2007 11:59 AM

Do a search for this:

software license agreement "nuclear facilities"

There is an almost endless list of software licenses that match this. It's just no fun working at a nuclear power plant.

Chris L on April 4, 2007 12:05 PM

@Scott - You don't have to license code snippets in your blog posts unless you want people to actually use them. It's simple enough to put a note in your footer that says "all code is public domain unless otherwise stated".

Jon Galloway on April 4, 2007 12:09 PM

Actually, copyright doesn't cover "using" the code, it only covers... well, copying. If you receive a piece of code under no particular license terms, you are free to run that code, but not to copy, distribute or modify it (excepting those purposes covered by fair use).

Of course, since executing the code can cause a copy of it to be made in your computer's memory, it's arguable that there's a violation, and most proprietary software includes a EULA which imposes uses restrictions, but nothing in copyright law imposes such restrictions by default.

James Bennett on April 4, 2007 12:21 PM

Another of my favorite licenses:

Here you go, it's your problem, now!

Jae on April 4, 2007 12:34 PM

If you prefer the WTFPL license so much, why do you require those who ask to use your code to keep your name and url in the comments?

Ed on April 4, 2007 01:45 PM

Continuing my comparing anything to anything else theme: Software Licenses are like a**holes.

Some are more liberal in what they accept than others.
Some allow use for profit. Others allow only non-profit usage.
Some allow them to be used for anything at all. Others restrict usage to a specific set of circumstances.
Some encourage sharing. Others are closed.

Brendan Dowling on April 4, 2007 02:29 PM

Does not compute.
I dont understand any of that, at all. Though this is a eye
opener. I learn something every single time I visit this blog.
I keep forgeting to check it because I keep running out of time.

CF on April 4, 2007 02:40 PM

Isn't releasing works as public domain a gray area? There are no specific provisions for people to do so whereas it's clearly defined that any work released is copyrighted. If someone releases some code as public domain and someone else uses it and the other guy changes his mind, they'll have to duke it out in court. If that person had instead licensed it under open-source, then the person who wants to take it back won't have any leg to stand on.

Anonymous Coward on April 4, 2007 03:23 PM

Where did you find the picture of the Russian document?

Charles Pergiel on April 4, 2007 04:07 PM

Jeff, THANK YOU. Finally someone made a short, human-readable list of sofware licenses. I cannot count the hours I've spent googling for something like this. I just hope this post gets indexed by Google and shown next time somebody googles for "software licenses list WTF help confused".

Domagoj Klepac on April 4, 2007 04:15 PM

Licenses are no good if no one enforces them, but enforcing them is very difficult. I wrote a blog post on the topic recently...
http://mediumbagel.org/nucleus/2007/03/26/what-good-is-a-license-if-you-cant-enforce-it/

Thomas Cort on April 4, 2007 05:30 PM

How about the Woody Guthrie Public License (WGPL)? "Anybody found using this code without our permission will be mighty good friends of ours."

Kevin Carson on April 4, 2007 11:16 PM

Jeff, thank you for campaign against illiteracy :-)

Maxim Shostak on April 5, 2007 01:07 AM

The picture in your post is a Russian license for production of hardware equipment to use in nuclear power station and was issued by the Russian committee for atomic and radiation security, so it has nothing to do with software :-)

Denis Bez on April 5, 2007 02:42 AM

Yeah, and it's not meaningless. ;-)

Anton on April 5, 2007 04:10 AM

Please please please DO NOT release code into the public domain.

No, I’m serious.

The public domain is a legal construct that exists in the U.S. and a handful of other jurisdictions; most of the world has no direct equivalent to “placing things in the public domain”. If you do that, your code will be *harder* to use for a lot of the world. Please use an actual licence on all of your code. The MIT licence is a fine default but the WTFPL will do fine in a pinch.

@ Jeff: it would be nice if you updated the entry to include a notice to this effect.

----------------------------------------------------------------------------------

Personally, I have yet to see a licence for small stuff that I really like. I use the MIT licence for any larger pieces of code such as utilities – anything that’s useful in itself and can be compiled and used by an end user as is. The requirement to retain the copyright notice is no burden in that case. For small pieces of code, eg. stuff posted in a forum, though, that clause is way too much. OTOH, the WTFPL is too loosely defined for my taste. I’d like a lawyer-vetted text no longer as the MIT licence, preferrably shorter, with three clauses:

1. Do whatever you want with it. (Read: what it says.)
2. If it breaks, you get to keep the pieces. (Read: disclaimer of liability.)
3. Do not credit anyone but me for the work. (Read: don’t claim it’s yours or your brother’s; but no need to credit me.)

The central principle of that construct is “minimising obligations”. I accept none for releasing my code, and I am not going to impose any on the recipient either – not even to retain a copyright notice. Of course in practice, the “don’t claim it’s yours” clause would require people to disclaim authorship of the code if they include it in something they release – the obvious approach to do that is to credit me, but it’s not a requirement. A single sentence – maybe less – would suffice in any case, which is only a minor burden if they’re releasing code anyway.

Aristotle Pagaltzis on April 5, 2007 04:42 AM

One thing to note regarding public domain software.

Any software created by a US Government employee is considered public domain software. The only thing that would preempt a citizen from getting the source code would be some type of security related code or coupling to the softwares security scheme.

If you read deeply into Freedom of Information Act (FOIA) you can find the guidelines you need follow.

The civil servant world tries to keep this as quiet as possible because that is how they can justify their existance. Honestly speaking as a civil servant IT guy you probably don't want our code.

You should hear management get bent out of shape when this subject comes up.

Marko "The Pollo"

MarkM on April 5, 2007 07:52 AM

@Angus Glashier: Interesting that you can have opinions without actually knowing anything.

Yes, Sun is anti-capitalist.
Yes, Novell is anti-capitalist.
Yes, IBM is anti-capitalist.
Yes, Oracle is anti-capitalist.
Yes, HP is anti-capitalist.

Microsoft is about the only large company making serious cash from shrink-wrapped software.

If you find a profitable niche, Microsoft will use its monopoly power to take you out. The GPL (along with other free software licenses) provide for a business model that is not only different, but better. And it's the only way you can compete with Microsoft. You just have to be better when using the GPL, man, that's anti-capitalist.

Interestingly, Richard Stallman supported himself when he began his push for free software BY SELLING GPL SOFTWARE. Big talk from someone who knows nothing.

lmf on April 5, 2007 09:03 AM

@MarkM

Is there anything about non-U.S. citizen (i.e., foreign) entities using such software? Is there any interesting software that exists under such license?


Brendan Dowling on April 5, 2007 02:27 PM

@Denis Bez: I was wondering if someone was going to translate that... thanks!

Jae on April 5, 2007 02:35 PM

When I first heard about the GPL I just sighed and thought "commies...".

But then I realized that hey, if someone wants to distribute their software under the GPL, then why shouldn't they be allowed to? It's not like the FSF is campaigning for a law that says that all software must be GPL. If it is capitalist or not I don't care. It is about individual freedom, and the FSF doesn't infringe on mine.

And a nitpick on the LGPL:
"GPL with a cleverly-constructed pressure valve release. Your free software can be binary linked to proprietary programs under certain very specific circumstances."

The C standard library for Linux is LGPL, and is used pretty much everywhere by everyone. A short summary is that the LGPL says that if you change the library itself ("a work that is derived from the library"), then those changes are under the LGPL, but if you just link with the library ("a work that uses the library") then you can license it anyway you want. (Yes, there is a gray area here - but that's for the courts to clarify.)

tcliu on April 6, 2007 03:42 AM

And don't forget boost license, it is fairly known in c++ community.

count0 on April 6, 2007 04:52 AM

This is an interesting discussion. While I have no particular comment on what you as software developers may want to use as your licensing, If you want to track and manage the licenses you are using, then you may want to check out Black Duck Software. We provide software and services which inventory your code for a given project, present the associated licenses, and point out areas where licenses may be in conflict.

More information is available at www.blackducksoftware.com

Laura on April 6, 2007 05:37 AM

No license means no use? I guess that means that if you release software with no license then it is useless software!

rabid wolverine on April 6, 2007 06:18 AM

"... permission is always granted with the single caveat that my name and URL remain in the comments."

"I still prefer the WTFPL."

WTF?

Kamran on April 6, 2007 10:58 AM

I love the WTFPL :)

Now, a serious question for those who are extolling using the gpl style license and making money by selling support. How would this work for a small shop that makes handy utilities and tools like "Beyond Compare" that are well worth the money?

Please, this is not meant as a troll but as a serious question.

Chris on April 6, 2007 11:26 AM

Chris: I don't have enough data to back up anything here, but if you want an imaginary scenario - here it is:

You sell "Beyond Compare" (BC). Include source code under GPL. Will people re-distribute it and put you out of business? Maybe, maybe not. Remember, re-distributing it takes time and energy, too. Your advantages are that (1) people can always get the latest and greatest BC from you. (2) Anyone implementing their own bugfixes will probably want to get the patches into the main branch and give them to you.

I have no idea if this would work. It all hinges on it basically not being worth the effort to distribute BC for less than $30. Maybe, maybe not. I don't really think you can make any money out of selling services when you have no services to sell, and don't have the manpower to sell them even if you had.

Ultimately the choice of license is a (business) decision where you have to consider what you want to achieve. For example, FSF released the C standard library under the LGPL because they wanted it to be used by everyone, and that the freedom of the code had to take a back seat to that concern.

Another related idea: What you can do, however, is partially open the code. (Remember, it is your code, so you can license different parts in different ways.) Here you may find it working for you. One example is a photo management software package that I use. It was quite cheap, and written by one heroic programmer. Well worth the money. But: it has about a million little faults that I know I could fix in five minutes - if I had access to the code. But I don't, and so I have to petition this one poor guy who is already doing 18+ hour days to fix the faults I've found.

Now, I would be fine to contribute back the changes for free. But let's say that the app was split into a proprietary kernel and a host of GPL plugins. I could now fix the problems (in the GPL'd plugin), yet the original author would run no risk of me putting him out of business (since I can't distribute the kernel). This would be like a company both distributing a closed-source OS (the kernel) and a GPL'd software suite (plug-ins) on top of it.

Ultimately, you have to understand your business model, understand the license, and decide what you want to do. Just slapping the GPL on it and "selling services" is not a business plan any more than "selling stuff" is.

tcliu on April 6, 2007 01:07 PM

I deal with a lot of student coders, in a chatroom environment, that are trying to teach themselves. Mostly kids.

There is a tendency among them to want to become 'CopyPasta' coders, copying and pasting all kinds of stuff they find into one big Frankenstein's Monster application full of bugs they don't understand and can't begin to fix because they don't understand the original code.

To avoid that, any code examples I give them comes with an 'LOL' (Learning Only License):

You may use this code freely for any purpose, as is, or modify it in any way you choose, redistribute the original code, and/or redistribute any modified version, providing you do the following:

1. Read through the code completely and all of its comments.
2. Attempt to understand how it works.
3. Learn something from it.
4. Do not hold the original author or the author of any modifications responsible for any bugs in your application that are the result of you not understanding the code.
5. Do not hold the original author or author of any modifications responsible for bugs in your application that are the results of the author's mistakes. (Nobody is perfect. We all make mistakes. Nobody knows everything.)
6. If a bug is found in the original code or any modifications, you will attempt to contact the responsible author and report it, and explain what is wrong with it and why it is a bug, so that the responsible author may learn from your experiences.
7. Keep the author(s)'s contact info within the original or modified code so you can remember where it came from and who to report any bugs to.
8. Do not redistribute the original or modified code unless you understand it fully and can answer any questions the person(s) you give it to may have about it.
9. Do not redistribute a modified version of the code without clearly marking the modifications you have made and adding your contact info in case you have introduced a bug into it and the recipient needs to contact you to report it.
10. Do not get an bad attitude with anybody reporting bugs in your original or modified code.
11. Attempt to fix any bugs that you are responsible for, seeking help to do so, if necessary.
12. Include a copy of this license with any source you distribute that contains the original or modified code. A copy of this license does not have to be included with any binaries if they are not distributed with the source code of that binary.
13. If you make a million dollars from your application that contains the original or modified code, you will attempt to contact the author(s) and thank them for their help.

app on April 7, 2007 11:42 AM

I've linked to this article from the Compatibility page of the CCD CopyWrite website: http://ccd.apotheon.org/compat.php

I intend to provide a somewhat more useful (in terms of the CCD CopyWrite license) description of the differences between these licenses than is present here. While it will not be directly based on your comparison, it is inspired by it, and as such I wanted to give you credit where it's due. Hopefully you won't have any objections, but if you do I'd like to know about it.

If you wish to contact me directly on the subject, feel free to use my contact page on the CCD CopyWrite website. I will respond promptly.

apotheon on April 19, 2007 03:05 PM

The Fair License is short and a little strange and OSI approved. http://opensource.org/licenses/fair.php

Usage of the works is permitted provided that this instrument is retained with the works, so that any entity that uses the works is notified of this instrument.

DISCLAIMER: THE WORKS ARE WITHOUT WARRANTY.

I'm not sure the disclaimer is necessary, at least in my jurisdiction.

Jon Mayo on December 29, 2007 02:04 AM

@tcliu: the GNU C library is not LGPL. It's LGPL plus extra exceptions.

Nicolas on February 22, 2008 07:12 PM

Wait, I misread. Actually, I kind of mixed up two different comments...

Nicolas on February 22, 2008 07:15 PM

Is there anybody who knows where i can get absolute free autoCAD 2007?
my email is mwania07398@itc.nl

michael on April 2, 2008 06:51 AM







(hear it spoken)


(no HTML)




Content (c) 2008 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved.