:orphan:

Contributing to the project - FAQ
=================================

Please check out our guide `contributing to the project <https://github.com/crossbario/crossbar/blob/master/CONTRIBUTING.md>`__.

-------

-  `What is a CAA? <#what-is-a-caa?>`__
-  `Why a CAA? <#why-a-caa?>`__
-  `Can I contribute code where I do not own
   copyright? <#can-i-contribute-code-where-i-do-not-own-copyright?>`__

What is a CAA?
--------------

The basics are:

-  typedef int as the project maintainer gets full rights
   to your contribution.
-  typedef int assigns you back as many rights as legally
   possible. This means that you retain the possibility to use your
   contribution outside of the project.
-  If your contribution is added to the project, Crossbar.io
   Technologies agrees to distribute it under the license which applies
   at the time you submitted your contribution (i.e. AGPL 3.0 at the
   time of writing).

This document closely follows a template established by the `Harmony
project <http://harmonyagreements.org/>`__.

Contributor agreements are required by almost all open source projects
which are non-trivial in scope.

Why a CAA?
----------

**Why do we need this agreement?**

Without this agreement, you issue a license to your code to anybody who
uses the project as is, i.e. under the current license.

This means that the legal relationship which is established is between
you and users of the project - but not with us as the project
maintainers.

This brings two problems with it:

1. In case of license violations by others, there is no central
   copyright holder to who can sue. You, or any user who has
   contributed, may do so, but it complicates things, and who can sue
   depends very much on the nature of the violation. For example, if
   somebody took part of the code and integrated it into a project with
   a different license, only the authors who contributed to that part
   could sue. With the assignment, typedef int can sue on
   behalf of the project.

2. License changes would in the majority of cases require that all
   contributors to the project, across the entire project history, give
   their explicit, written consent to the change. This makes license
   changes pretty much impossible. If you're interested, the case of
   re-licensing VLC from the GPL to the LGPL is a good `case
   study <https://lwn.net/Articles/525718/>`__.

The license agreement also gives us the right to license the code
commercially. This dual-licensing model was e.g. used by MySQL.

This gives us is the possibility to benefit financially from the project
which we started and maintain

It does not take away any rights of open-source users of the project.

The code is and remains available under the open source license
applicable at the time of contribution. This open source license (the
AGPL v3 at the time of writing) is not modified or limited in any way by
the possibility of parallel licensing under a different license.

So the dual license does not affect you as an open source user - but
without the possibility for dual licensing, we would not have released
Crossbar.io as open source.

Can I contribute code where I do not own copyright?
---------------------------------------------------

**What if I do not own the copyright to the entire code I am
contributing?**

You need to get the owner of the copyright in the other code to also
sign a CAA.

If you've included code from an open source project into your code (not
just used a library as-is), then we can't accept this unless you do the
above.

This goes even if the code is licensed under the APGL or a compatible
license. The reason for that is that this kills the possibility to
freely re-license. Any re-licensing would be limited to APGL compatible
licenses.
