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 =================================================