When thinking about creating an open source project, starting with the question which license to choose is the wrong approach. Rather, you should ask yourself: Why am I creating this open source project and what do I want to achieve with it? Once you have settled this question, you can use the following simplified cheat sheet:
I break down reasons for creating open source into a community (sharing) and a commercial (exploitation) purpose, and what you are creating into another two aspects (component and application). The resulting 2×2 matrix will point you into the right direction. This is its logic:
- If your goal is to share in the cost of developing a useful community open source software, then you can be in one of two situations: You are either a vendor, developing a component for distribution in your products, or you are a user developing an application for your use.
- As a vendor, developing a component, you don’t want to constrain your business model so you should choose a permissive license. Whether MIT or Apache boils down to whether you want to take a stand against software patents or not.
- As a user, leading the development of an application, you may want to avoid run-away commercialization of the application and therefore should choose a copyleft license, limiting the business model possible with the application.
- If, however, your goal is to commercially exploit the software, you need to be much more careful in how to llicense the software to not constrain your business model.
- If your product is used as a component by other developers, you may not want anyone else competing with you, so you should choose a license that explicitly forbids such competition, like the new source available licenses (not open source).
- If your product is an application, you can use a network (cloud) copyleft license like the AGPLv3 to ensure your competition won’t use the software against you; this let’s you keep the goodwill associated with open source.
At first glance, the difference between the two license choices for commercial exploitation may be surprising. They are the result of the open source use-case (distribution in the case of a component and plain use in the case of an application). For advanced reading, I explain this in more detail elsewhere.