Real Project Management for Real Businesses

Browsing Posts published by Keith Casey (caseydk)

web2project homepage As of 22 September 2010, web2project v2.1 is officially released! You can download it from SourceForge now.

For Project Managers, there are not a huge number of tangible improvements. This was mostly a cleanup release:

  • The most important part is that now a User can add Tasklogs for people other than themselves. When you create or edit a Task, you can denote “Allow users to add task logs for others” which allows just that. Users can add hours for anyone currently assigned to work on the Task. The system tracks who logged the time for audit purposes.

For Developers, we had a significant number of cleanups related to timezones, Gantt chart creation, and miscellaneous things here and there:

  • The most important part are some cleanups related to the contact_methods refactoring. There were a number of issues that made it into the v2.0 release that are now closed.
  • More useful in general was a complete refactoring of the Gantt chart creation. One of our goals for v2.2 is to supplement the current image-based (jpGraph) Gantt charts with both a jQuery and a Flex/Flash-based option.
  • We added a significant number of Unit Tests for the system in general but focused on the PEAR/Date and CDate classes specifically. We hope to replace PEAR/Date with core PHP functionality in coming releases.
  • We resolved a number of browser compatibility issues for IE 8.
  • iCalendar generation has been updated to create VEVENTS that pass validation as per the formal specification.
  • We moved a number of duplicate and oddball functions into the deprecation area for refactoring and eventual removal.

For anyone who might be interested, the big time sink during this release was of a legal nature. After the battle between WordPress and the Thesis theme played out and how the GPL could be interpretted, we investigated what it would take to change to a BSD-based license. The good news is that it will be possible – more to follow – and the bad news is the amout of effort involved.

Once again, some great community members stepped up and did a great job in reporting issues, testing fixes, and generally offering insight and sanity checks. Special thanks goes to opto and figgles.

In summary, we closed 38 issues including 3 crash-level issues, 20 minor issues, and 4 features. As always, these are just the formally reported issues and don’t include smaller items that were reported via Twitter, the web2project forums, and other means. If you want to explore everything of interest, check out the web2project v2.1 Release Notes. And of course, if you’re looking for ways to collaborate with us more easily, you should check out our web2project git repository.

You can download web2project v2.1 from SourceForge now.

* And yes, I always wait a few days to announce the releases in case we have to make a patch release. ūüėČ

After a major cleanup of the structure and logic due to a handful of issues, v4.1 of the Project Importer is now available! You can download the latest version here:


The purpose of the Project Importer is to allow users to import their project plans from other systems. Currently Microsoft Project and WBS Gantt Chart Pro are supported.

The significant changes in this release include:

  • Fixed a major issue where dependencies weren’t being imported properly or sometimes at all.
  • Added a tweak to the MS Project processor to make sure the project title is retrieved properly.
  • Fixed an issue where the Project Start Date was not set properly in the MS Project import
  • Tweaked the import process so that if there’s no Company match, it default’s to the current User’s Company. This resolves the issue where a Project could accidentally get assigned to no Company and therefore disappear due to permissions.
  • Changed the licensing to align with the coming web2project license shift.

There is a goal to support additional file type imports. At present, CSV – as an Excel export – is one option but is the most difficult due to a lack of formal/official column/field structure that a user could create. If anyone has any suggestions, please feel free to share them in our forums.

The Project Importer can be downloaded here:

Generally, there are lots of ways, regardless of  your skills:

But if none of that interests you, you can support us on SourceForge.

They’re actively looking for applications to integrate with their systems and make available as a one-click install. We think web2project is a useful tool that should be made available to the tens of thousands of projects on SourceForge. You can help make that a reality.

You can also become our Fan on Facebook, follow us on Twitter, or add us to your Ohloh stack.

In my regular web browsing, I came across a great post from Sara J Chipps entitled “Your Code Sucks.” As she talks about deleting code that sucks and restarting from nothing, something sounded amazingly familiar:

After some growth I encountered code that I thought sucked ever so often. At this point I wasn’t decimating¬†things all together, I would find specific parts of code that I found intolerable and rewrite it. About 9 times¬†out of 10, when I got more than halfway there I’d run into an issue that made me say “Ooooh, that’s why they¬†did it that way” and revert it or use the same “sucky” logic with my syntax.

It was familiar because this is how web2project started.

In late 2007, when the dotProject leadership announced a rewrite from the ground up, we were faced with a choice: a) we could work on the complete rebuild and lose the lessons learned from the past 7 years of development OR b) we could attempt to refactor and cleanup the system to make it stable and useful.

We chose the latter and in the nearly three years since, we’ve worked to do just that.

Yes, we’ve found lots of code that “sucked” and usually we’ve been able to remove and replace it without negative repercussions. This has closed dozens of bugs, eliminated numerous behavior oddities, and has often given us significant performance improvement. More importantly, we’ve been able to maintain a fully functional system throughout. Unfortunately, we’re nowhere near complete. There are places – like the infamous projects_list_data function in the CProjects class – where replacing the logic has proved difficult and seemingly impossible at times.

Regardless, to find and track down these problem areas, we use three different strategies that could work on any project:

  1. First, we use various PHP quality assurance tools. Each gives us a different look at the system and can identify potentially problematic areas.
  2. Next, we actively encourage external Code Reviews. Sometimes questions from someone who doesn’t know our history and reasoning can offer a new and useful perspective.
  3. Finally – and most importantly – we take an active role in our Support Forums to determine who is having problems where and work to determine why.

Do we find them all? No, but we’re regularly working and exploring to find and eliminate more.

Can we use help? Yes, because none of us have all the answers or even necessarily the best strategy to combat the issue.

Can you help? Yes... just remember the Ten Commandments of Open Source.

You’ve updated the Project Status to “Complete” and you expected the Project to disappear, but it’s still showing up all over the place. Go back and Edit the Project again. To the right of the Status dropdown, you’ll see a checkbox labeled “Active?” Simply uncheck that and save. Your project is now Inactive and will only appear on the “All Projects” and “Archived” tabs.