dotProject and PHP5

In preparation for my recent presentation at the DCPHP Conference, I spent a day developing a complete REST interface for dotProject. The first version (0.1) is very embryonic and only supports GET'ing a few objects of the core application. After hardening and improving a few aspects of the code itself, I reached the point where it may be useful for actual beta usage. And that's when I hit the first problem…

dotProject is not PHP5 compatible.

doh.

I've been running and using dotProject on PHP5 and mysql5 with so few problems for so long, that I forgot it's not officially supported. As a result, we're missing out on some major tools and features within the community that our users could really benefit from. By no means am I being critical of the rest of the dotProject team or the community as a whole. Maintaining compatibility with PHP4 is a reality of a successful project and responsible leadership.

Regardless, I'm beginning our team on a new effort distinct from the rest of the dotProject community. We will continue to develop on dotProject head to resolve various PHP5 and mysql5 issues and regular issues within the community, but at the same time we're going to implement some features which take advantage of the PHP5 features. For the time being – since the last thing I want to do is increase the requests on the help forums – these will only be made available to CaseySoftware customers because we'll be the only ones in the community able to support them.

With no further ado, here is our hitlist:

Unit Testing – At present, all testing within dotProject occurs manually and is by no means complete. I hope that our effort can begin to test a handful of core components and grow out from there. I don't see us ever reaching 100% code coverage, but it can be better than our current 0%. In order to do this right, phpUnit 3 is by far the best possible option.

REST Interface – In order for dotProject to steadily improve its usefulness, people need to be able to push and pull information from it in a programmatic way. In my opinion, the best way to do this is via REST web services serving up XML (and potentially JSON). SimpleXML is by far one of the easiest and most flexible ways of doing this. In the meantime, I will be regularly releasing the dotProject XML Schema for review and comment. Feedback will be welcome.

Reporting – Finally and most importantly, the current dotProject reporting is functional and useful for many people but I believe that making better use of the PDF generation libraries available will be a huge benefit for the community. At present, the Zend Framework's PDF generation seems to be the most flexible and powerful.

All in all, I expect this to keep us busy for quite a while and most likely through the end of the year. Regardless, I believe they are necessary aspects for the evolution, growth, and acceptance of our community and dotProject as a whole. If you have any questions, comments, or concerns, feel free to comment here or drop me a note directly.