web2project Status Update: 1.3

Since the v1.2 release in early December, it’s been a bit of an adventure… in the first week after the release, we got a couple major bug reports. Another few days resulted in a few more. Another day, another bug. In the first two weeks, we received a total of 7 bugs that ranked from major to critical. All in all, it was a bad time. Conveniently enough, none of the bugs were particularly complicated or deep, so we were able to quickly resolve each of them and eventually release a v1.2.1. And after receiving word of a small issue requiring another merge, v1.2.2 shortly after the New Year.

While a few members of our community were understandably upset, I was impressed that the bugs were found so quickly and resolves just as quickly. I couldn’t put words to this well until I read Karl Fogel’s post “Bug Growth is Proportional to User Growth, and Bugs are not Technical Debt.” Wow, that Karl is a smart guy. More on that topic later.

For v1.3 we have quite a few features and fixes on the way:

First, we’ve written some Views Helpers. These helpers handle auto-linking fields that have url’s in them or even email fields. On the other side of things, we’ve added validation for email and url fields. If something is supposed to be a url, it will be.

Next, we’ve moved the Upgrader into the System Admin. By doing this, we can make sure only Administrators can upgrade a system. Further, we’ve added a warning message in case someone deployed an upgrade but didn’t run the script.

Next, we’ve added CSS “minification“. Through some creative manipulation of our Phing script, when our download package is created, it compresses the CSS. We were able to trim 33% from both the download packages and the installed application. We’ve tracked down a few other places and can probably drop another 20-30% of the package the same way.

Finally, we’re spending quite a bit of effort on character encoding and internationalization. If you use web2project exclusively in English, you haven’t noticed any problems. If you use German, Russian, or a variety of other languages, you’ve noticed issues in the Gantt charts and the PDFs. Unfortunately, to resolve this one, it takes a lot of effort:

  • At present, the Gantt charts are created in three different places in the system with similar-but-not-quite-the-same behavior in each. This is being resolved with the GanttRenderer class but it’s not all there yet. The added benefit is that now the jpGraph component is abstracted away from the core code. We’ve talked about replacing it but now we really can.
  • Even worse is the PDF generation. Each report of the Reports module handles its own PDF generation, file creation, and even naming conventions. We’ve started refactoring this to handle it all in our CReports class. It hasn’t simplified much but it’s already allowed us to make the report generation and cleanup a little more secure.

On a related note, we’ve also been working on compatibility. v1.2 was the first version of web2project to formally support IIS7 but v1.3 is going to push this even further in at least one major direction.

Stay tuned…

Are you interested in API Design? Check out our new book "A Pragmatic Approach to API Design." In it, we cover the basics on why you might need an API, how to get started on modeling your API, and finally some design patterns and anti-patterns to be aware of. Available soon from LeanPub