As of 29 June 2010, web2project v2.0 is officially released! You can download it from SourceForge now.
Although this release had lots of bug fixes, the primary focus was on a few specific new features and major pieces of functionality. You can read the full v2.0 Release Notes, but in my opinion, the six most important items are:
- User-based Timezones: Everywhere a time is used or displayed within the system, it’s now stored in GMT/UTC and presented in the user’s local timezone. If you set a meeting for 5pm America/New_York, someone with America/Chicago timezone will automatically see it at 4pm. If you have team members spread across timezones, this is vital. Lots of thanks to Derick Rethans – the master of all things time-related in PHP – on his numerous presentations on DateTime and Timezones. His information made it possible.
- Unit Tests have come a long way since the v1.0 release. We had zero at that time but Trevor Morse – founder of the Halifax, NS PHP Group and core web2project member – has led the way to 240+ tests focused on the Tasks and Projects classes.
- Subprojects are now Useful: Previously you could denote one project as a subproject as another but it didn’t really do anything, it was just presented a bit differently. With this release, when you assign a project as a subproject, now it creates a token task within the parent project. This token task takes on the start/end dates, duration, hours worked, and percent complete of the subproject. As the subproject updates, the token task updates. Even more usefully, you can use the Token Task as a dependency for other tasks in the parent project. That all sounds complicated, so just try it out.
- The class structure has been completely restructured: While this won’t be relevant to 99% of our users, it makes it much easier to add standalone frameworks – like the Zend Framework or whatever – to the system for other functionality. On a related point, web2project now supports the naming conventions put forth in the Framework Interoperability Group. This will also allow easier third-party authenticators for systems like Drupal, Joomla, or WordPress.
- Audit Logs – We cleaned up the core system objects to provide historical logging of all CRUD operations. Any Add On modules that use the core objects will get this functionality by default.
- Added an ‘update checker’ – This is a regular script which runs to notify the System Administrator that a new release is available and collects basic system information. This was modeled after Drupal’s update functionality. No sensitive information is collected and this can be opted out of via the System Configuration.
A number of community members stepped up and did a great job in reporting issues, helping test fixes and release candidates, and generally being insightful. Special thanks goes to opto, adolfo, zbyszek, and egemme. Without them, v2.0 would not be as solid, useful, and generally as bug-free as it is.
In summary, we closed about 79 items including 15 crash-level issues and 42 minor bugs. Once again, those are just the formally reported issues. If you want to explore everything of interest, check out the web2project v2.0 Release Notes on our wiki. And of course, if you’re looking for ways to share your code more easily, you should check out our web2project git repository.
* And yes, I always wait a few days to announce the releases in case we have to make a patch release. 😉