Anyone who has been around dotProject for even a short period of time will know that there are two fundamentals to the way we operate:
1. We defend our dev team's volunteer status and we're grateful for the support that they provide the project;
and
2. We're not the most frequent releasers in the Open Source World - mostly because of point 1.
Or at least it has been so until recently. Recently we've been experiencing a lot of difficulties getting any advancement on the functionality roadmap for 3.x and we've been having increasing difficulty getting detailed information from a small component of the team as to why that is an issue. Fortunately some of our longer dev team members have been able to provide us with some clues to what is causing the problem.
Our primary object has to always be to protect this project. We hold the work that has gone into this monster over the past 7 years - from everybody who has contributed over those years dear to our hearts. Our Technical Admin has been in that position for at least 5 of those years and, working with a small number of the core members of the dev team, he and they have moved us forward in the past. This time we've hit a roadblock.
The roadblock is partially technical, partially the complexity of the next functionality requirement and partially, at least from our point of view, a splitting of vision within the development team.
Our view is and will always be that dotProject is non-commercial. It is a free project - freely available to those that want to use it. Doesn't mean that we knock back sponsorship or support, or commercial contracts - after all - every single one of us needs to eat, house ourselves and buy the occasional bright shiny thing to make us feel better about our lives. But we won't allow "commercial" considerations to split the project or infect the project. I guess in this way you could almost call what is happening at the moment Joomla in reverse. The core of the dev team are hanging onto that principle and the admins have undertaken to be ruthless in ensuring that the project is not twisted by commercial considerations. But in this case, we're staying - and some of the dev team are moving on.
Now the significantly more important issues - technically dotProject has undergone a number of significant upheavals in the code on its journey to 2.x The infrastructure that was originally put in place 7 or so years ago now, and that was adapted time and time again up to Version 2 is now dated - no two ways about that. There are improvements in UI handling, in performance, in API building and in frameworks that we sorely need to step into. Now as a project manager who has consistently muttered ... yeah right but we want functionality ... this has been a journey of discovery I can tell you, but there are compelling reasons why this is the right time to move.
Firstly - we have got performance issues. We always knew that the ACL methodology wasn't going to be ideal but needs must when the Devil is threatening to kick in your front door. But that can't continue - we also do too much server side processing of things like Gantt charts and the like - and there's another story.
Secondly - the current Gantt chart generation method of creating a static image is old, it's limited, it's unreliable, it's not spreading widely enough across languages, it's chewing up too much memory and it's unreliable. We have to move on from that - generating usable, interactive Gantts. We also need to get into PERT charting, performance charting and a bunch of other things which are rapidly not "nice to have" and falling into "mandatory" to have.
Thirdly - the UI is becoming dated. Advances in Web 2.0 and other technologies mean that static displays, non-interactive inputs and so on are just not good enough these days - and we must update.
Finally - and possibly more important to our minds than anything else - we have a situation now where we have developers who - frankly after 5 or so years - are bored witless. They need a challenge and that challenge has to expand wider than just fixing bugs in other people's code and uploading other people's patches. They need the opportunity to do something that moves us forward in a decisive manner.
So we've bitten the bullet and we've instigated the following:
1. We're clearing out down to a smaller, proper core development team - made up of the supporters of the project and the project's vision - interested and excited about the chance to move forward. Two of the previous developer group have left us - one because the technology direction doesn't suit their personal goals (and we understand that fully and wish them all the luck in the world in the future endeavours) and one because they have admitted that they don't have even minimal time to give to the project - and again we understand that fully and appreciate their honesty and willingness to step aside for the general good of the project. One has been removed as they have evidenced an unwillingness to work with us and have taken an adversarial position against the admins in particular. One more will be leaving us unless they can convince us that their commercial imperatives are not driving their objections to our new direction. We don't pretend for one minute to be the worlds most perfect or ideal admins - we do the best we can do for the project within our long-term goals and understanding of both the past and the future. Personality clashes are inevitable though and ultimately, we have to have a team that we believe in, as when the going gets tough and the dev team have to be supported - we are their loudest cheersquad. We have to be sure that those that we are cheering for are on our side.
2. We are working hard on a new framework for the current code base. The idea behind the new framework is not to throw out the baby with the bathwater but to "wrap" the current functionality around a more sound footing. Some of the current code base will be reused, some will be re-engineered and some will be lost - that is inevitable. What we intend to come out of the process with is something that will take dotProject forward - hopefully for at least another 7 or so years. That process is already well underway. We will undoubtedly take a while to get that moving - but to be frank we were going nowhere a few weeks ago for 3.x. This way we're finally moving somewhere.
There will be a bit of rejigging going on all around the place soon - we've got a new web environment being built up, we'll be switching the CVS on Sourceforge across to SVN to improve that functionality, we'll be looking for some new developers and some professional testers and we'll provide some updates on progress and maybe even some sneak previews when there is something to be looked at. Add on module developers - we've not ignored you - we'll be working hard to ensure that it is easier to integrate your modules into the new framework than before and we'll work with you when everything is more advanced to guide you in that integration.
All of this relates indirectly but not directly to the repairs required to make the 2.1 release available again - we'll have to find the time to work on the problems in that release and retest simultaneously with the rework.