web2project Status Update: v1.1 Getting Close

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…