Leaving Nokia

I really enjoyed my time at Nokia and Finland. I was very lucky to directly work with very talented and generous people. I’ve made some good friends here and it will be hard to say goodbye soon. My last day at Nokia is March 28th.

It’s too early to tell about what I’ll be doing in the near future. Exciting stuff, for sure. :-P

Update: Xan, Tommi and Johan (who doesn’t have a blog) are leaving too. See you around guys! :-)

N810 announced!

N810 Internet Tablet

As other Nokians have already announced, the N810 was officialy announced! Some highlights from the Hildon side:

From my “user experience” with this device, I think the keyboard improves a lot the messaging and web browsing experience, the GPS is an excelent addition and the general UI polishing brings a smoother interaction with the device.

Last but not least, this is a device full of hacking possibilities! Yay!

Spinning off Hildon

As pointed out by Carlos in GNOME Mobile mailing list and Quim in his presentation at LinuxTag, Hildon will become an upstream project. The idea from now on is to make Hildon a more independent and community-driven project as it’s going to be used in different contexts other than Maemo (i.e. Ubuntu Mobile). This means that Hildon won’t be a Maemo-specific project anymore and will have its own release schedule, roadmap and community.

As a consequence, we decided to move the full Hildon stack to GNOME infrastructure. This way we can stay closer to GNOME community and stimulate collaboration between both projects. We’ve started the migration process already but it will take some time because we need to first re-organize our internal way of working to make sure everything is fine after the migration. Big thanks to Olav for the great and quick help!

For those who don’t know: what is Hildon?

Hildon introduces a new desktop for handheld devices. It comprises a lightweight desktop, a set of widgets optimized for handheld devices, a set of theming tools and other complementary libraries and applications.

We’ve created a page GNOME wiki. There you can find a brainstorming space for the release schedule and roadmap, a status page for our migration to GNOME, and how to get involved in Hildon. We already have a mailing list in GNOME servers. If you are interested in Hildon development, don’t hesitate to subscribe!

Hildon Desktop Plugin Howto

For those brave developers who are using Sardine to use/test/develop the bleeding edge Maemo stuff, this post is for you. :-)

Well, I’ve already shown before how to write Python plugins for Hildon Desktop. This time, I wrote a howto for writing C plugins for Hildon Desktop with the new GTypeModule-based API. All plugin types (Task Navigator, Status Bar and Home) are covered.

For those other super-brave developers who are building Hildon Desktop outside Scratchbox, it’s a good oportunity for you to test our plugin system and give some feedback, send patches, and report bugs.

The howto is available at:

  http://maemo.org/maemowiki/HildonDesktopPluginHowto

Go Go Go!

Building Hildon Desktop outside Maemo/Scratchbox environment

I wrote a step-by-step guide to have Hildon Desktop running outside the Maemo/Scratchbox environment. Our major goal here is to make it easy for distributons to package Hildon Desktop so that developers can have a quick-to-setup environment for the development of plugins which doesn’t need to be built against ARM such as Python plugins. For now, this guide only applies to Ubuntu (If you can point out the changes needed to work on another distribution, please let me know). This is a call for testers and brave developers to follow the guide and report the missing/problematic bits.

  http://maemo.org/maemowiki/HildonDesktopPortability

There are some issues that still block us from getting Hildon Desktop in a distribution but we’re working on that.

Shouldn’t we talk?

The number of GNOME-Platform-based user interfaces (or “Desktop environments” if you prefer) for embedded devices is growing. AFAIK, those are the guys in the field:


We have different focuses: OLPC (Sugar) on education, ACCESS on PDAs, Maemo (Hildon Desktop) on Internet Tablets and OpenMoko on cellphones. However, I’m sure we have a lot to share and learn with each other in terms of architecture, UI framework, plugin systems, standards, code, ideas, and so forth.

I saw that (probably) there will be some talks related to those projects in GUADEC. This means that we will all be at the same place, at the same time, It’s a good oportunity for us to get together and talk! So, what do you think?

Update 1: It seems that some very interesting discussion among OLPC, Maemo and OpenEmbedded guys already took place during Bossa Conference. Good to know we’re already talking. :-)
Update 2: Someone commented that I should add LiMo Foundation to the list. Does anyone know if there will be anyone from LiMo at GUADEC?

Hildon UI Development News

As you probably (don’t) know, we, from the Hildon UI Framework team, have been working hard in the new code for the next releases of Maemo (The “don’t” is because even though the development happens in a public repository, sometimes we’re not very good in communicating about what we’re doing). Now, the heavy development work of maemo-af-desktop is taking place in a separate branch called hildon-desktop (the new name of maemo-af-desktop).

Our main goals for the next releases is flexibility, scalability, maintainability and developer-friendliness. The code of “maemo-af-desktop” received a lot of improvements for the N800 and Bora release (As you with a N800 in hands have probably noticed!) but still it has some serious problems. The layout of the UI is hardcoded (is was done for a specific display with specific resolution) and the plugin infrastructure is fragmented and (kind of) duplicated for each UI component (Home, Statusbar and Tasknavigator). Also, the plugin API is not very developer-friendly because it doesn’t take full advantage of the GNOME Platform knowlegde that developers interested in Maemo already have (this is my personal opinion). So, what are we doing to target those issues? Let’s see!

Separating the generic parts from the specific ones

We detached the “generic” parts of the UI into a library called libhildondesktop. This lib has things like different kinds of panels, a generic widget for Home, and interfaces for different kinds of desktop items that will reside in the panels and Home. The window management code has been put into a library called libhildonwm which is intented for very specific cases where the developer need some control over the windows behavior. For example, libhildonwm is used by application switcher to show the list of active windows in the Task Navigator panel.

So, what does this mean? This means that out future UI will be just a specific application of libhildondesktop and libhildonwm for a specific device. In hildon-desktop branch, we’re about to finish the UI (based on libhildondesktop and libhildowm, of course) that reproduces exactly what you have in N800. Also, it’s good to remark that this aproach makes it easier/faster to prototype different UIs and increase the hacking possibilities for the UI! Yay!

New plugin system

We now have a common plugin system for all UI components. The new plugin system is based on plugin loaders. Each type of plugin loader is reponsible for loading desktop items from different “sources”. For example, we have a plugin loader that loads (Task Navigator, Statubar and Home) plugins written with the current plugin API (To keep backwards compatibility). However, we’ll have a new GTypeModule-based API for developing desktop plugins so obviously we have a plugin loader for this kind of plugin too. This aproach give us flexibility enough to even have plugins written in different programming languages. We already have a Python plugin loader and the bindings for libhildondesktop (libhildonwm bindings yet to come).


Task List plugin written in Python running in hildon-desktop

Plugin loaders can be dynamically loaded without needing to rebuild hildon-desktop. We did this way because in the case of plugin loaders for plugins written in programming languages other than C, we cannot ensure that the runtime requirements will be available in the device by default. For example, the Python loader resides in a different module together with the libhildondesktop bindings so that in the future, if you want to add support for Python desktop plugins, you just need to install the bindings, the Python loader and Python debian packages. That’s it!

The hildon-desktop Python support code is available, of course. We’ve written some really dummy example plugins with the new API and Python API just to give a taste of what is coming.

Contribute!

Any suggestions, comments, ideas, construtive critics and (specially!) patches are welcome. Get the code from Maemo repository and play, brake, adapt, change, etc. If you want to use the latest pre-built packages, you can always use Sardine.

Important note!

This is unstable-under-heavy-development code. You should not rely on this code for anything. At this moment, hildon-desktop should only be used by courageous developers who want to contribute/use the very latest UI framework stuff.