August 2007

This message was first published on the jaws-dev and jaws-announce mailing list

This has been a very short summer ! I am writing this message with a feeling of accomplishment as this summer has been extremely productive. Every single day of the summer, voices in my head asked: what's next ? And right now, the answer seems to be a bright future for the Jaws 2 project.

I have to acknowledge that all the accumulated experience of Jaws 0.x has been a very close ally to me. I should also mention that without veteran developers like Jonathan Hernandez, Pablo Fischer and Helgi Thormar, I could never have achieved this level of code quality. The support from the community has been incredible. Thank you guys !

I also want to specially thank David Coallier, my mentor, who always provided valuable feedback and ideas. David always supported me during the whole summer and I don't think this experience would have been as successful as it was without him. Thanks David !

I remember my first checkout of the branch. 0 files, 0 lines, everything had to be done. This is where we stand right now: - 2542 physical lines of code (without whitespace and comments)

  • 47 files
  • 294 commits
  • We (nearly) have our first working gadget !

The summer has ended but my role as a Jaws developer is far from being a thing of the past. Such a positive experience encouraged me to stay active in the community. Right now, I have two goals. The first one is to work with the community to achieve a release of Jaws 2 as soon as PHP 6 is released. The second one is to write a similar message, in exactly one year, praising my community for all the great support I had during the summer as a student of the Jaws project. Yes, you've read correctly, as a student for the Jaws project: I don't have any doubts that next year, our project will be mature enough to deserve our own spots in the Summer of Code :-).

I wish everyone the best and thank you for this great summer again !

Nicolas Bérard-Nault

nicobn | General | 25 August, 3:58pm | Comment on this

I previously mentionned Doctrine, our ORM library. It is another PHP Google Summer of Code project and I must say that the Google folks are really getting a lot for their money on this one !

I now want to bring your attention to another project, this one from Hannes Magnusson, Livedocs. Actually, it's not about Livedocs anymore.

If any of you ever edited the PHP manual, you know how a pain it is to only see your changes. The manual is extremely slow to build (takes about 4 hours on my computer). Livedocs was supposed to solve this issue but Hannes realised the goal of being the promised land of the PHP documentation was too much of an Herculean task for Livedocs.

This is where PhD comes into play. It is a new project under the PHP project umbrella that aims to generate Docbook documentation. It is developed by Hannes Magnusson and Gwynne Raskind and it's in a very experimental stage at the moment but I'm already using it when I edit the manual. It helps a lot as I can see the changes I make right away. Well... in about 3 minutes but hey, that's a lot better than 4 hours !

I don't have anymore excuses to not contribute to the documentation now !

Anyway, I invite you to check out that new project, it's really worth it !

Nicolas

nicobn | General | 19 August, 9:34am | Comment on this

I recently compiled PHP 6 with the namespace patch and, shit happens, realised Doctrine uses methods named import().

I can't blame the Doctrine developers for not being so "cutting-edge" - even the PHP manual wasn't updated to include import, namespace and goto as reserved keywords. (of course, I took care of this).

A quick fix was to replace import() by imprt(), which is much more ugly, I agree.

And that's another reason PHP programmers must be aware of PHP 6...

nicobn | General | 15 August, 7:00pm | Comment on this

Keep it simple, stupid ! That's one of the most widely acknowledged wisdom in computer science. I think that Jaws 2 pretty well applies it. Well, that was before my implementation of the registry.

One example of my erm... call it what you want: the Jaws_Registry::createKey() method, prior to my KISS-crackdown. It created a new key but also, if the path to the key did you exist, it created it. Pretty much like mkdir -r, but not really, because mkdir creates folders and createKey can create other types of keys. A one letter error in an application and you end up creating a bunch of useless folders. Bravo !

And then, you have Jaws_Registry::moveKey() which calls Jaws_Registry_Key::moveMe() which in the end calls Jaws_Registry_Key::moveSubkey(). Now you understand how I feel. It's bloated. And I have nobody to blame but me. Which is kindof the worst part in all this ;-).

But I promise this will be fixed !

Stay tuned !

Nicolas Bérard-Nault

nicobn | General | 14 August, 12:25am | Comment on this

My last progress update was at revision 6666 and it seems so much has changed in Jaws since ! Where to start ?

  • The registry is now completed (makes use of Doctrine's nested set feature)
  • Data objects can now contain subsections that can be accessed like this: $dataobj->subsection->foo->bar.
  • New subsystem loading interface
  • Make use of assertions when in debug mode
  • All subsystems make use of their configuration options now
  • Started documenting in the Jaws wiki
  • And so many small fixes...

And of course... more is coming soon ! Cheers,

Nicolas Bérard-Nault

nicobn | General | 8 August, 8:46pm | Comment on this
Total Visitors:119727