Download qxoo now!

The last couple of days we had some time to use our new qxoo package, which you might already have read about,  and did some experiments with it. All of us here in the core team like it so much we thought we had to write another blog post to show some details on how to use it on the server side.

node.js

So here we go! As a first example I want to show you how to use it on node.js. We are using classes, inheritance, properties, the event system and even single value binding in this example.

var sys = require('sys');
var qx = require('./qx-oo.js');
 
qx.Class.define("Fish", {
  extend : qx.core.Object,
  properties : {
    age: {
      event : "changeAge",
      init : 3
    }
  }
});
 
qx.Class.define("Shark", {
  extend : Fish
});
 
var fish = new Fish();
sys.print("The fish is " + fish.getAge() + " years old\n");
 
var shark = new Shark();
shark.addListener("changeAge", function(e) {
  sys.print("The shark changed its age to " + e.getData() + "\n");
});
shark.setAge(5);
sys.print("The shark is " + shark.getAge() + " years old\n");
 
fish.bind("age", shark, "age");
fish.setAge(7);
sys.print("The fish is " + fish.getAge() + " years old\n");

The output looks something like this.

The fish is 3 years old          // 1
The shark changed its age to 5   // 2
The shark is 5 years old         // 3
The shark changed its age to 3   // 4
The shark changed its age to 7   // 5
The fish is 7 years old          // 6

Surely you've seen that we are creating two classes, a fish and a shark which is a fish of course. Our fishes have one property named age. Properties, in short, are data stores with automatic generated accessors and other goodies like in this example, a change event. We create an instance of each class and play around with the generated setter, getter and events. The second to last line shows the single value binding which synchronizes the two age properties.
This should look familiar to anyone using qooxdoo, the only difference is that its running on node.js and not in the browser (This is the corresponding "browser version", just make sure you check the Log pane to see the same messages).

Rhino

Next up, let's write a script to run in Mozilla's Rhino that demonstrates the use of Mixins:

load(["qx-oo.js"]);
 
qx.Mixin.define("MBar", {
  members :
  {
    bar : function()
    {
      return "bar!";
    }
  }
});
 
qx.Class.define("Foo", {
  extend : qx.core.Object,
  members :
  {
    foo : function() {
      return "foo!";
    }
  }
});
 
qx.Class.include(Foo, MBar);
 
var foo = new Foo();
print(foo.foo()); // "foo!"
print(foo.bar()); // "bar!"

Again, with the exception of the Rhino-specific load and print statements, this is plain qooxdoo. Assuming that js.jar (the Rhino Java archive), qx-oo.js and a file containing the code listed above, named e.g. test.js, are all located in the same directory, this is the shell command that will run the script in Rhino:

java -cp js.jar org.mozilla.javascript.tools.shell.Main test.js

If you want to give it a try you don't have to download the SDK and build it yourself. Just go to our devel applications page and download the precompiled script in either an optimized or unoptimized version. This will be updated usually once a week on Friday, like all other qooxdoo online apps.  While this qxoo package is still in experimental state, the code it contains is rock solid, having been used for a couple of years in the browser. Give it a try and send us your feedback!

qooxdoo 1.2 and 1.1.1 released

We are happy to announce another joint release of the qooxdoo framework. You can download versions 1.2 and 1.1.1, the corresponding release notes and manuals are online as well.

The qooxdoo 1.2 release comes with substantial improvements in almost the entire range of the framework. Here is a brief overview:

  • The entire manual is now in SVN, using reStructuredText as markup. It is delivered with the SDK as HTML and also as a PDF document for offline reading (about 400 pages).
  • A new virtual List was added, which can handle really large numbers of items. It takes full advantage of qooxdoo's data binding layer, so another demo shows how you can create an extended list with custom renderers. The virtual List is marked as experimental, and we look forward to include user feedback as we continue with the development of additional virtual widgets.
  • As another preview we added a Selenium window to the cross-browser Inspector to aid in developing automated GUI tests for qooxdoo applications.
  • The API Viewer API Viewer now allows you to open distinct tabs for any class or package description. Just press “shift” or “ctrl” when mouse-clicking on a reference.
  • Many handy features made it into the release to support your work as app developers, e.g. generating API doc files for dedicated classes by a single command, including child control info with the API reference, several optimizations in the toolchain, more configuration options for the generator, experimental Jython support, real-time logging in the Playground, and so on.
  • More than 200 bugfixes and enhancements over the previous release.

At the same time, and following our release scheme, we're releasing an 1.1.1 version, which is a regular patch release of the 1.1.x branch and contains only bug fixes. It can be used as a drop-in replacement for anybody using 1.1, and users of these versions are encouraged to upgrade, i.e. if they don't upgrade directly to 1.2.

Many thanks from the core developers to the community of contributors and users, who helped making these versions the most advanced releases to date. Enjoy!

Contribution Demobrowser

As you surely all know, qooxdoo-contrib is the project's place for hosting various contributions and therefore a vital part of the qooxdoo ecosystem. We always try to improve things there, so here's a preview of a feature we've been working on for quite a while now.

There's a lot of great projects in qooxdoo-contrib, but the only way to try them out for yourself is to check out the repository and build the demo application (if the contribution provides one) or, failing that, to include the library in a project of your own. Fairly time-consuming for a quick evaluation.

That's why, as another step towards making qooxdoo-contrib easier to use, we created the Contribution Demobrowser, which is exactly what it says on the tin: A variant of the qooxdoo framework Demobrowser that lists contribution demos.

If you're a contribution maintainer, here's what you can do to have your project showcased in the Demobrowser if it isn't already:

  • Reorganize your project so that its directory structure conforms to that of a contribution skeleton. This will allow the Demobrowser's build process to find your demos.
  • Make sure the project's Manifest file is correct. For the "qooxdoo-versions" key, it's good practice to list the latest stable qooxdoo release the contribution is compatible with instead of just "trunk". If you need to refer to development versions between releases, use the appropriate "pre" notation like "1.3-pre". If there are multiple versions of the project, make sure they each have a unique entry for the "version" key, corresponding to the unique folder each contrib version is in.
  • Somewhat obviously, make sure that your demos will build and work as expected.

Eventually, we plan to have the contrib Demobrowser automatically update and publish itself at regular intervals. Please note that currently we limited the demos to contribs that are in a fairly consistent and up-to-date state. For the time being we also focus on demos that have purely visual frontend content, so none of the typical utility classes, backends or tooling contribs are included, which are a separate topic.

Starting with a subset of contribs we can continue to work closely with their contributors to further improve the contrib demobrowser and the consistency and completeness of contribs. All (prospective) contributors are welcome to try out the demobrowser themselves, see the readme file in the qooxdoo/contribDemobrowser checkout of qooxdoo-contrib.

We hope such a contribution demobrowser allows to bring contribs to more people's attention, helps authors to improve their existing contribs and encourages users to provide more high-quality contribs. As it is an early preview there obviously is much that could be improved, we're well aware of that. But if you could give specific feedback to the current state of the contribution demobrowser, what you like about it and how well you're doing in getting your contribs to run in it, that would be much appreciated.

Going to EuroPython 2010

I will be attending EuroPython, the  conference of the European Python community, this year. The event will be held in Birmingham, UK, on July 17th - 24th. I will also be giving a presentation, talking about how we use Python with qooxdoo.

EuroPython 2010

Manual 1.2 Preview

Sphinx LogoThe new SVN-based qooxdoo manual is online. As you can see from the URL (http://manual.qooxdoo.org/1.2-pre/), we've followed an established scheme: We have a dedicated sub-domain, manual.qooxdoo.org, followed by a version-specific path like 1.2-pre here, and will support additional "meta" paths like 1.2.x (for the latest stable 1.2.x version), current (latest stable) and devel. This duplicates the scheme we have e.g. for the demos. We plan to update the devel version of the manual regularly like the demo apps (currently once a week, on Fridays).

The manual itself still closely resembles the 1.1 manual. The index page is slightly overhauled, but most "content" pages are direct copies of their 1.1 counterparts. Then contentual work will ensue in the course towards the 1.2 release. All pages are generated from reST-formatted source files that are processed by Sphinx. Parallel to the HTML version of the manual, this allows to create a PDF version of it, which you find offered in a download link from the index page. Some of you might find this interesting. There will also be a generated version of the manual as part of future SDK releases, so everybody downloading the SDK will have an offline manual ready.

As always, feedback is welcome, both regarding content, organization/structure and coverage of the information on one side, as well as hints going down to typos and mistakable formulations in specific text passages on the other. If you find yourself envisioning major modifications you can open a bug report and attach patch files, as with code issues. We hope that most people will be happy with this way of going about things and see the benefits of it, now that maintaining the manual no longer boils down to wiki editing :-) .

qooxdoo 1.1 and 1.0.2 released

We are happy to announce a joint release of versions 1.1 and 1.0.2 of the qooxdoo framework. Downloads are available, and release notes and manuals are online. As always, many thanks to the entire community for making this happen, from the core developers, to committers and contributors, to users and enthusiasts who brought in questions and comments and suggestions.

The qooxdoo 1.1 release focuses on performance enhancements. These cover both time and space performance, and range from speedups of the build system, over partitioning of the generated code, load and start-up speed of the deployed application, to improvements of the qooxdoo run time layer in the browser. Here is a brief overview:

  • Application parts can now be downloaded in parallel instead of consecutively in the running application. By leveraging parts the minimum size of a qooxdoo application is down to about 6kB gzipped (from about 30kb gzipped).
  • Application shutdown and disposal has been improved (~30% speedup on shutdown).
  • Support for CSS3 decorators  (40% - 50% speedup on supported browsers).
  • Support for HTML5 functionality where available.
  • Support for ECMAScript 5 functionality where available.
  • Improved class system (~60% speedup when creating instances).
  • Re-implementation of the base call optimizer.
  • Improved object registry  (~33% speedup when registering objects).
  • Speed ups of the build system.
  • I18N information can now be loaded as locale-specific parts.

At the same time, and following our release scheme, we're releasing an 1.0.2 version, which is a regular patch release of the 1.0.x branch and contains only bug fixes. It can be used as a drop-in replacement for anybody using 1.0 or 1.0.1, and users of these versions are encouraged to upgrade.

As always, feedback on any of the releases is appreciated. Enjoy!

We’re hiring!

To further improve and grow qooxdoo we are looking for talented and experienced JavaScript developers. There are three open positions within 1&1, the world's #1 web host, for both qooxdoo framework development and in-house qooxdoo application support.

The first position is to be restaffed by a senior-level JavaScript expert. You will work directly with the fine colleagues of the qooxdoo core team at 1&1 in Karlsruhe/Germany, one of Europe's premier technology regions. Solid work experience with JavaScript, excellent OO programming skills and a good knowledge of and passion for web-related technologies will enable you to actively advance and co-architecture qooxdoo as one of the most innovative web application frameworks. For an easy integration into the local corporate environment we are primarily but not exclusively looking for German-speaking candidates.

The other two positions for JavaScript developers are to support the expansion of the development teams at 1&1 in Bucharest/Romania. Besides co-developing the qooxdoo framework in close cooperation with the core team, you will also enable and support other in-house developers in creating impressive qooxdoo applications. Of course, good JavaScript knowledge and web-related programming skills are key for becoming part of a great new qooxdoo competence team in an international setting. Also see the online job description.

If you are interested in any of the job offers, feel free to ask questions and/or send in your resume to me. If you know somebody that could be interested, please let him/her know. We're looking forward to hearing from you and hopefully to having you become part of the qooxdoo team. :-)

Andreas Ecker
Project Lead
andreas DOT ecker AT 1und1 DOT de

Saying Farewell

After more than three years as full time qooxdoo developer I (Fabian) am going to leave 1&1 at the end of March. Looking back it is amazing how much qooxdoo has evolved.

  • When I came to 1&1, the qooxdoo core team consisted only of Alex, Andreas, Sebastian and me. Today the qooxdoo team has eight full time developers.
  • IE7 just came out and we were just starting to experiment with Safari. Today we have HTML5, CSS3, the mobile web and more.
  • In 2006 JavaScript was still regarded as a toy language. Today we have JavaScript everywhere. On the Phone, on the Desktop, on the Server and of course in the browser.
  • qooxdoo itself has come a pretty long way as well. We've added the OOP layer with version 0.7. In version 0.8 we reimplemented the widget and layout system from scratch. This all resolved into qooxdoo 1.0 which we released last December.
  • The perception and adoption of qooxdoo has changed as well. From the little known framework with a weird name, qooxdoo has grown up to be recognized as one of the top rich client JavaScript frameworks. Inside of 1&1 it has become the basis for most of the JavaScript development including the impressive gmx.com mail client.

The team is awesome, the community is extremely nice and qooxdoo is on a very good way - why on earth would someone leave this behind? One reason is that qooxdoo is leaving the rough waters of creative and sometimes chaotic development and entering the calm waters of a stable business approved toolkit. Deep in my heard I'm still a creator, who wants to build stuff. I'm not as good in maintaining things. That's why it's time for me to move on.

I'm really proud and thankful for being part of the team. I know qooxdoo can do without me - time will tell if I can do without qooxdoo.

Thank You

qooxdoo 1.0.1 released

After the successful launch of qooxdoo 1.0 end of last year, here comes a regular update to incorporate the latest bug fixes and also a number of enhancements.

qooxdoo 1.0.1 is a patch release, meant to be backwards compatible to the previous major release qooxdoo 1.0. No migration steps should be necessary to continue to develop and build your existing apps. Please upgrade to take full advantage of this latest stable release.

From the detailed release notes, here are some of the most important fixes:

  • Fixed an issue in Firefox 3.6, which was released last week (01/21/2010). The native scrollbar widgets did no longer react on clicks on the scrollbar buttons. This is a known regression in Firefox 3.6, but fortunately we could find a workaround for this issue.
  • Fixed a critical issue that prevented IE to run properly under SSL. See Bug #3305 for details. It is strongly recommended to update to this release, if your application is deployed via https.
  • Hiding elements, which use the AlphaImageLoader, can occasionally cause IE to completely black out the screen. We now use a technique described here to fix it.

As the latest stable version it is also perfect for new users to easily get started with qooxdoo. Download and enjoy this brand new qooxdoo release.

5 Year Anniversary

That's right. Today we can all celebrate qooxdoo's 5th anniversary. :-)

While it is hard to exactly determine the actual start of a project like qooxdoo, January 27th, 2005 was the day the project was registered at SourceForge, the world's largest OSS development web site. This first official appearance certainly qualifies as the "birthday" of qooxdoo.

As a true open source project qooxdoo used public code repositories right from the start. Everyone that followed the progress of the framework over time, either in a passive or active role, saw some very remarkable steps: after the first official release in early 2005 there have been a total of 27 stable releases of qooxdoo, including some ground-breaking and really innovative packages.

When talking about 2005, it is interesting to note that qooxdoo started a month before the term "AJAX" was even coined. While nobody could really foresee all the hype about Ajax, there was already a clear understanding of the potential if not power of JavaScript and modern, cross-browser applications. And a need for qooxdoo as an advanced application framework to make that vision a reality.

It is our pleasure to thank all the people that kept believing in this vision and made it such a fascinating reality! The support by 1&1 as the initiator and maintainer of the framework is indispensable, employing us as a team of full-time core developers. Working with fellow committers and a large number of contributors is a great every-day experience and always a source of inspiration. You really help making this an outstanding JavaScript framework. Last but not least many thanks to all of you who create impressive applications with it, but don't forget to let us know about weak points to address, and also to tell others about the strong points and the fun in working with qooxdoo.

Lets make it another 5 years of innovation, success and fun of developing and using qooxdoo!

Next Page »
 

Control

 

Categories:

Archives:

 
SourceForge.net Logo

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