AJAX in Action 2008

We're back from the AJAX in Action, one of the premier Ajax conferences in Germany. It was the first time I did a qooxdoo talk at a public conference. In May I already had a presentation about JavaScript tooling at the Dynamic Language World, but this time I "officially" presented qooxdoo. My talk was in one of the smaller conference rooms in the basement of the conference center. Since I felt well-prepared I decided to attend the presentation held in the same room right before my talk. The talk was about Silverlight and there were exactly 5 people in the audience. This scared me a bit since I didn't want to talk to an almost empty room. Luckily this didn't happen. The room was filled with about 20-30 people. I was especially happy to find Paul Bakaus the project lead of jQuery UI and dojo commiter Nikolai Onken in the audience. The talk was well received and I think I was able to communicate the philosophy of qooxdoo and its current state. I have uploaded the slides to slideshare.

Since the slides don't work well without my oral presentation you can also download a version containing my presentation notes.

I really enjoyed the conference. Even more than the talks it was the opportunity to meet a lot of interesting people. It was awesome to meet so many German contributors and committers of other JavaScript frameworks. On Thursday evening there was a nice Oktoberfest organized with Leberkäse (meatloaf), Brathendl (grilled chicken) and Maßbierkrüge (1l glasses of beer). We sat together with the dojo guys from uxebu (Wolfram Kriesing, Nikolai Onken and Tobias von Klipstein), Jan Kassens (Mootools), Paul Bakaus (jQuery UI) and Jörg Kress. We had a lot of tech talk, some beer and really a nice evening. Check out the video of our "framework round table" in Tobias' blog post.

Download:

The week in qooxdoo (2008-10-24)

Another week, another weekly status update. Quite a lengthy one this time again:

Bugfixing

Regular framework development saw quite some bugfixing during the week. Some of the changes include:

* ToolTip now (again) allows for HTML content in mode "rich"
* Spinner works again corrently with numberFormat support
* An annoying bug in IE7 was fixed regarding missed click events on Buttons
* Drag&Drop now works inside window widgets
* Hover effect on SelectBox now is similar to the effect on regular Buttons
* Fix for mousewheel in SelectBox when used in combination
with ScrollContainer
* Fix for appearance of ToolBar checkbox widget (state:
checked + disabled)
* Appearance fix for ToggleButton
* Internationalization: Comments are now generated into PO files. A "trc()" method is now included.
* Minor improvements to the portal application (e.g. the application now
also looks ok for smaller resolutions (1024x768))

For a complete list of bugs fixed during the last working week, use this bugzilla query.

Flash

The cross-browser handling of Flash has been improved and made less fragile (for IE), both in qooxdoo 0.7 and 0.8 (e.g. bug 847). If you happen to work with Flash integration and notice some issues, please let us know, Chris will certainly have a closer look.

Manual / Wiki

The Generator Overview page has been update to reflect the actual state of the software, and an additional Generator
Usage
page has been added, to make you accustomed with the command line invocation.

The manual page on internationalization has been updated to account for the internal changes of the build process (i.e. separate "gettext" utils no longer needed in 0.8).

A snippets section was (re-)introduced. It is to collect short code snippets that could help other qooxdoo users. So if you have something to add, please do so. All you need is to login to the wiki and add a section. The page is still quite rough, but don't hesitate to add your tips and tricks till it gets more polished.

Build Performance

We had a recent post on build performance under Windows which spurred a bit of feedback. Thanks to all who posted back. The general perception seems to be that Python running natively under Windows is a good deal faster than running on the Cygwin compatibility layer. It also seems that running the build process under Linux gives an additional performance advantage. One poster suggested that even running Linux in a virtual machine on a Windows host is faster than running on the host directly, which seems impressive. So if you are working on a larger project, or in a team context, it might be worth thinking about a dedicated Linux box to run your build process on.

Build System

First steps have been taken to improve the way you can tweak and modify
standard generator jobs in your own config (see bug 1417). Currently, the way
job definitions are merged (e.g. during job expansion) has been
streamlined and will be further refined. The aim is to have an easy and
intuitive way to overload and/or extend specific parts of a job, without
repeating the whole job in your config all together.

Memory Leaks in 0.7.x

Several tests of qooxdoo 0.8 have verified the solid concept and implementation for avoiding memory leaks, even for large, long-running qooxdoo apps. Compared to qooxdoo 0.8, memory handling of previous versions 0.7.x wasn't as strong as it could have probably been. For most qooxdoo apps in 0.7.x this wasn't a real problem, either because they weren't too complex and/or regular usage wouldn't let the leaks become critical. Some of the larger apps also implemented some strategies (also for performance reasons) to pool and reuse widgets, which helped keeping overall memory usage sufficiently low, see GMX.com for a large-scale app.

For frameworks on top of qooxdoo 0.7.x, most notably Eclipse RAP, this was still problematic. Usually creating and disposing large amounts of widgets for complex, long-running applications, qooxdoo 0.7.x didn't allow RAP for implementing a generic pooling concept due to fundamental limitations of the underlying widget system (BTW, removing those limitations was a major design goal for qooxdoo 0.8 and should now be completely gone).

Anyway, good news is that a more rigorous memory management for qooxdoo 0.7.x is available. Thanks to the good collaboration with Stefan Hansel, the final improvements have been checked into the "legacy_0_7_x" SVN branch (see Revision r16512 and a later fix for Tree). Guess there will be a separate blog post to cover some details, for now please note that there is an additional "destroy()" method available on widgets. Unlike the usual "dispose()" method this also removes DOM elements that belong to the widget. Existing qooxdoo 0.7.x apps shouldn't need code changes (at least not regarding memory management) to work with the latest legacy branch. It would be great to get feedback from existing users of 0.7.x, both for the compatibility of your unchanged app as well as taking advantage of the optional "destroy()" for scenarios that actually require the complete destruction of widgets (pooling still being the preferred alternative).

Upcoming conference

One of the most well-known German conferences on modern web technologies is "AJAX in Action". This year it is held in Mainz, Germany on Oct 28-31, 2008. We will also be around during main conference days (i.e. Wed. and Thu.), so it's a good chance to meet us in person and talk about qooxdoo. Fabian is going to present "Modern GUI development in the web with qooxdoo" (in German). There will also be a RIA Panel that I (Andreas) will participate in. Johnny and Alex will also be around during the two main conference days. Looking forward to talking to you.

Meet the Team

If you haven't had the chance yet to meet us at conferences and other events, make sure to check out the developer page. All qooxdoo core developers at 1&1 have added some info about themselves, including bio and picture. Hope you like to get to better know some of the people behind the project. Of course, all fellow co-developers and contributors are welcome to share some info about themselves and their contributions with the qooxdoo community. Just login to the homepage (it's completely wiki-based) and start updating the developer page.

Have a good working week!

The week in qooxdoo (2008-10-17)

Just a quick post this time as last week went by really fast. Johnny and Alex returned from vacation and had to get up-to-date by working through mailing list threads and open issues in bugzilla. Having started just two weeks ago, our students Martin and Yücel are also making progress with their Master or Bachelor thesis, respectively.

The rest of the team had soon to prepare for a company-internal developer event last Friday, so it was indeed a short week for qooxdoo coding. The event had quite some qooxdoo exposure: five talks/workshops in total were given about various aspects of qooxdoo (mostly introduction to features of 0.8) and related web technologies. The talks were well received, and we're planning on making our output available, either as separate slides, blog posts or by adding any non-redundant info to the qooxdoo manual.

Ok, that's it for the moment. Next status update will sum up some of the individual stuff that has been happening within the project (new contribs, demo apps, etc.). C U.

Build Performance on Windows

I've been recently playing with building qooxdoo 0.8 under Windows, and was shouting out how long it took on my laptop to do a "generate.py build" of the demobrowser including all demos. I was using a Python 2.5.1 under cygwin. My laptop is a moderately outdated machine (Single-core Pentium M 725 1.6Ghz with 512MB RAM running WinXPSP2). Johnny started an argument about the impact of cygwin on the performance, so I did the same again with a native Windows Python, and was shocked: The native version used 34 minutes to finish, whereas the cygwin version took 50! Given all other constraints (e.g. the native Python has the Stackless patch applied) I wouldn't have expected the native version to be so much faster.

Would be interesting to hear if others observe the same dramatic differences.

The week in qooxdoo (2008-10-10)

Here comes the weekly status report. It was a bit delayed, because the online demos were updated first.

Inline Widget

Inline widgets are used to embed qooxdoo widgets into regular HTML pages. The size of an inline widget used to be determined only by the size of its content. But there are scenarios in which the root's DOM element should manipulate its size: for instance, the DOM element holding the inline widget may have a dynamic CSS width of "80%" and should therefore resize with the page content. With the recent code changes the qooxdoo widget inside this DOM element can now be configured to resize in sync with this element. Both the horizontal and vertical behavior can be configured independently. Take a look at the demo to see this in action. Resize the page and see how the SlideBar stretches accordingly. Then change the font size and see how the button height changes (The button's parent DIV has a height of "4em").

Desktop

"Desktop" is a new widget in qooxdoo 0.8. It acts as a parent widget for "Windows" and defines a region where windows can be placed. Windows added to a desktop can never be positioned outside of the desktop. If a window is not added to any specific Desktop, the default desktop is used, which occupies the whole page and overlays the application. This week some Desktop related bugs were fixed, see the new demo.

Framework

A number of issues were addressed and fixed, often in collaboration with fellow developers and the community. Thanks to all people involved in reporting, analyzing and fixing issues! Some of the issues resolved:

- IE application loading bug.
- Missing methods ''getActiveWidget()'' and ''getFocusedWidget()'' were added to the focus manager.
- Several Spinner bug fixes

Spket IDE

Have you already tried Spket IDE with its built-in qooxdoo support? If you are working with the SVN checkout of qooxdoo, make sure to get a hotfix (which will skip svn-related targets when opening a declaration)

Outlook

This week Alex and Johnny will return from vacation, so it's the first time since the 0.8 release that the core team is complete again. Some of us will be involved preparing an in-house tech event at the end of the week. After that we'll continue to work full-steam towards a qooxdoo 0.8.1 release.

C U L8R

The week in qooxdoo (2008-10-03)

Here's the weekly status update. It arrives a bit late, as there was a National holiday on 3rd of October, so the qooxdoo core team at 1&1 enjoyed a long weekend.

Last week we had the pleasure to welcome Yücel Beser, who joins the team for a Bachelor thesis on qooxdoo, and Martin Wittemann, who's back full-time for his Master thesis on qooxdoo data binding. Fabian also returned from vacation, so work continues with bugfixing and advancing the core framework. Some fundamental internals are to be addressed, e.g. memory leaks in 0.7 or script loading in 0.8. Watch out for some more details about topics and agenda.

Spket IDE

A great announcement was the integrated qooxdoo support in the new release of Spket IDE. It can either be used as a stand-alone application or as a plugin to Eclipse IDE. It features code assist for qooxdoo 0.8, supporting API reference documentation. Pretty handy is the "open declaration" feature, that allows to jump to the corresponding source code of a function or constructor. See the Spket IDE qooxdoo features for more details. As Eric Suen noted, support for custom classes will be added in a future version. Keep up the good work!

Textmate

Another topic came up on the mailing list for better qooxdoo tool support: Mike was asking for a collaboration on a qooxdoo Textmate bundle. As there are some interested Textmate users in qooxdoo land, such a support might become a nice addition to qooxdoo-contrib. If you are a Textmate/qooxdoo user, you're welcome to help in creating and refining such a bundle.

JtOS - Web Operating System

Jhonny Thio let the community know about his very first qooxdoo app, which is the final project of his studies at university: JtOS is a new kind of Operating System, where everything resides on a web browser. With JtOS, you will have your desktop, applications and files always with you, from your home, your college, your office or your neighbour’s house. Just open a web browser, connect to your JtOS System and access your personal desktop and all your stuff just like you left it last time.

Isn't it pretty amazing what kind of cool web applications qooxdoo allows everyone, even newbies, to build? If you also created a qooxdoo app that you like to share some info about, please tell others on the mailing list and add it to the real-life examples on the wiki-based homepage.

 

Control

 

Categories:

Archives:

 
SourceForge.net Logo

Bad Behavior has blocked 573 access attempts in the last 7 days.