Skip to content
Sven Nilsen edited this page Nov 17, 2015 · 2 revisions

Most projects under PistonDevelopers uses the MIT license.

It is recommended to dual license new projects under MIT and Apache 2.

Why dual license MIT with Apache 2?

Normally, when you publish open source code before patenting, it renders the patent invalid. However, some countries are changing their patent systems to new practices that affects software. This leads to more worries about long term dependence on a library.

The Apache 2 license grants the users a worldwide patent license that affects the published code. This gives some protection against lawsuits concerning patents.

Why worry about patent lawsuits?

In a free market under near perfect competition, prices are usually low. When a single company holds the rights to distribute and sell a product, they can sell for a higher price. The difference between monopoly price and the free market price can be the difference that makes a company profitable. There is high economic pressure on companies that hold a monopoly position to protect it.

The patent is a system for granting limited monopoly for the inventor of a product, protected by the government, thereby creating potential for higher price. This is meant to motivate inventors to create products to the benefit of society.

At the core of every patent system, there is a concept called "prior art". When something already exists, the patent application is usually rejected. Publishing the invention prior to filing a patent normally counts as prior art.

Some companies make a business model of filing patent lawsuits to eliminate competition (protecting a monopoly) or get a piece of the income on a product (instead of offering a better product or to a lower price). In some cases, it does not matter whether the patent is actually violated, but to threat the developer economically through the costs associated with the lawsuit, into giving the company suing some money. Therefore, the existence of prior art alone might not be an efficient protection.

In open source particular, it is easier to find out whether a seemingly patent violation occurs, which makes it easier to cherry pick where the company believe they have a good case.

The problem with software patents

It might be surprising to some people that the patent system is inefficient regarding software, and why developers often are willing to use a permissive license regarding patents.

Three reasons software patents are problematic:

  1. When millions of people have access to programming languages, it is not possible for the patent system to keep up with the number of inventions. It is therefore very hard to know that no prior art exists. Another problem is that even when filing a patent, most people do not browse existing patents before coding, which leads to unintended violations. In most scenarios, a software patent is useless to grant the limited monopoly that is the motivational factor of the patent system, but there can be exceptions. In any case, the amount of invention exceeds the capacity of the patent and justice systems.
  2. A trivial software program can be written to generate all possible computer programs expressible in a domain, thereby violating every possible patent. This is due to the mathematical nature of Turing machines, that can simulate any physical system, including other Turing machines. The rules to determine a violation from all possible algorithms is an undecidable problem. Therefore, existing patents can usually either be worked around or impossible to justify in the first place.
  3. When software patents are used as economic weapons against competitors, a lot of resources in society is spent that are relative expensive to the cheap cost of modifying software. This results in a friction for developers that must take precautionary steps to protect themselves from lawsuits. It means that the patent system ends up being used to the opposite intended purpose, being a very expensive burden on society.

The rational decision would be to maximize the beneficial inventions and reduce costs for society, which necessary includes better economic protection of developers by default to remove friction, which is where the great innovation is taking place. However, this has yet to happen, so developers are often willing to agree on a permissive license to reduce the costs and risks.