The Corus source code has been subdivided into two modules:

1) A “client” module, released under the Apache 2.0 license, which produces a library (jar file) that can be placed into the classpath of client applications, allowing these applications to connect to Corus instances and use the Corus server API directly (a rarely necessary thing, unless one wants to develop his/her own tools for interacting with Corus).

2) A “server” module, released under the GPL 3.0, which strictly consists of the server-side Corus classes, which client applications do NOT need in their classpath. This module depends on the client module, for it implements some of the interfaces in it. Applications deployed using Corus absolutely do NOT need to depend on the server module in any way. The artifact produced by this server is the actual Corus distribution.

The above means the following:

  1. Client applications linked to the Corus client classes are not bound by the viral effect of the GPL. They depend entirely on classes released under the Apache 2.0 license, the most liberal of all open source license. It means that code linked to these classes does not require its source to be redistributed; that it can be proprietary; it also means that the Corus client .jar can be redistributed without restrictions as part of client applications.
  2. For the server part, it means that no one can modify and redistribute Corus without providing their entire modifications as source to their customers; it also means that their modifications automatically become subjected to the GPL. In addition, new software that is linked to the Corus server libraries automatically becomes subjected to the GPL.

In 99.9% of cases, this licensing scheme has no impact on the projects using Corus: client applications will use the client classes, which fall under the Apache 2.0 license, and are therefore shielded from any viral licensing restrictions or obligations.

We recommend that you read the GPL FAQ if you have more questions.