Ask HN: I'm about to open source a project at work. What license should I use?
I was given free reign to develop a reporting system at work, including the OK to open source it. I'll be ready to do so in the next couple of weeks and am going to need to recommend a license to management. Anyone want to help me weight the benefits and drawbacks of MIT vs GPL vs the other options?
23 comments
[ 2563 ms ] story [ 2015 ms ] threadMuch of it depends on what your company's motivation is. If this was primarily to keep you happy, but they don't want to support the effort long term, MIT/BSD would be easier all around.
As for the motivation, pardon the management-speak, but they're looking to "harness the power of the open source community" by giving away the initial code and benefiting from other devs working on it down the road.
What license terms do you want? Here are some popular goals, and possible licenses to consider:
"Please don't sue me." -> MIT license or 3-clause BSD.
"Share and share alike (application)." -> GPL
"Share and share alike (library)." -> LGPL
"Share and share alike (hosted server application)." -> AGPL
To play nicely with a larger community (Ruby, Perl, Mozilla, etc.), use the most common license in that community.
Of course, read the licenses and get proper legal advice before deciding. I am not a lawyer. Oh, and don't let your lawyers invent their own license—nobody wants to figure out a non-standard license, so you'll get fewer contributors, and it's a lot more work for you.
Using a BSD license means you're being nice to developers.
The GPL means you're being nice to users and telling companies/developers to move along.
In particular, it could lead to me breaking the law! If someone built something using my code that they then kept closed-source and put a "no-reverse-engineering" kind of EULA on, I'd of course be curious how they'd built on my stuff, and would want to reverse engineer it. Quite a temptation!
(That said, I do use BSD-style licensing myself for some things, mostly stuff I consider as good as public domain, e.g. a fairly small bit of code implementing a well-known algorithm, even if it's imo a particularly optimized and elegant version.)
LGPL if you want to allow others to use your library in a project without releasing their source, as long as the library was not modified.
Choose BSD to let anyone do anything with it without requiring to release their source.
Do you want to encourage the broadest possible use? Then use the BSD/MIT.
Please don't choose anything beyond these basic three unless you have a specific reason to do so.
[1] http://www.gnu.org/licenses/gpl-faq.html#AllCompatibility
Of course, the GPL exists because some people don't like that state of affairs. If you're fine with it, use MIT.
We're a small company, about 40 employees and 15 developers. The app is written in Ruby on Rails 3 with MongoDB for the backend. It's designed to be run on a server and provides a JSON and XML based API for general-purpose reporting of user metrics in (web) apps.
One of the main goals with open sourcing the app, from the company's perspective, is that they would like other people to fork and contribute back to the project. Any thoughts on what license might be best for those purposes?
Obviously the GPL means that people have to publish their changes, but I wonder if that restriction might cause less adoption than using the MIT / BSD license to allow people to do whatever they want.