Making Contributions

Bacula is an Open Source program with many contributors (listed in the AUTHORS files), so we actively seek contributions (help on the Bacula users list, documentation, source code, ideas, …).  All contributions help us make a better product.

All contributions without an explicit copyright statement or a CAA (see below) are assumed to be covered under a BSD 2-Clause license.

There are however, a few considerations to keep in mind when making source code contributions:

  1.  Contributions must meet the Bacula coding standards (see the Developer’s Manual) to be accepted.  This includes indenting standards, use of appropriate Bacula low level subroutines.  Developers will help you with this.
  2. To b accepted, contributions must follow Bacula philosophy — upward compatibility, attempt to reduce the number of new Directives, Directive naming, restricted use of C++ features, use of git repository, … This requirement is a bit vague because it is very difficult to pre-define all the details of our philosophy.  The best guide to it is to look at existing code, read the Developer’s Manual and to ask on the bacula-devel list.
  3. For anything more than 1-10 lines of code, we must get a Copyright Assignment Agreement (CAA) (see below) prior to integrating the code into the mainstream git repository.  This requirement is to ensure that all the code in Bacula is truly free/open software and can be used by everyone.  It is also to permit Kern to submit your contribution to Bacula Systems to use in a non-free Enterprise version.  The great advantage of allowing Bacula Systems to use all Bacula contributions is that Bacula Systems is by far the largest contributor to the Bacula community code base, and has and will continue to backport all the Bacula Systems Enterprise developed code to the Bacula community version within 5 years of its release.
  4. If you contribute or otherwise submit a small number of lines of code or corrections to Bacula, we may not ask you to sign a CAA (see below), though you are free to do so.  We do this to reduce the administrative load of obtaining and tracking many CAAs.  We will however, assume that any small contributions are covered by a BSD 2-Clause license.  This gives anyone the right to use your code who follows the terms of a BSD 2-Clause license (See General -> Licenses).

Copyright Assignment Agreement

Developers who have contributed significant changes to the Bacula code must sign a Copyright Assignment Agreement (CAA — formerly called a Fiduciary License Agreement or FLA), which guarantees them the right to use the code they have developed, and also ensures that Bacula Systems SA (and thus the Bacula project) has the rights to the code.  By signing the CAA, your contributions are eligible to be integrated into the Bacula source code.  Having the CAA signed is essential for the Bacula project to maintain a clean copyright and guarantees that Bacula and your source code will always remain Free Software (Open Source).  Providing that your contribution is accepted by the Bacula project, your signed CAA also permits Bacula Systems SA to submit your contribution for  use in the Bacula Enterprise Edition. The Copyright Assignment Agreement is found on the Bacula web site at:

https://www.bacula.org/downloads/CAA-Bsys-v11.0.pdf