Off to a Great Start: Ubuntu App Developer Week - Day 1

Ubuntu App Developer Week - Day 1 Summary

A great start for a great week. Looking at the lots of participation and questions during the first day shows that developing applications in Ubuntu is a hot topic. Here is a small summary from yesterday's schedule.

Enabling Multitouch and Gestures Using uTouch

By Chase Douglas and Stephen Webb

Chase and Stephen delivered an overview on the whole stack of touch technologies focusing on two main aspects: gestures/uTouch and multitouch. On gestures, they showed us how there is a difference between general-purpose stroke gestures and defined gestures primitives, such as "drag", "pinch/expand", "rotate", "tap", and "touch", which enable the possibility of defining a gesture language. A high-level overview of uTouch followed, with a description of the API and a couple of code examples showing how to integrate applications with it. To wrap up the session, they explained how Ubuntu will be the first distro to bring multitouch in 11.04 and how this was made possible, such as extending xorg's XInput to version 2.1 to add multitouch support and. On the app developer side of multitouch, they announced a pre-release addition to the Qt framework that will support multitouch.

Check out the session log here.

GObject Introspection: The New Way For Developing GNOME Apps in Python, JavaScript and Others

By Tomeu Vizoso

On this session we saw the initial problem GNOME developers were facing in the past to provide and maintain bindings in multiple programming languages, and how introspection came to the rescue. The reason for having several bindings had always been to enable interaction with the GNOME platform using other languages than C. With introspection, there is no need for external bindings, as the C API itself contains all the required information. Not only that, but this information is also available at runtime without a considerable performance cost. He then went on to describe the workflow changes, the new typelibs and .gir files, and describing what annotations are. Following that, the changes required for library and, most especially application writers, sharing some tips on how to port applications to use GObject Introspection. He finished the session with a few pointers on where to go from here and to the resources to get more info about introspection.

Check out the session log here.

From English to any language: internationalizing your apps

By David Planella

The session started of with the description of some of the main players in the internationalization game: gettext, intltool, Launchpad, followed by a bit more insight on the gettext concepts and terminology. The idea was to deliver a hands-on session that could be nevertheless used generically to provide i18n support to any application in any programming language. The second part of the session focused on making a choice of a programming language and framework to showcase a practical example on how to internationalize an app. So Python and Quickly were used as an easy way to develop an internationalized application in a matter of minutes. From that example the session then focused on describing the main bits to provide native language support.

Check out the session log here.

Widgetcraft: The Art of Creating Plasma Widgets

By Harald Sitter

On this session packed with code examples, Harald started with the description of the technologies involved in developing widgets for Plasma, otherwise known as the KDE desktop or the KDE workspace, and how Plasma comes in several different flavours for different form factors. Next were Plasmoids, the name by which Plasma widgets go, which can be written in Javascript, C++ (both always available), Python,  and Ruby. He then moved on to hacking, creating an easy-to-follow, bare setup for a Plasmoid, mentioning how the plasmoidviewer tool can be used to test them prior to deployment. The next steps involved extending the Plasmoid, adding UI functionality such as buttons and other visual elements. All the code is available here.

Check out the session log here.

Rock solid Python development with unittest/doctest

By Barry Warsaw

Barry delivered a great overview to unit- and doc- testing Python applications, and how to hook these into Debian packages as well. After briefly pointing out to resources for background reading on testing, he then delved into the coding example he had set up to as an aid to the session. Starting with unittesting, he showed us the tests were set up in the code and how to run them, as well as what a failing test looks like. Next on the list were doctests, emphasizing that they are testable documentation, written in restructured text (.rst), and that they do not replace, but rather are a complement to unittests. Again, he showed us how they were written and run. He wrapped up explaining in detail how to integrate them all in setup.py and to a Debian package.

Check out the session log here.

The Day Ahead: Upcoming Sessions for Day 2

Well, you thought that was all? Lots of additional app developer goodness are waiting for you today. Let's have a look at what's in store for day 2:

16.00 UTC
PyGTK is dead, long live PyGI! Using gobject-introspection in Python - Martin Pitt
PyGTK might be dead, but only to be succeeded by the power of introspection. Join Martin to learn all you ever wanted to know about using the new cool stuff in the Python/GTK world: PyGI. He tells us about the focus of his talk: "[...] how to use the GI typelibs in Python, and how to port PyGTK2 applications to PyGI. For the most part these sessions are distribution neutral (we don’t have any special sauce for this in Debian/Ubuntu, it all happened right upstream :-) ); only a very small fraction of it (where I explain package names, etc.) will be specific to Debian/Ubuntu, but shouldn’t be hard to apply to other distributions as well."

17:00 UTC
Zeitgeist API & Zeitgeist Application Integration - Manish Sinha (मनीष सिन्हा) and Seif Lotfy
The Zeitgeist Project is taking many important projects and distributions by storm. It's all about seamlessly tracking user data and events in a way that is revolutionizing the way they interact with their desktop. Do you want to know more about Zeitgest? Or even better: do you want to use Zeitgeist features in your application? Project leader Seif Lotfy and developer Manish Sinha will tell you all about it and be willing to hear your questions

18:00 UTC
GStreamer+Python: Multimedia Swiss Army Machete - Jason DeRose
When you hear GStreamer and Python in the same sentence you know for sure that you're up for something awesome. Join the power of Rapid Application Development with Python with the most popular multimedia framework in Free Software, and you'll end up with a versatile tool to tackle all your multimedia needs. Jason knows well what he's talking about

19:00 UTC
Creating a KDE app with KAppTemplate - Jonathan Thomas
Second day in and we get the luxury of having the second KDE/Kubuntu ninja delivering content straight from the source. Do you know how easy is to create full featured KDE applications with KAppTemplate? Put on your developer hat and join Jonathan on a hands-on session where you'll learn to write beautiful KDE apps in a matter of minutes.

20:00 UTC
Thunderbird + Unity = Awesome, and how JSCtypes lets you get to the candy - Mike Conley
We're seeing more and more major upstreams providing integration with the new way of interacting with computers: Unity. The story of integrating Thunderbird and Unity is full of awesome, and Mike will be on a quest to tell you all about it and hear your questions.

21:00 UTC
STORY: Unity, hacking on a real-world app - Marco Trevisan
Would you like to become the next Unity rockstar? How would you get started? In this session Marco will tell us his journey on how he got involved in hacking on Unity, from the day he found the itch to scratch until his branch fixing it was landed. I'm personally very much looking forward to this session, as I believe it will be inspiring not only to prospective Unity contributors, but for developers in general who want to know how to start hacking on a particular application.

Looking forward to seeing you all there in a few hours!