In case you were wondering what I was doing for the past couple of months, I have been part of a team within the Products & Innovation department of Deutsche Telekom - the PagePlace team, to be precise. PagePlace is a service where you can buy and read eBooks, eMagazines and ePapers. They offer a variety of apps for mobile platforms such as iOS and Android as well as a Qt-based desktop application. You can check them out at http://www.pageplace.de and follow them on Twitter.
But, and that is the good thing, they want to move away from having different apps for different platforms. They want to move forward and have a single web app for all of their supported platforms (Hooray!). That is where myself - and of course some other developers - come in. Our task is to create that web app (and once more push the boundaries of what is possible on the web).
While working on that project, I came in contact with two frameworks: qooxdoo and Unify. In my opinion, they are both totally underrated; in fact, I think not many people even know about them. I want to change that and, as a first step, give you a little introduction to both of them.
qooxdoo
qooxdoo, pronounced ‘kuksdu:, is an open-source Javascript application framework to build applications for various platforms. It offers object-oriented programming features, a great tool chain for devloping, documenting, testing, and deploying applications and it takes advantage of web-technologies such as HTML5 and CSS3 to, for example, create the GUI. For more information about the framework itself, please visit their homepage at http://www.qooxdoo.org. Some demo applications can be found at http://demo.qooxdoo.org/current/showcase. If you want to jump right into working with some code, there is a so-called Playground available.
Unfortunately, I don’t know that many projects that are built upon qooxdoo. Maybe the name holds people back using it? If you happen to know any projects that make use of qooxdoo, please let me know in the comments below.
Unify
Unify is quite similar to qooxdoo; in fact, Unify is build upon qooxdoo. That is why you can use the same great tool chain offered by qooxdoo for your Unify projects. One aim of Unify is to create applications using web technologies that are indistinguishable from natively programmed applications, i.e. applications developed for a specific platform using a specfic programming language.
For more on Unify visit the Unify project’s website at http://unify.github.com/unify/ or take a look at the code on GitHub.
Page Place
So what have we been doing with qooxdoo and Unify so far in our development team. As I mentioned before, we are currently in the process of creating a reader for electronic publications - such as eBooks, eMagazines and ePapers -, and the first beta of a simple ePub-Reader came out a couple of weeks ago. Still a long way to go before it becomes a full-fledged reader application, but we are hard working to make it better every day, adding new features, fixing bugs and improve performance.
The goal we are after is to provide a great reading experience for the user, even when the they are offline. Therefore we need to handle the complete publication on the client side once it has been downloaded from the server. That means unzipping the publication file, parsing and adapting the content (for example, links to images need to be redirected to the unzippped content, images need to be created out of Base64 encoded data URIs etc.), calculating information about where the user is in terms of reading progress and so on. Of course, we need a flexible layout that adapts itself to various screen sizes and screen resolutions. You see, lots of things you usually would do on the server side.
Anyway, if you like to take a look at the current state of the reader application here is a link to a sample (Chrome only at the moment, support for other browser coming soon): Macbeth by William Shakespeare. Hope you like it so far.
What’s next
Currently, we are working on integrating the PagePlace shop as well as a personal library into the application. Stay tuned for more on this and probably some more (technical) posts about qooxdoo and Unify.