Hello,

Some time ago, I wrote that I was going to discuss:
1. GUI interface
2. Restructuring the Bacula project
3. Performance enhancements

1. The GUI interface preliminaries have been hashed around quite a lot. There 
are a lot more details we will work out over time ...

2. Restructuring the Bacula project is the topic of this email, see below:

3. Performance enhancements. I didn't expect to address this at this point, 
but in fact, I expressed most of my ideas already in an email to Eric and 
Marc.

Restructuring the Bacula project:

I've been turning this over in my mind and discussing parts of it with 
serveral people now for several months.  At this point, I have made a lot of 
progress but there are still some rather critical grey areas where I am not 
sure what the right direction is.

Basic problem: Bacula is now entering or in the Enterprise class of software, 
which means that it is becoming a critical component of many institutions.  
It is now somewhat over 150,000 lines of code and has largely depassed my 
capacity to understand and keep in mind the whole program.  Some years ago 
when it was 20-50,000 lines of code, fixing most bugs and getting out new 
releases was rather rapid -- the full set of regression scripts ran in 15 
minutes.  Today, my personal development is going exponentially slower (the 
overall development speed is remaining the same or possibly increasing). The 
regression scripts take something like 4.5 hours to run, getting out a new 
release is very difficult.  I simply no longer have the time to correctly 
manage the project as it is currently organized -- there are a lot of reasons 
for this, mostly described above.

The problem is given the above, how do we move forward from here?  How do we 
ensure that Bacula grows and that it survives in the long term?

======
Before presenting some of my views for your review and comments on how we can 
do this, I would like to re-iterate a few guiding principles that you must 
always keep in mind when reading forward as they can be easily forgotten when 
one is seaching for solutions.  I've indicated very rough timeframe for the 
changes:

1. I am committed to Open Source and to keeping Bacula as Open Source 
(forever).

2. I want to ensure the long term survival and independence of Bacula, which 
means it needs some sort of a "legal" structure, a governance, some 
reasonable financial means, and a careful examination of the copyrigh 
assignment issues concerning contributions (6 mo - 1 year).

3. The current project is *far* too dependent on me, and I have reached my 
capacity to contribute (i.e. I can continue to contribute to the extent that 
I do now, but I cannot contribute more), so we need to find additional ways 
to "leverage" the project so that it can continue to grow without me being 
the bottle neck (1 - 6 months).

4. I would as much as possible to avoid that Bacula becomes too commercial a 
long the lines of MySQL where from what I understand virtually all the MySQL 
development is done by paid employees.  In other words I would like to retain 
the volunteer Open Source contribution as much as possible -- at the same 
time encouraging more "contribution" from those who benefit from Bacula, and 
permit those helping the Bacula project to be appropriately compensated.  

I hope that everyone can more or less take the above as given guiding 
principles otherwise the rest of this email probably doesn't make much sense.
==============

#1 doesn't need much elaboration.

#2 I have discussed before, and I hope that within the next 6 months I can 
convert the Bacula project to be a Swiss Association (the closest American 
concept I can imagine is a Partnership, in France, I believe they are also 
called Associations, and in other countries "Clubs").  Long term (say 5 
years) I imagine it would become a Foundation, but that is too expensive 
currently.  The basic idea here is to get some sort of governing board (even 
if it starts out being me), a definition of the project, the ability to open 
a bank account, and the ability to hold the copyright.

I had the good fortune recently (thanks to Martin for working out some email 
problems) to meet with Georg Greve who is the President of FSF Europe and 
based in Zurich.  It appears that FSF Europe may be able to help me with 
parts of this project transition.

Part of this will be to "cleanup" any possible copyright assignment issues, 
which mainly means getting assignment agreements from any major contributors 
of code to Bacula and ensuring that all developers with CVS write access have 
signed such an agreement.  Please see the Developer's guide for more details 
on this.  

#3 Currently, I am responsible for:
- programming many of the major projects
- helping/organizing/guiding the developers
- doing the English documentation
- making changes to the Web site
- releasing the source code (Scott Barninger handles the rpms)
- releasing the documentation
- testing the code prior to release on Linux, Solaris, FreeBSD, and
  to a much smaller part Win32
- with the exception of Win32 (which Robert is handling), doing 90+% of
  the debugging/bug fixes.
- testing new features
- documenting new features
- accepting and applying patches from developers that do not have
   CVS write access
- more or less maintaining the Source Forge site and the mailing lists
  with the exception that Russell Howe handles the big task of being
  a spam filter.

In an attempt to free up some of my time and reduce my responsibilities, here 
are a few of the changes I am thinking about making:
1. I will probably reduce my participation in big projects and concentrate
    more on projects that have a personal interest to me.
2. Future code submissions/new features will not be accepted unless they
   are accompanied by documentation for the manual as well as a certain
   technical documentation for the Release Notes.  To ease into this, I will
   accept text and convert (or help convert) it to LaTeX for the manual.
3. I'll probably slow down or stop making changes to the Web site.  Hopefully
    someone will take this over.
4. I'll continue to release the source code, but I will no longer test on any
    machine other than the one I am running, which is currently SuSE 10.1.
   This means that we will need testers to step forward.  As you read, Peter
    Buschman has agreed to setup a test bed, and Dan is going to make
    CVS snapshots available.  I would hope that other interested parties will
    join in and help.  Win32 is being covered by Robert Nelson.
5. I will reduce and probably even stop doing debugging on all systems other
   than the one I am working on over say the next 6-9 months.  This means that
   we need technically qualified people to step forward to ensure that
   platform specific bugs are corrected -- this affects mainly Solaris and
   FreeBSD.  If no one steps forward, these platforms will be declassified as
   officially supported and put into the catagory of "it seems to work".  I
   sincerely hope this does not happen.
6. Following the release of 1.40, I will no longer do regression testing on
    FreeBSD or Solaris -- hopefully Peter's and others work on this will fill
    the gap.
7. All new features that are submitted will be required to have as mentioned
    above, documentation for the manual, and at least one regression test
    script.  Over the next couple of months, I will improve the documentation
    for how to write regression scripts -- if you understand Bacula commands
    it is basically a piece of cake.
8. Bugs that are difficult to reproduce will need a regression script to be
    submitted so that I can easily reproduce them.  I've already started this
    to a limited extent, and hopefully we will get some help writing 
    regression scripts from more people (see the next item).
9. I plan to define system of "concentric circles" of people somewhat like
    is done in the FreeBSD project so that bug reports and other problems 
   can be "filtered" before I have to look at them.  This can involve ensuring
   that bugs are correctly presented with all the necessary info, helping
   preparing regression scripts for reproducing the bug, ...  
   I have some ideas here, but this is probably a subject for another
   email.

There will surely be more changes to follow, and as I tried to indicate, these 
changes will be phased in rather gradually -- if no one steps forward in a 
reasonable time to fill the need, then the need will go unfilled.   There is 
a lot to be discussed, but most of the above is directly related to demands 
placed on me or tasks that I have assumed.  As a consequence, since they are 
mainly a question of employment of my personal time, I would appreciate the 
appropriate consideration.  As Bacula becomes more and more important and 
more and more used, we need to find ways to spread the responsibility for 
implementing new features and resolving problems.  I would really like to be 
able to implement everyone's special request, resolve all the problems, but 
it is impossible, so many of the things that were previously rather simply 
resolved will become a bit more formal -- this comes with a program that has 
many more features and is becoming increasingly critical for many people.

I mainly view my task from now on (as long as I remain capable of carrying it 
out) as ensuring the long term survival of Bacula, which means trying to find 
the right structures for it, and to maintain the style, philosophy, design, 
consistency, stability and quality of the code and features that go into 
Bacula.  
   
#4 This too is a rather big topic which I'll probably explore more in detail 
later. However, someone recently wrote: "Consider that Bacula needs both to 
become self-funding and to motivate project participants to maximize
their contribution of development time, testing, documentation, etc.,  Funding 
initiatives should be designed so that they do not act as a disincentive for 
the participant to participate to the full in other areas." 

This is an enormous problem that I feel is now facing the whole of Open Source 
software. As big companies are realizing that Open Source is good quality and 
can save money, their contributions might in the short term disrupt some of 
the current Open Source projects (buy outs, lots of big financial 
interests, ...).  Even the concept of paying a few Open Source programmers 
for serveral months to get the next Debian release out on time has created a 
stir.  I suggest that this problem or dilema of volunteers being squeezed out 
or demotivated by paid employees, has been "solved" long ago.  You need only 
look at charitible organizations to see that volunteers work along side 
people who work for a living for a charity.  As far as I know, the fact that 
Care, the Red Cross, or Medecins Sans Frontiers have paid "volunteers" does 
not seem to stop people from being non-paid volunteers nor does it stop 
people from contributing to those charities.  

However, Open Software projects have not learned how to deal with this 
problem, nor have corporations that benefit from and increase their profits 
by using Open Source software projects learned how to contribute to those 
projects (some have, but I believe they are the minority -- though possibly 
quite important).  Hopefully, Bacula and you our users will find the way 
forward in this respect.

Well, there you have it or at least the outline, though I admit it is probably 
way too much to digest at one time, and IMO the above is only the tip of the 
iceberg.

Regards,

Kern



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users

Reply via email to