dotProject Development: Timezones

There's nothing like a real success. I don't mean a little one where you feel good afterwards and move on. I mean one where you can look at it, turn it over, shake it, and say “wow, this is nifty”… well, we just had one:

dotProject HEAD now supports user-based timezones for both Tasks and Events.

Alright, alright, for a web-based collaboration system, it should have supported them much earlier on. Point taken.

The most important aspect of this is that now times, dates, etc can be represented in a way meaningful to you and equally meaningful to everyone who needs to know about it. If you have a deadline at 5pm EST, your team members in California will see it on their calendar as 2pm PST. It doesn't take any additional thought, configuration, etc on your part except setting your timezone preference. How easy is that?

On a technical note, we took the usual route: All datetimes are stored as UTC in the backend and then shifted accordingly on the display side. Since this timezone shift only happens on the display, if you're visiting Chicago, adjust your preferences and voila. Of course, we could have done the conversion at the UI layer using Javascript timezone detection, but as we all know, a browser isn't the only way to access resources. More on that at a later date… 😉

Of course, there's one problem with this change: How do we convert all the old data? CaseySoftware for one has about 2.5-3 years of dotProject data that could be updated. Realistically, only about 20% of those projects need to be converted, but the problem stands. I'm still thinking through this one, but I'd be happy to hear some thoughts…