web2Project

Real Project Management for Real Businesses

Browsing Posts published by Keith Casey (caseydk)

Yes, you read that correctly, we’re getting close to our v1.1 release.

We’ve been working quietly behind the scenes to make a number of things happen. Some are big, some are tiny, but here’s a rough list of them:

  • Unfortunately, a number of bugs – most just annoying, one important – made it into the v1.0 release. These were our top priority and are therefore resolved. There will be a detailed list in the v1.1 Release Notes.
  • We had all kinds of problems with Special characters like Umalutes and a few other things. A few users – namely eureka, pacho, and egemme – have led the way in given us tips and tricks and the necessary code to make the system UTF-8 compatible. There are probably a number of places which still need work, but the majority of them are wrapped.
  • A number of major performance improvements have been made.
    • Previously, there were a number of screens which would count/group all the Tasks in the entire system just to display a simple count. We’ve modified the flow so that Tasks are counted for a specific Project whenever one is saved or deleted. On average, this creates more database reads and writes but each read is a fraction of the size of the original read and the write is a single row. In initial testing, the performance on the Project List screen – url: ./web2project/index.php?m=projects – is faster by approximately 20% and uses 50% less peak memory.
    • There was a similar function related to the Tasks and Task Logs. On every Task View – url: ./web2project/index.php?m=tasks&a=view&task_id={task_id} – the hours worked were calculated on the fly. This has been changed to total the hours for a given Task whenever a task log is saved. Once again, this makes quite a few more reads and writes, but they’re smaller and more focused. In initial testing, the performance of the Task View screen is faster by approximately 5% and uses 20% less peak memory.
  • Next, with some guidance and great examples from Trevor Morse leading the way, we’ve implemented some Unit Tests. We don’t have 100% coverage on anything yet but the Projects, Companies, and Tasks Modules and numerous supporting functions have high coverage and are steadily getting better. This will be an ongoing effort as we continue development.
  • Next, the classes have been converted to the PHP 5 equivalents. All methods and properties have been marked public/private/protected as necessary. While this is normally a major change, since we already required PHP5 at installation, it’s a much smaller change than you might think.
  • Finally, a search interface has been created.
    • The previous version of the SmartSearch module – Pedro’s ingenious creation – had a couple minor weaknesses. The most difficult one required the creation of a SearchObject created for every module in the system that you wanted to be searchable. While this is fine for core modules, it makes Add On modules either unsearchable or someone has to hack core… both less than ideal.
    • Therefore, we created a hook_search method – you can see the first version on the Projects class – which allows any module to become searchable.

Other than that, we haven’t done much in the past 80-couple days…

I’ve been quiet on web2project for the past few weeks, but I thought I should share some of the latest developments.

The single biggest improvement currently is the inclusion of Unit Testing.

Unit Testing has been on the agenda for months and years. The problem was that something else – often bugs, sometimes new features – would creep up and push it off the todo list. And then something happened at php|tek this time around:

I met Trevor Morse – lead developer of Azorus and the founder of the Nova Scotia PHP Developers Group.

Within their company, they took a very familiar approach. They started writing unit tests for the new features and as bugs were discovered on existing features. While it sounds like a slow, painful process, it actually works out quite well. Instead of seeing tens or even hundreds of thousands of lines that need to be tested, you see only a given function or only a given bug. Over time, this steadily improves the quality of the codebase and also sets a good example for current and future developers on the “right way” to do things.

So a few weeks ago when Trevor passed me some Unit Tests and a Phing script to run them, I was suitably impressed not only by his motivation, but also by his beginnings on this strategy.

Within a few days, I had integrated his phpUnit tests – available since r444 on 18 June – and expanded the Phing script to include some other functionality such as a php lint check, and a coding standards check (PEAR). In the weeks since, he’s provided Unit Tests for the vast majority of the Companies Module and some of the Project Module. In the meantime, I’ve been working on some of the supporting classes and functions used by the rest of the system as I’ve tracked down and closed a few bugs.

In addition to improving the quality of the system, Trevor has found and properly diagnosed at least two bugs while I’ve found a few others. Combine with this the little performance improvements and tweaks that have been made and the next release could be even more perfomant. If you’d like to browse the tests and offer feedback – constructive criticism only, please – feel free to browse our SVN repository on Sourceforge.

And in case you want to see them, the web2project Unit Test Report is available here… warts and all.

Warning: Since the vast majority of the tests run against the database with users of known permissions, etc, under no circumstances should you run the tests against your production system.

In other news, web2project v1.1 has been specified. There are a number of cleanups, improvements, and fixes going in – 27 to be exact. A couple are important, most are pretty small, but the bulk are necessary to the overall improvement of the system. About six of them are already closed, a few more are on the way.

If you run into any problems with this release, PLEASE address them here in the forums. Odds are if you’re having problems, others are too, so answering them together in one place makes much more sense and is a more productive use of everyone’s time.

And by the way, we’ve already sketched out a rough draft of the roadmap for v1.1 and come up with an estimated timeline for release. You can review the web2project v1.1 plan yourself. A few things may shift into or out of that list, but that’s where it stands now.

~ Keith “caseydk” Casey @caseysoftware

Wondering if we could teach a bit more about web2Project? now you can learn what web2Project is all about.

We took a very different approach towards documentation from the rest and we went through a more visual solution because a picture is worth more than a thousand words, and we are sure it will be a lot easier for the users to understand the application this way.

So where can you find it?
http://wiki.web2project.net

Thanks go out to Keith for setting up our Wiki site, to Bruce for the terrific pictures and Stephen who did the amazing video training and most of the written work.

Pedro A.

Continuing the effort of providing a product that is Open Source but still making it the least cumbersome as possible, we are providing a place where you can view a complete cross reference of web2Projects code.
Hardcore programmers will love it, and the casual user can always use it for reference when getting support on the forums.
And the fun part is that it is updated daily, so you can always count on it to help you out with the latest code.
Click here to see the web2Projects Source Code Reference

Speaking of support and forums, we are introducing a new support channel… the LiveChat.
It is our way of improving the way our community interacts, bringing it together faster because it is integrated with our forums, so if you have a forum account you will be able to use it right away.
LiveChat is our way of saying that good and fast support are a priority for us, just as much as creating a good and responsive community. The more we communicate the faster we’ll evolve.
So join our community in the web2Project Forums and see for yourselves.

web2Projects infrastructure is now in place as we approach our first release… stay tuned… this baby is about to be born.

Pedro A.