Software licensing

From Artisan's Asylum

Jump to: navigation, search


Writing code for the Asylum

We welcome help in writing code to help us run the Asylum. In order to avoid surprises down the road, we can only use code if it's licensed in a way that lets us use it.

What kinds of code do we have?

Code people might write for us breaks down into two major categories:

  • Code required to conduct our day-to-day operations
  • Code to enable members to do nifty things

The first category includes things like our website, our office automation, security systems, accounting and financials, infrastructure such as email tools, and so forth.

The second category includes things that we don't need to run the business, but are handy to have. One example is CNC file-format conversion software, which enables additional uses for our machinery, but isn't critical-path for our operations.

Most of this page concerns the first category of code, though it touches briefly upon the second.

Licenses we can accept

We're happy to have you use your code in any way you like, as long as it doesn't prevent us from using it. Thus, any of the licenses below are fine with us---although the "freer" the license, the better, in general.

Work for hire

This is the most-restrictive license. It says that we own your code, and you have no rights to it. This might be appropriate for code an outside contractor writes, for pay, such as a website redesign. In a work for hire, we own the copyright, not you.

"Free" licenses

These include, but are not limited to:

  • Creative Commons, such as CC-BY-SA
  • BSD
  • GPL

Licenses that include a "no commercial use" clause are not acceptable. In addition, licenses that include an "advertising" clause are only acceptable if that advertising doesn't have to appear on our public website.

The general idea is that, if the code is free for you---and the rest of the world---to use, it's free for us to use, too.

Our own license

If none of the above licenses make sense for you, you can also license your code like this:

"Artisan's Asylum is granted a free, perpetual, irrevocable, nonexclusive license to use, modify, copy, or distribute these files."

This says that we can use your code any way we like, and (because it's a non-exclusive license), so can you. Note that, just like the other licenses above, you still own the copyright, because you're the author.

Licenses we can't accept

Any license that says we can run your code only with your permission are not acceptable, because that introduces an unacceptable business risk. If there's any possibility that you could legally compell us to stop using your code if you withdraw permission, then we can't use it for anything important.

Similarly, any license that says other Asylum members can't modify your code are unacceptable, because you may leave, get hit by a bus, or simply be too busy to make a change that we require in order to run our business.

What license should you choose?

In general, choose the most-free license you can. This is usually something like the GNU GPL or CC-BY-SA. Both of these (very roughly) say that anyone can use your code, and if they modify it, they have to make the modifications available to others. You can also choose our license.

The more central your code is to our operations, the more we care about its license. If you want to write some little tool that only a few members will use on a certain piece of equipment, and you have some reason for picking a more-restrictive license, that's probably okay---but it may mean that we won't use it in a class, won't help you to install it or support it, and so forth. In general, we strongly encourage you to use free licenses on everything.

How should you indicate the license?

A shorthand way to do so is to just say, in a comment somewhere at the front of a file, "This code licensed under GNU GPL, any version" or "This code licensed under CC-BY-SA" or (if you're using our license) to repeat our boilerplate. If your code consists of a large number of files, consider instead a LICENSE file somewhere in the distribution.

What if your code has no license indicated?

If you write code for us and don't include any license, we'll assume "our" license. You can do whatever you like with the code, but so can we. If you later change your mind about its license, we're free to use "our" license on the code you gave us before you changed your mind. For code written after that point, we'll use whatever license you decide---but remember that we can't use your code at all unless you pick one that doesn't tie our hands later.

Personal tools
Wiki Maintenance