Welcome back to the first weekly status report in 2010. Of course, this series of activity reports continues to allow you to closely follow the project and its progress.
Applications
Demobrowser
You might have already noticed the filter capacity of the demobrowser. This filter enables you to search for demos with a specific name and some predefined tags. We defined a new search criterion this week by adding the qooxdoo classes that are used by any specific demo application. Now you can search for every demo using qx.ui.form.TextField for example. You can also filter for namespaces or parts of namespaces. If you are interested in all classes of the qx.bom package, just use a 'qx.bom' filter so see every demo using it.
Playground
We took the last week to refactor the whole playground code. This gives us now a solid base for further features of the playground. The first of the new features is an integration of bit.ly, the URL shortening service. The playground now features a button which brings up a shortened URL for the current playground URL including its hash. This gives you the chance to share your code snippets easily without the need to bother with the very long URL containing the playground example code.
The next task is to support gist.github.com. We already started the implementation and hope to have it ready for the next weekly.
Bugs
For a complete list of bugs fixed during the last working week, use this bugzilla query.
Generator
Configuration
An new and experimental configuration feature has been added: the use of a user-specific profile directory. Currently, the generator will look for a file <user-home-directory>/.qooxdoo/generator.json, "user-home-directory" being the platform-specific path to the current user's home directory (ie. what Python's os.path.expanduser("~") evaluates to). On *ix platforms, this is equivalent to the shell's "~" directory, on Windows platforms something of the form C:\Documents and Settings\<username>.
If the generator.json file is present, it will be automatically included as the first include file in the current configuration file. This way, you can inject generator settings into all jobs you run in various applications. The syntax of the generator.json file is that of a normal qooxdoo configuration file. You can e.g. enable extensive logging for all source builds, or force a format:false for all build scripts.
Performance
Work has been done to improve the re-use of cache objects during build runs of the generator. For one thing, there was an inconsistency in the way syntax trees were written to the cache, so that same trees were calculated and written twice, rather than re-used. This has been fixed.
Another improvement concerns builds with variants. In general, the syntax tree and (consequently) the dependency information of a class is affected by the variant set that is to be build, so this information is stored in the cache under a key specific to the variant set. But what if a class uses only a subset of the variant keys in the current set (or doesn't use variants in its code at all, for that matter)? Then its tree and dependency information could be re-used for several variant sets where changes in the value of a variant doesn't affect the specific class. Exactly this kind of re-use has now been implemented, resulting in less cache space and less run time requirements (as e.g. only 33% of the framework classes use variants code at all).
Finally, for the calculation of image information (e.g. image sizes), cache access has been optimized, so the generated information is written less often to the cache. For applications using a lot of images (i.e. a couple of thousands), this was a hot spot, too.
All optimizations together can lead to remarkable speed gains for an initial build run (empty cache) in certain scenarios, like more than 50% for a project that creates several variants with lots of graphics.
Community
QxWT
Along with the release of qooxdoo 1.0 a new parallel project QxWT has been made available. Kudos go to Tom Schindl from BestSolution.at, who did a fantastic job of creating a GWT-wrapper for qooxdoo: QxWT exposes most of the qooxdoo-JavaScript-API to GWT-Java-developers. Just like qooxdoo is a JavaScript-only application framework (without requiring HTML, CSS or DOM knowledge), think of QxWT as a Java-only version of qooxdoo, based on the Google Web Toolkit.
There has been some more progress since the original release, and Tom posted a series of more detailed articles, #1, #2, #3. If you're heavily into Java or have been using GWT already, you should check it out.
That's it for this week, see you around next time.