Hacker News new | comments | show | ask | jobs | submit login
Why you should use a BSD style license for your Open Source Project (freebsd.org)
59 points by pooriaazimi on Dec 29, 2011 | hide | past | web | favorite | 54 comments



The GPL is a complex license so here are some rules of thumb when using the GPL:

you can charge as much as you want for distributing, supporting, or documenting the software, but you cannot sell the software itself.

I don't believe this is correct. You can sell the software.


I think the writer is defining "sell" as "give somebody an exclusive right to use it" or "allow people to use it only if they agree to your terms". After all, that's what it usually means to sell proprietary software.

Since any program that contains GPL code must be open-sourced, it's impossible to grant anybody a right to use it at the exclusion of everybody else, or to prevent people from using it against your will.

A very poor choice of wording, though.


"Actually, we encourage people who redistribute free software to charge as much as they wish or can. If this seems surprising to you, please read on."

http://www.gnu.org/philosophy/selling.html


You can't sell the software in the sense that you can't sell the permission to use the software. Somebody can use the software if it was distributed to them by someone who you distributed it to, for example.


More correctly, "you cannot sell just the software by itself" because as soon as you transfer the software, the receiver also gets the right to demand of you the source code.


Yes I think you can sell the software but you must make the source available. I'm not sure how this is different from charging for distribution, from a practical standpoint.


Make the source available to the purchaser, not necessarily public I think, right?


IANAL, but my understanding is that anyone who obtains a GPL'd binary is entitled to receive the source as well, from the source that provided them with the binary.

If you are careful with who you distribute the binary to, you could in theory keep the source sort of "secret", though I don't think it's a good general approach to GPL software.


And after receiving that "secret" source the customer can just upload it to its website and give away to the world for free.


For GPLv2, it depends. If you distribute the source with the binary, you don't need to give the source to third parties. If you provide a written offer for the source, that offer must be good for all third parties whether they've received the binaries or not.


I think to anyone who requests it, within a reasonable period of time, for at most a reasonable fee to cover your expenses for sending it to them IIRC.


Correct, unless someone asks for it, I believe.


You can sell the software, but it must remain open source. Of course, GPL can also be conjoined with any other license. Your project can be offered as GPL + Commercial$$.

It's an elegant solution for many projects: Highcharts, extjs, mysql, neo4j...


right. You can sell it, but don't expect to keep selling it as a long term business.

Why? Anyone that purchases a single copy can re-compile and re-release to the world for free. In addition to this, anyone can share it for free and it's allowed by the license.

If your app has any popularity it all, you will slowly lose your customer base because it's too easy to generate free competition (you will essentially with an exact duplicate of your software for free, and it's legal), unless of course you want to become a support company. Support might work for larger companies, but doesn't scale well at all for a one-man shop.

It's quite obvious to me that Stallman doesn't want you to be able to charge for software, due to the very nature of the license.

He has said when questioned that support is a viable way to make money from "free software". I don't know about you, but I don't want to run a support company.


> Anyone that purchases a single copy can re-compile and re-release to the world for free.

I have licensed a lot of custom-built software under the GPL (because I used GPL'ed bits and pieces). None of my clients ever redistributed their software, most likely because they considered it a competitive advantage. Think about it for a moment and you'll realize it's not a big problem. For me, it's an advantage, because I could reuse the code I did in other projects, something I wouldn't be able to do if I didn't license the code under the GPL in the first place.

> Stallman doesn't want you to be able to charge for software

No. What he doesn't want is that programmers are able to restrict freedoms of their users. BSD allows that. GPL forbids that.

In other words, he fights for the users. ;-)


"None of my clients ever redistributed their software, most likely because they considered it a competitive advantage."

This kind of thing can get really ugly in M&A situations.

I love FOSS, but it can lead to some unexpected and unpleasant outcomes, even for seasoned veterans of software development and business. As soon as you're faced with "redistributing" key software to potential bidders so they can do their homework on your company's technical, operational and financial merits, you're in copyleft land, like it or not.

Don't get me wrong – I'm not an agent of FUD when it comes to FOSS. I just doubt that most consultant developers are thinking about advisors, accountants, lawyers, private equity, investors, executive and board candidates, etc. when they decide to incorporate GPL'd code.

Personally, I think the GPL is a rather poorly-drafted license, and the concept of "distribution" is right at the heart of the issue. Fortunately, its relevance is waning from my point of view – fewer clients showing interest, and I certainly haven't needed anything that wasn't under MIT/BSD in a few years.


> As soon as you're faced with "redistributing" key software to potential bidders

Yes. You have to be very careful with distributing binaries. Have a lawyer at hand, always.


> I have licensed a lot of custom-built software under the > GPL (because I used GPL'ed bits and pieces). None of my > clients ever redistributed their software, most likely > because they considered it a competitive advantage

This makes sense if you're selling some niche code to businesses, but things like the Sveasoft Linksys firmware drama indicate that selling direct to users, especially technical users who understand and maybe already use the GPL, is a whole different world.


Yes, but Linksys is selling routers, not software. And basing their firmware on GPL'ed code presumably reduces cost and time to market. The same applies to Sveasoft.

Some people think they can have their cake and eat it too.

The price of using GPL is setting your users free.

edit: thanks for the corrections, narcissus


Shabble was talking about Sveasoft: a company that made their own firmware based on Linksys', but got stroppy when other people starting to distribute their 'fork'.


Oops... Sorry. Now I'm curious. I didn't follow the story. How did it end?


Ah, I thought it was reasonably common knowledge, so I didn't elaborate on it.

Essentially, Sveasoft (which is/was, iirc, a single guy) took the original Linksys firmware releases, and built some fairly impressive new features on top. His business plan involved selling subscriptions to receive updates on a regular basis, with the sources being made public (beyond the subscribers) after some embargo period.

What actually happened was that very few people subscribed, and immediately began posting the latest sources publicly (as permitted under the GPL), which resulted in Sveasoft threatening them with legal action, issuing C&Ds to anyone involved, and inserting more and more complicated tracking tokens and other booby-traps in the code.

I'm not sure if (how?) it's ended, but there is still activity on at least one of the anti-sveasoft sites: http://sveasoft.blogspot.com/

http://wrt54g.thermoman.de/#readingpleasure has a lot of the original stuff, I think.

I suspect it's mostly died down because there are now much more viable alternatives (DD-WRT, OpenWRT, Tomato, etc) than there were at the time, and nobody wants the hassle of dealing with it.

It does raise the issue (as mentioned in the licence article this thread is about) of dealing with the GPL on embedded devices, where most of the work is in kernel modules or statically linked binaries. The usual techniques which allow proprietary software to be segregated and interface with GPL code aren't really appropriate, and it's quite difficult to build such a thing.

Whether this is a good thing or not depends on your perspective, of course.


"What actually happened was that very few people subscribed, and immediately began posting the latest sources publicly (as permitted under the GPL), which resulted in Sveasoft threatening them with legal action, issuing C&Ds to anyone involved, and inserting more and more complicated tracking tokens and other booby-traps in the code."

Exactly point point. This is why you can't run a viable business selling GNU software.


No. That's why, if you want to sell software to your users without giving them the freedoms afforded by the GPL, you'll have to either write your own software from scratch or base it on one that uses a license that allows you to give your users an inferior set of rights.


I agree totally. As a sole proprietor the GPL certainly protects my interests and my customers are comfortable knowing they can always hire someone else to enhance or maintain the source. I'm surprised that as it becomes easier than ever to start companies that more programmers don't see this advantage. I believe it's primarily because the VC world is still attracted to the idea that "secret sauce" has monetary value, when the reality of course is that the secret sauce walks out the door every night in the head of some hacker.


"None of my clients ever redistributed their software, most likely because they considered it a competitive advantage."

In some cases, it works. How large is your client base? 20? 50? Did your clients even read the license or know that they have the rights to redistribute it?

If Photoshop were under the GNU, there would be a ton of free versions out there for anyone to download. Same thing with Windows or any other high-profile proprietary app.

Both those companies would slowly start to lose money until they just couldn't make a profit any longer. It then comes down to who has the bigger marketing budget.

"because I could reuse the code I did in other projects, something I wouldn't be able to do if I didn't license the code under the GPL in the first place."

Are you talking about other people's code? I can reuse all of my code in any project, regardless of the license.

"In other words, he fights for the users. ;-)"

He sacrifices the freedoms of the developer for the users. Also making it impossible to make a living by just selling software.

I personally don't ever use GNU code in any commercial projects. I prefer the BSD license because I can use code in any way and I'm not forced to give any of my future rights away as a developer.

I also have released many libraries and apps under the BSD license.


> If Photoshop were under the GNU, there would be a ton of free versions out there for anyone to download. Same thing with Windows or any other high-profile proprietary app.

The BSD license doesn't mitigate against this at all, so here you're arguing in general against open source. But more importantly, there are already a ton of free versions of Photoshop and Windows and Rosetta Code and any other popular application, regardless of their level of sophisticated DRM, just a few clicks away on your-favorite-torrent/filedump-site. The legality of this doesn't scare people. The binaries are free for them, yet somehow these companies are still in business...


It's true that a 3rd party may not charge what you'd charge and your income may decrease, but your costs would also decrease somewhat.

If another site hosts your software too, that's less potential load on your download servers to handle the actual number of users. With some hosting providers, this directly reduces the amount of money you spend on web hosting (whenever less bandwidth is consumed).

And even if a 3rd party hosts your software, they can't just take away your copyright and claim that they wrote the software themselves. The software remains associated with you so the 3rd party's hosting provides a bit of free advertising. Maybe you didn't spend money on advertising, but some people do; and you could arguably spend less if enough 3rd party sites make it known that your project exists.

This probably doesn't amount to much but my point is that 3rd parties aren't creating complete freebies; their actions do help a little.


I believe that a BSD-style license is generally good (personally I even prefer the WTFPL). In an ideal world, we wouldn't need licenses because nobody would be stupid enough to make proprietary software[1] or otherwise try to restrict the user's freedoms. We'd pretty much have implicit CC-BY or -Zero for everything and be done with it.

For now, we need the GPL to force change. BSD-style does not slowly force the ever-stuck-in-the-past industry to stop making inferior unfree[2] software. It will not prevent the same people from leeching off the efforts of the FLOSS community without giving anything in return (or even trying to sabotage our efforts with patents or similar nonsense).

[1] Yes, proprietary software is and always was an enormously stupid idea, probably up there with patents and copyright on the list of Most Ridiculous Bullshit In Human History.

[2] Free as in Speech.


Your comment is a good one. People are downvoting not because you aren't contributing, but because they disagree with you and are trying to silence your opinion. They forget that upvotes should be used to encourage discussion, and down votes used to remove comments that don't contribute. Hopefully, posting here will highlight your comment so others will take note.


It might also be that "in an ideal world nobody would be stupid enough," "an enormously stupid idea" and "most ridiculous bullshit in human history" aren't really arguments, and thus not really further the conversation.


That ignores the rest of the comment. So yes, if you ignore the comment as a whole, and choose to pick out specific parts of the comment, you can claim the entire comment worthless. But I disagree with that approach. With that approach, you've essentially become no better than someone who down votes someone for making a spelling mistake.


In my mind there's a huge difference between spelling _mistakes_, and _purposefully_ setting up a negative and insulting tone. There's no need to ignore the rest of the comment, when you think the overall language will do more harm than good.

I can accept that you find the language used to make a point not that important, but you should consider that not everyone might agree with that.


What this essay (from 2008) fails to point out as an advantage is that the GPL requirements have forced many device drivers to be released as open source. And hardware support is critical for an operating system's viability.

If a project is releasing frequently and often, such as the X Windows system did in the early days, and people want the features in the new releases, the overhead in constantly forward porting private, proprietary enhancements (whether they be I18N support or driver support) tends to encourage people who might be tempted to keep code to themselves to contribute it back to the mainstream codebase. But if the project releases too slowly, or tries too hard to keep internal API backwards compatibility, it can cause people to fail to contribute their changes back, and then the open side of the project stagnates.

This is something that Charles Hannum, one of the NetBSD founders, eventually realized:

http://onlamp.com/bsd/2006/09/14/netbsd_future.html

In fact, he observed that a non-copyleft license tends to encourage fragmentation, and what do we see happening with Android? With a GPL license, things like Touchwiz would be have to be released as source code. (Of course, with a GPL license, there's a chance handset manufacturers would have been scared off, which is why apparently Andy Rubin very early chose Apache instead. Personally, I don't believe that to be true, given that Android did use the Linux kernel, which was GPL'ed. But, he was the startup founder, and he didn't want to take that chance with his baby, which is totally understandable.)


I have some libraries on github with MIT and GPL licenses, I will release a major software soon. I am still not certain which one is the best license for my purposes:

-I want everyone to freely use and distribute it, if they are contributing back their source code to the me or the community.

- Except, I don't want my code to be used by patent-abusers/suers and their platforms (especially the patent war-lord Apple irritates me). I don't want them to suck my code like a black hole and avoid giving their code back to the community.

Would BSD/MIT or Apache or any variation of them help me in this case? Does GPL really help?


I don't think the BSD/MIT licenses will stop the patent-abusers from using your code because (as I understand them) they say "Here's the code, do whatever you want with it. Just keep the copyright notice on."

If you want to stop your code from being sucked into a black hole, a more "restrictive" license like the GPL would be your best bet. I would recommend the GPL because it's well-known and a lot of people have some idea of what the terms are, as opposed to something like the Apache license, which people might have to look up.


The GPL explicitly disallows revoking the license. It has occurred , however, that a company (Mattel) purchased a GPL copyright (cphack), revoked the entire copyright, went to court, and prevailed [1]

This may not be entirely accurate.

Background: http://tbtf.com/resource/cphack-history.html

Original slashdot comment: http://yro.slashdot.org/comments.pl?sid=4703&cid=1162803

Archive of one of the authors answering if cphack was GPL: http://web.archive.org/web/200102042331/http://www.islandnet...


Sort of off topic but the authors response is a bit insane.

>"The origin of the confusion is that in one source file in cphack (note that cphack is just one of the four main items in the cp4break package), there's a comment saying "Released under the GPL". There is also a similar statement in the onscreen "About" box."

But previously: "The suggestion that it might have been GPL surprised Eddy and I just as much as it did anyone else"

Really? They think that the suggestion that a piece of software which says "Released under the GPL" in the source code and similar things in the about box is in fact released under the GPL is surprising?

Then it goes on: "I think that doesn't mean much because saying "the GPL" doesn't really identify "the GNU General Public License version 2" as specifically as a copyright notice should."

A very strange argument. Are they really claiming that the author purposely wrote that it was released under "the GPL", but was referring to a different GPL (and never mentioned it)? Or is he trying to say that by keeping the language ambiguous, he can retroactively change the intention?

I'm not sure whether to interpret all this as ineptitude, stubbornness or deception.

Look, it is quite clear that they did not release it under the GPL, I'm not contesting that. But what they're claiming is quite ridiculous, and I feel like there must be more going than what they're writing.


According to some Apache is better: http://stackoverflow.com/questions/40100/apache-licence-vs-b...

I think it is too wordy though, and for 99% of projects, the MIT vs BSD vs Apache difference is not terribly important, so why weight your project down with a crazy big license?

I prefer MIT. It's a little clearer to me, and is claimed to be GNU GPL compatible.


Do not use MIT (or BSD).

MIT has a killer failing: it was developed prior to the onset of software patents, and so has no patent release. This dooms it to being appropriate for only trivial projects. It doesn't matter if you think there's nothing patentable in your code: others don't know that. If you want people to use your code in this day and age, a patent release is critically important.

Use Apache. Why be concerned about license length? Include the license once and then refer to it in your source copies. No big deal.


It depends deeply on the project. Some something like, say, an HTTP API wrapper module, MIT/BSD style licenses are quite sufficient. There shouldn't be something patentable there. Apache, unfortunately, isn't compatible with GPL v2.

But if you're building something like node.js, nginx, or Lucene, choosing MIT/BSD is likely a terrible idea. Apache gives huge protections for unforeseen scenarios: automatic property rights assignment for contributions, poison-pill–like protections against patent suits, &c.

I highly recommend this book on Proprietary Information and Open Source: http://www.amazon.com/Intellectual-Property-Open-Source-Prot...

--

Aside — Sean, I took your CS101 class in '07. Crazy running into you randomly here ;)


Hi Kenneth!

The job would have be trivial enough to make it clear to everyone concerned that there was nothing patentable in it, I suppose.

As to GPL compatibility, I've seen this play out with the AFL too (I use the AFL a lot). My take on it is: GPL incompatibility with well-designed, modern licenses like the AFL and Apache is not their fault. It's the fault of the FSF for producing licenses with outstanding flaws. As someone firmly in the BSD camp, I'm not too concerned about the FSF's foibles.


> It's the fault of the FSF for producing licenses with outstanding flaws.

Please, tell that to Linux users. Now, compare the vibrant ecosystem around Linux with the vibrant ecosystem around FreeBSD and try to think why it happens and what's the difference between them.


Are you seriously saying that Linux is popular because it's GPL licenced?


There are many reasons for Linux's popularity. A cooperative environment with little risk of competition is one of them.


> GPL incompatibility with well-designed, modern licenses like the AFL and Apache is not their fault. It's the fault of the FSF for producing licenses with outstanding flaws.

+100. I love this attitude.


Can you explain what a "patent release" is?


BSD is basically just granting a copyright license. Apache grants you a right to use any patents the code may use.

Where I work contracts and grants prefers that we use BSD because they (as I understand it) think apache's patent grants are too broad.

Contracts and grants prefers we use Education Community License over apache http://www.educause.edu/wiki/Educational+Community+License


The Apache License 2.0 mixes copyright law with patent law. Its patent related claims are not acceptable to OpenBSD for example.

This site gives a good overview: http://www.oss-watch.ac.uk/resources/apache2.xml

IMO, you may just as well use GPLv3, ALv2 source is almost as risky in commercial products.


That URL provides no support for your claim at all, and OpenBSD isn't even mentioned. Sadly, a moderate amount of Googling has turned up nothing about why OpenBSD doesn't allow the Apache License: all dead ends. The only thing that turns up is "well, we don't like it philosophically". Perhaps you could point to something more concrete.

"Mixing copyright law with patent law", whatever that means, has nothing to do with risk in commercial products. Apache is very well regarded as a BSD-style license in the commercial environment.


I agree that the Apache patent clause is important. In fact if I recall it motivated some of the changes in GPL3 in order to make it compatible with the Apache license


I typically choose MIT; I'd like to see a comparison of BSD vs MIT/Apache.



If (if) you want to go BSD or MIT, why don't you go with the simpler and more honest public domain, UNLICENSE [1] or CC0 instead?

Releasing software as UNLICENSE or CC0 has the same consequences of releasing it as BSD but it conveys a much stronger point.

[1] http://unlicense.org cache: http://webcache.googleusercontent.com/search?q=cache:NQW6BVB...




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: