I've built a ASP.NET MVC 3 (RC at the moment) site that uses OpenID login system. I was still learning about OpenID while implementing this so I commented the code heavily. The result is a site that let's users login/register with OpenID, add other OpenIDs to their account and also remove them. This little project can be then used as a starting point for any new project that would use OpenID login system. It can also be used as a resource for people to learn OpenID with.
I decided to release this project as open source. This will be my first open source project and I need to decided what license to use. I want people to be able to use this for any purpose they wish for. They can learn from it, use it for commercial or non-commercial projects and make their own forks of the code. It would also be nice for others to be able to contribute back to the project with stuff like bug fixes on sites like GitHub. But I'd like to be the copyright owner of the code that is under my control. For example the code that is in my GitHub repository (I'll call this the main code base). I've heard that for this I need to get every contributor, that adds code to this code base, to give me the copyright for their contribution. How exactly does this work?
I also use other licensed (mostly open source) resources in my projects. Here's their list and their licenses:
- DotNetOpenAuth (Ms-PL)
- T4MVC (part of MvcContrib which is licesned using Apache License 2.0)
- ASP.NET MVC (Ms-PL)
- ADO.NET Entity Framework CTP4 (I couldn't find a license)
I of course want to use the main code base for any type of projects I want. Commercial, non-commercial, open source, ...
So I have some very important questions here:
- Which license should I use? I think GPL or LGPL is not suitable here. I was looking at Apache 2, New BSD, MIT and Ms-PL. Ms-PL seems to be a good fit as, but I'm not sure.
- What restrictions and/or obligations do I have towards the resources I use in this project? I think I read somewhere that I have to add -LICENSE.txt for Ms-PL resources. Is that true? How does this work for Apache 2 and other licenses? What do I have to do if I modify any of these resources' code and then use that in my project?
- I'd also really like a "as-is" clause in the license, so people can't sue me if something goes wrong while they're using my code.
- Do I need to add anything to my files to make clear what the license is? If so, how do I format that?
Also one last thing. If I decide to make a Visual Studio template out of this samples how do I license that?