Skip to content

Licensing and RabbitMQ

Charles Cowart edited this page Feb 18, 2016 · 12 revisions

###RabbitMQ is licensed under MPL 2.0 aka the Mozilla Public License.

RabbitMQ includes only the server software, some gateways (HTTP, STOMP, MQTT), and AMQP client libraries for Java, .Net, and Erlang. There's no python client library.

###Defacto standard library for Python users is Pika Pika is licensed as Three-Clause BSD.

###Three Clause BSD in a nutshell:

If you redistribute the source code, it needs to have the license included. If you redistribute a binary of the source, you need to include the license in any documentation.

The organization mentioned in the license provides the software without as-is, without warranty, and cannot be held liable for any damages caused by using the software.

Since BSD typically displays a copyright notice from UC, I assume that a copyright notice must appear in the software during loading or in an about screen, etc.

Typically, BSD is viewed as the most permissive license. The two-clause version removes the copyright display information.

###The MPL in a nutshell:

Roughly in between the BSD and GPL licenses. Source code published under MPL must stay MPL. Modified MPL code must also be licensed under MPL. Any new code can be licensed under a different license.

Rabbit-MQ for example, contains code published under MIT license.

###Alternatives:

Alternative implementations of AMQP to RabbitMQ include Apache Qpid and Apache ActiveMQ. Both are published under the Apache 2.0 license.

Apache Cassandra, a dependency of the Building Depot 2.0 installation, is also published under the same license.

RabbitMQ is perhaps the most used, most well-known implementation.

Qpid is leaner, faster, and requires more configuration.

ActiveMQ is considered somewhere in between the two.

###The Apache 2.0 license in a nutshell:

More permissive than the MPL, it's closer to the BSD license.

Any major modifications of the original source code must be explicitly marked.

Unlike most other licenses, this license explicitly gives the user patent rights, and explicitly denies the user the use of any of the contributers' trademarks.

I'm not sure if derived work can be made BSD from Apache 2, but the Apache 2 license is very permissive to begin with.

###Observations: All of the licenses are going to require the user to notify the end-user that they are using work that's copyrighted by organization X, etc. as we typically see in software.

At a glance, all of the servers are stand-alone processes, and not libraries. This means that they would sit alongside Redis, Cassandra, etc. in relation to Building Depot and interface in a similar way.

It seems likely that the AMQP server implementation would ship unmodified, like Redis and Cassandra currently do.

Qpid and ActiveMQ may be more attractive, because they are more permissively licensed. BD 2.0 uses an Apache 2.0 licensed product as a dependency (Cassandra).

The RabbitMQ Python examples are actually examples of using the Pika AMQP client library. I assume we can start by using RabbitMQ, if we're more comfortable, and change servers at any point in time.

Clone this wiki locally