next up previous contents index
Next: Bacula Code Submissions and Up: Bacula Developer Notes Previous: Bacula Developer Notes   Contents   Index


The Development Cycle

As I noted in the 1.38 ReleaseNotes, version 1.38 was different from prior versions because it had a lot more contributions. I expect that this trend will continue. As a consequence, I am going to modify how I normally do development, and instead of making a list of all the features that I will implement in the next version, I will personally sign up for one (maybe two) projects at a time, and when they are complete, I will release a new version.

The difference is that I will have more time to review the new code that is being contributed, and will be able to devote more time to a smaller number of projects (1.38 had too many new features for me to handle correctly).

I expect that future release schedules will be much the same, and the number of new features will also be much the same providing that the contributions continue to come -- and they show no signs of let up :-)

Feature Requests:
In addition, I would like to "formalize" the feature requests a bit.

Instead of me maintaining an informal list of everything I run into (kernstodo), I would like to maintain a "formal" list of projects. This means that all new feature requests, including those recently discussed on the email lists, must be formally submitted and approved.

Formal submission of feature requests will take two forms:
1. non-mandatory, but highly recommended is to discuss proposed new features on the mailing list.
2. Formal submission of an Feature Request in a special format. I'll give an example of this below, but you can also find it on the web site under "Support -> Feature Requests". Since it takes a bit of time to properly fill out a Feature Request form, you probably should check on the email list first.

Once the Feature Request is received by the keeper of the projects list, it will be sent to me, and I will either accept it, send it back asking for clarification, send it to the email list asking for opinions, or reject it.

If it is accepted, it will go in the "projects" file (a simple ASCII file) maintained in the main Bacula source directory.

Implementation of Feature Requests:
Any qualified developer can sign up for a project. The project must have an entry in the projects file, and the developer's name will appear in the Status field.

How Feature Requests are accepted:
Acceptance of Feature Requests depends on several things:
1. feedback from users. If it is negative, the Feature Request will probably not be accepted.
2. the difficulty of the project. A project that is so difficult that I cannot imagine finding someone to implement probably won't be accepted.
3. whether or not the Feature Request fits within the current stategy of Bacula (for example an Feature Request that requests changing the tape to tar format would not be accepted, ...)

How Feature Requests are prioritized:
Once an Feature Request is accepted, it needs to be implemented. If you can find a developer for it, or one signs up for implementing it, then the Feature Request becomes top priority (at least for that developer).

Between releases of Bacula, we will generally solicit Feature Request input for the next version, and by way of this email, we suggest that you send discuss and send in your Feature Requests for the next release. Please verify that the Feature Request is not in the current list (attached to this email).

Once users have had several weeks to submit Feature Requests, the keeper of the projects list will organize them, and request users to vote on them. This will allow fixing prioritizing the Feature Requests. Having a priority is one thing, but getting it implement is another thing -- we are hoping that the Bacula community will take more responsibility for assuring the implementation of accepted Feature Requests.

Feature Request format:

============= Empty Feature Request form ===========
Item n:   One line summary ...
  Date:   Date submitted
  Origin: Name and email of originator.
  Status:

  What:   More detailed explanation ...

  Why:    Why it is important ...

  Notes:  Additional notes or features (omit if not used)
============== End Feature Request form ==============

============= Example Completed  Feature Request form ===========
Item 1:   Implement a Migration job type that will move the job
          data from one device to another.
  Origin: Sponsored by Riege Sofware International GmbH. Contact:
          Daniel Holtkamp <holtkamp at riege dot com>
  Date:   28 October 2005
  Status: Partially coded in 1.37 -- much more to do. Assigned to
          Kern.

  What:   The ability to copy, move, or archive data that is on a
          device to another device is very important.

  Why:    An ISP might want to backup to disk, but after 30 days
          migrate the data to tape backup and delete it from
          disk.  Bacula should be able to handle this
          automatically.  It needs to know what was put where,
          and when, and what to migrate -- it is a bit like
          retention periods.  Doing so would allow space to be
          freed up for current backups while maintaining older
          data on tape drives.

  Notes:  Migration could be triggered by:
           Number of Jobs
           Number of Volumes
           Age of Jobs
           Highwater size (keep total size)
           Lowwater mark
=================================================


next up previous contents index
Next: Bacula Code Submissions and Up: Bacula Developer Notes Previous: Bacula Developer Notes   Contents   Index
2009-04-13