dotProject and PHP5

Everything stated in this post is the personal opinion of Keith Casey, CEO of CaseySoftware, LLC and should not be taken to represent the position of the dotProject Team or the dotProject Roadmap. With that out of the way….

With the PHP4 End of Life announced recently, the GoPHP5 group has gotten a huge boost. Many Open Source projects have been approached by the GoPHP5 group and have been asked to break compatibility with anything prior to PHP5.2. Despite the ugly website – as if I have room to talk – they have some valid points. PHP4 has been great, has managed to penetrate the web space and is huge across the board by every measure. Unfortunately, it's showing its age… and it has been for a while.

PHP5 – on the other hand – offers a variety of major improvements. The single biggest to me is its XML support. The pseudo-SAX method of XML support – startTag, endTag, etc – in PHP4 felt more like parsing a CSV. Stepping into PHP5's SimpleXML is ideally suited to manipulating the document in a useful way and the minimal size of the code is a combination that can't be beat. The second biggest benefit has been the object model. Yes, it still has some weaknesses, but the flexibility and ability to make real objects with hidden data, abstract classes, interfaces, etc has opened up a number of possibilities that didn't exist before.

I'm not writing to announce dotProject breaking PHP4 support. I'm not in a position to make that sort of decision, if it has been made been, this is not the first place you'd read about it. Instead, I'm announcing that the next version of the Project Importer module will no longer support PHP4. I've already heard from some ticked people on this one, but the benefits are going to be significant:

First, there's the improved XML handling. This will cut the overall code that needs to be managed, resolve some parsing issues that have come up recently, and will improve memory performance. Some early testing shows that this may increase the importable project size by about 15-20%.

Second, there's the improved object model. Microsoft Project 2005 and earlier uses one XML structure, Project 2007 uses a new structure, and tools such as OmniPlan and GanttProject use others. The Project Importer will become the common module to support all of these and handling a new structure will be as simple as writing a handler and then hide it all from the end user.

Finally, there's an opportunity for Unit Testing via phpUnit. I've decided that since I've received so much useful feedback and sample files from users, I should use their contributions to test each release. Since I'm lazy… er… effective, only automated Unit Testing will do. 😉 None of these files can or will be included in the releases, they are for internal testing only.

Towards the goal of simplifying support requests, the module already has version checks added to determine your version of dotProject and PHP. If your installation doesn't meet the requirements, you'll get a nice useful message describing the version problem and what should be updated.

The estimated date for the Project Importer v2.0 release is late September. And if you need a dotProject Upgrade, let us know.