web2project: Databases, Coding Standards, and Modules Oh My!

Getting closer…

I still can't announce our official web2project release date, but there are two major things that were just marked off the todo list based on the amazing effort of Pedro…

Table Prefixes – This seems like such a silly thing. In this day of cheap shared hosting, why in the world would you want/need table prefixes when you can just create another database? True, and good point… but the problem is that there are a number of hosting companies (and system admins) that don't give you an additional database. Or – more interestingly – you may have applications that need to report and aggregate information and having all of the data reside in a single database is simpler in terms of permissions, coding, etc.

So in the last week, Table Prefixes have been implemented throughout the system. We're in some final testing, but it appears to work about as expected without any oddities. The best part is that our new debugging interface gives us all kinds of useful bits as we go. This also gave us a second benefit… there is no raw sql anywhere within core web2project. There are some natural implications of that, but I'll let you ponder the ramifications… ;)

Coding Standards – One of the banes of my existance is stepping into a codebase and finding a mishmash of code, functional, classes, and a general mess of things. It makes things painful at best and horribly confusing at worst. Towards that goal, we're nearly complete with the cleanup of the entire codebase to a useful coding standard. Since PEAR wasn't quite a good fit, we followed in the footsteps of another great project – CakePHP – and are using their Coding Standards as a starting point. I also plan to follow in the footsteps of Jason & Garrison at North Carolina State University to tie CodeSniffer into the checkin [This is not the original link as it was taken offline. This new link is same concept, different author. -ed] process to keep the standard enforced.

For clarification, this does not mean that web2project is being converted over to use CakePHP as its framework. I happen to think that the underlying dotProject framework is pretty solid – especially with the latest permissions cleanup – and something like the Zend Framework makes quite a bit more sense. Of course, I'm biased as I've already implemented most of a Zend_PDf-based replacement for the existing Reports module… and technically I'm a ZF contributor though I haven't done anything with it yet.

Modules – We believe that one of the single biggest strengths within the dotProject community was the sheer number of functionality of the various Add On Modules. The Project Importer module is the single most popular dotProject Add On Module (based on downloads, page views, etc). In addition, the Project Exporter has sparked renewed interest and is scheduled to be completed for regular dotProject this week.

Therefore, there's a bit of a race among a few module developers that are working to convert their things at the same time… what will be the first Add On Module available for web2project? Will it be the Project Importer or will someone else take that honor?

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