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