web2project Status Update: Release Candidate 1

This is the sixth of my weekly updates for web2project. For newcomers, feel free to subscribe to my web2project newsfeed here.

I could talk about commits, issue counts, etc, but that's actually the least important part…

As of early morning EST on 13 April 2009, the web2project Release Candidate is live:

web2project-v1.0-rc1.tar.gz

To be clear, we know this is not a perfect package.  If we thought it was 100% bug free, it'd be called a Release and not a Release Candidate.  Towards that goal, if you find bugs, please report them to our Issue Tracker as soon as possible.

In the past week, we've had a dozen commits.  While many of them were small tweaks to resolve minor issues that popped up, there were a couple big ones:

First, there were a couple places where bad handling of the Department filters.  There were a couple places where selecting a Department from the Company dropdown would apply the filter improperly throwing an error or only show Projects for the selected Department.  Since Departments can be nested, it had to handle crawling the tree all the way down to the leaves.

More importantly, the Cascading Tasks issue had some major cleanup.  In the previous implementation, any date change to any task was supposed to cause a ripple effect where every single task in the project was checked and potentially updated.  While this often worked, it also applied quite a few checks that were often unnecessary.  I approached this one just a bit differently.  Now, when a Task is updated (via Edit Task, Tasklog, Project Designer, etc), all Tasks dependent on that Task are checked and update (if needed).  Then all Tasks dependent on that Task are checked and update (if needed).  This continue recursively down each Dependency path until no more updates are required.

Now, there is both a benefit and a drawback of this approach. The drawback is simple.  If the Task is updated via means outside the existing methods – like via a direct database update – the dependent Task dates could be incorrect and only saving a Task on the same branch through the existing methods will update everything.  Previously saving a Task anywhere in the Project would update them.  The benefit is much simpler.  Since only the Task dependencies based on that Task tree are updated, saving a Task is a much more lightweight operation.

Finally, we need your help in testing.  Unfortunately, I don't have a specific date on when we'll go to a full v1.0 Release.  We need to get all critical, major, and even minor bugs completely resolved and triage the rest.  For the time being, we're under a code freeze on all new functionality.  If your feature hasn't made it in at this point, it will be under consideration for v1.1.

If you find any bugs or issues, we need you to report them via the web2project Issue Tracker as soon as possible.

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