Hire Me!

Congratulations Madam, it's a phone


written by Mickey on 2006-11-08 Click to comment

Now that the cat is out of the box, I can finally tell you a bit more about this project. You probably have seen all the press releases, so I don't need to recap what you can expect out of it as a user. This is about what's in for you as a developer, because this is what has attracted me so much as well. Please note though that I'm not speaking officially for FIC here -- this is my personal take on the project.

For years, the embedded open source community has been lusting for a hackable phone. A lot of (more or less successful) open source efforts went around putting Linux on hardware running WindowsCE based operating systems. All in all most of these were frustrating experiences, because reverse engineering is just a terrificly time consuming approach and by the end of the day, it's of questionable legalty as well. If you really manage to put Linux on a phone without the help of a manufacturer it will take you so long that by the time you're done, it has been already obsoleted. This has happened a lot of times in the past and we want to change it -- since although the work being sort of educating and fun (at times), it's a lot of wasted effort that most of us would rather spend working on actual applications.

Up to today, there is nothing like an open phone available. Instead, most of the so-called "open source friendly" manufacturers are trying to lock you out -- by using SElinux, booting signed kernels only, etc. The FIC Neo1973 is different.

The partnership with FIC is a unique opportunity for developers who care about projects like GPE, Opie, OpenEZX, XanaduX, and friends, since it enables us to make a phone software stack done exactly the way we like it -- "bottom-up" standardization instead of doing it "top-down". The OpenEmbedded community has quite a lot of experience when it comes to integration issues and this is why the OpenMoko distribution will be an OpenEmbedded derived Linux distribution.

GUI-framework wise, it has been an easy choice. Most of the application hacker momentum is focused around X11-based frameworks like Gtk+, Qt, wxWidgets, fltk, fox, and the like. There is absolutely no reason to not base your phone GUI framework on one of those toolkits and this is why we chose the X11/Matchbox/Gtk+ combination for this phone platform. Being a strong supporter of C++ and Qt though, I'm very interested in getting this effort to a point where it's possible to write e.g. Qt phone applications that run inside the Gtk+ based UI framework and don't look alien.

Consequently, given a GObject-based C framework, adding language bindings should be a straightforward task as well. FIC has understood that this will be an iterative process. We don't expect to present a fully featured phone when we start shipping it in Q1/2007, but we rather adhere to releasing "early and often". By working together with the open source community guys right from the start, I believe in FIC's smartphone division establishing a solid and healthy relationship. This will hopefully include device discounts for developers as well as listening to us about future hardware platforms. If we manage to make this a successful proof-of-concept open source device, we might be in a position where our wishes about the shape of things and the type of hardware to include in future devices might reach very open ears.

Update: Some clarifications, since I've seen a couple of wrong facts on various sites:

  1. It got a micro-SD-slot and a SIM-card slot (of course, hey... it's a phone)
  2. It's got a headphone socket.
  3. The only proprietary bits are the GSM modem part (which is not even running on the application processor, but on a seperate certified TI module) and something for the assisted GPS. We have Harald 'Mr. GPL' Welte on board, so rest assured that everything that can be open actually _is_ open.
  4. I am 'a' (aka one of three) founder of OpenEmbedded, not _the_ founder.




Upcoming Conference: Open Source in Mobile


written by Mickey on 2006-11-05 Click to comment

I'm very pleased to be able to attend the first conference on business case and technology: Open Source in Mobile in Amsterdam this week. Not only will this be a great opportunity to discuss the merits of open source with business guys and operators, but also a chance to talk about the project I have been working on for the last couple of months...





Gtk+ Theming Woes for Embedded GUIs


written by Mickey on 2006-10-28 Click to comment

In the project I'm working on, we want to have a visual user experience that is guaranteed to blow you away. Eye candy and usability combined. This is about eye candy.

In theory, the Gtk+ theming capabilities are good. In practice, it sucks. I won't go into complaining about the most underdocumented area of Gtk+, but if you want to attract commercial developers who need to rely on being productive and effective right from the start, then Gtk+ is giving you a lot of headaches.

The usage of X11 and Gtk+ as the GUI foundation for embedded devices is increasing steadily, however the Gtk+ theming possibilities are merely adressing the needs of desktop systems. Of course, I am not the first one realizing that. Nokia decided to fork Gtk+ for their Maemo UI -- between you and me, one of their worst decisions as developers really hate having to compile a seperate Gtk+ version for Maemo developing. Consequently, this is a no-no for our project.

The worst thing is that Gtk+ treats widgets (instead of images) as first class entities, that means it will scale your images according to the size request of the widgets, not vice versa. Widgets are scaled according to their layout and the internal widget layout and size -- which is defined through hardcoded widget code. If you don't let images to be stretched, they might be clipped (e.g. in a checkbox) or drawn partly outside the parent widget (e.g. for an arrow).

This scaling facility is nice for desktop systems, but in embedded systems this is a nuisance, because you usually

  1. know your display size in advance and want to have every pixel match the layout given by the designer, and
  2. the display size rarely changes (only few people use their mobile phone applications to display via remote-X).

Another requirement is overlapping widgets. The Gtk+ team canon is "Gtk+ doesn't support overlapping widgets". Well, this is really bad. A typical use case is a dashboard kind of user interface which contains the static portions of the UI in form of a bitmap. Since you don't want to implement all widgets on your own, but reuse the GUI toolkit logic, you need to overlay stock Gtk+ widgets on top of this fixed bitmap / layout.

Gtk+ just can't do that. Even if you think you are smart -- e.g. trying to a set a background pixmap to a GtkVBox or a GtkAlignment, hoping it will shine through the widgets you add to the container -- you lose. GtkContainer derived widgets are transparent widgets by definition, they don't have a GdkWindow and they don't draw anything on their own. So what now? How about forking Gtk+ now? No no no no... there must be a better way...

I have found one. After three days and nights wrapping my head around Gtk+ code, I managed to write a couple of widgets which support overlapping. I have derived custom widgets from

which not only support a background pixmap overlapped by Gtk+ widgets, but also the option to hardcode the size through the style sheet, i.e.

style "mydashboard" {
bg_pixmap[NORMAL] = "dashboard.png"
GtkFixedOverlay::size-request = { 0, 480, 0, 120 }
GtkFixedOverlay::cargo-border = { 40, 380, 10, 80 }
}
widget "*.mydashboard-widget" style "mydashboard"

It's not perfect, because for some cases it still involves hardcoding inside the application, but it's a huge step forward for dashboard-style embedded user interfaces. These classes have been created for my current client, but will be open sourced soon -- together with the complete project as well.





Back from Trolltech DevDays'06


written by Mickey on 2006-10-14 Click to comment

The two days event run by Trolltech in the Hilton Park Hotel in Munich was fully loaded with

Add two nice giveaways (a Trolltech branded backpack which is really usefully designed + a Trolltech shirt) and a lot of friendly Trolls and you have an event that was really worth to attend.

For me, the most impressing issues were:

  1. Qt for WinCE in 2008
  2. Advanced Item Views
  3. Thread Support in Qt
  4. Styling Qt Widgets using Style-Sheets
  5. QGraphicsView

1. Matthias Ettrich announced that Trolltech is working on Qt for Windows CE and that it's supposed to be out in 2008. This is an important step that may have serious impact to Embedded Linux. Basically, it means we have roughly one more year left to shape our platforms. By 2008, Windows CE will be a much stronger competitor than it ever was.

2. Thanks to the new Interview framework -- which is slightly based on the Model-View-Controller design pattern -- a lot of new possibilities for presenting and manipulating data in QListViews arise. You are using classes derived from QAbstractItemModel to interface with your data model and you are using classes derived from QItemDelegate to do custom painting per item or derived from QAbstractItemView to control the layout or even the complete viewport. The possibilities are endless and starting by now you can (finally) resuse data models and data views seperatly -- which is a great thing.

3. Qt 4.2 contains a revamped version of Multithreading support. The most useful fact is that there are per-thread event loops now. This makes signalling between threads much more easy, e.g. signals are thread-safe nowadays, because slots are no longer called from the context of the emitting thread. This is one great feature that users probably won't recognize, but it allows for reduced latency and more simple (hence less error-prone) algorithms.

4. Customizing the Qt look previously needed deriving a custom class from QStyle which implements drawing the widgets. In Qt 4.2 Trolltech seperated the widget look description from actual code by using a description language similar to CSS which is parsed on-the-fly when widgets are drawn. This enables designers styling your application, not coders. It blows away Gtk+ RC files. Interestingly, it's quite similar to what Enlightenment's Edje can do -- I guess both used CSS as inspiration.

5. The canvas is back! And it will blow you away. Visualizing complex data has never been so easy and powerful. I can't wait to write the first application using QGraphicsView.

The ones of you who know me from the Opie project are probably wondering why I didn't say anything about the GreenPhone yet. Uhm, well, ... I don't feel very excited about that. It's good to have an "open" (it's still not clear whether the libraries will be open source) Qtopia platform, but it comes two years late, the "SDK" is a joke (they really should hire someone with OpenEmbedded experience) and I'm afraid the community has moved on to X11 (that is: kdrive) and Gtk+.
I'm looking forward to be on board for the DevDays'06 and want to express my gratitude to Trolltech which made it possible for me (and a lot of other open source developers) to attend this conference - thanks!





Back from OEDEM'06


written by Mickey on 2006-10-09 Click to comment

The three days in Berlin were fun while begin efficient and productive at the same time. I guess most of it boils down to the small amount of participants. If you are less than 10 people, you can discuss informal without the need of a moderator-operated discussion protocol. This made it an event that I really enjoyed.

OEDEM'06 Participants

From left to right:

Missing in the picture are Henning 'Woglinde' Heinold and Rolf 'Laibsch' Leggewie.OEDEM'07 is scheduled to take place in Poland early summer next year. If you want to sponsor this event, contact us.





Installing Mandriva 2007 on a Thinkpad X60s


written by Mickey on 2006-10-02 Click to comment

My recently acquired Thinkpad X60s just arrived a couple of days ago and naturally the first thing I had to do was to install my Linux-Distribution of Choice to get a nice mobile development workstation. Getting there wasn't that easy and since there are already documentations for installing other Linux Distributions, I just thought I briefly share my findings with you.

Installation Procedure:

  1. The preinstalled operating system is Windows XP. To make room for the Linux OS, you have to shrink the Windows NTFS partition. I did that using PartitionMagic 8.0 from within Windows. I shrinked the partition to be 30G which left me with 40G for Linux.
  2. Prepare a medium with an installer. If you have a docking station with an optical drive, this is easy. I didn't, hence I had to prepare a bootable USB drive. I created a FAT16 partition on the USB drive, dd'ed images/all.img from the Mandriva Installer DVD onto the partition and set it to active (bootable) using fdisk from a Linux machine.
  3. Boot from the Installer medium. On the Thinkpad X60s, you have to press F12 during boot to chose the boot drive. I did that and then the Mandriva installer started.
  4. If you -- like me -- have no docking station and no optical drive, then you need to come up with another storage source for the installation packages. I put the Mandriva Installation DVD into my Windows machine and launched the WarFTPd ftp daemon to serve it. If you have enough space on your USB drive, just copy the i586 directory over to it as well.
  5. Unfortunately the Mandriva Installation image does not recognize either the internal LAN nor the internal WLAN adapter of the Thinkpad X60s. Fortunately, I had a cheapo USB-Ethernet adapter laying around which was recognized. You won't need this if you have enough space to put the i586 directory onto your USB hard drive.
  6. The actual installation procedure went pretty straightforward. Be sure to chose manual partitioning otherwise you'll ruin your Windows installation. Partition your drive so that /dev/sda5 will contain your Linux root file system (I chose ext3fs), /dev/sda6 should contain the swap space. Sometimes the installer seems to stall for a couple of minutes, but don't be worried, it will eventually continue.
  7. If you want to preserve the special ThinkPad Bootloader, then you should choose to install the Grub Bootloader into /dev/sda5, not into the MBR (Master Boot Record).
  8. After rebooting, boot into Windows again and grab the latest version of Grub4Dos. This way you can boot Linux from the Windows (special Thinkpad version) Bootloader.

Things that didn't work out of the box:

  1. Ethernet
  2. Wireless LAN
  3. Sound
  4. SD/MMC Card Reader

Post-Installation Hints:

  1. Kernel 2.6.17 contains a bug in the e1000 driver that prevents the network card being correctly initialized when you don't have a cable w/ a working link plugged in. This can be fixed by recompiling the kernel with a patch.
  2. The ipw3945 driver needs manually installing the firmware microcode and the ipw3945 daemon. You can get both from http://www.bughost.org/ipw3945/.
  3. Install alsaconf and go through the menu-based configuration. The X60s contains the AD1981HP as part of the Intel ICH7 chipset.
  4. It's a RICOH card reader which needs the module sdhci a recent kernel (>= 2.6.17rc1). Open /etc/modprobe.preload and add this line. After rebooting (or manually modprobe'ing) the SD should be found as /dev/mmcblk0.

[to be continued]





Conferences Ahead


written by Mickey on 2006-09-22 Click to comment

I enjoy going to conferences. When I was younger, I really loathed travelling. Now that I am much more open minded, I'm having fun seeing other towns and countries and meeting people from all over the planet.

Currently I'm looking forward to attending two important conferences next month:

  1. OEDEM'06 (Open Embedded Developers European Meeting) in Berlin -- it's the first (of hopefully an annual series) conference about the BitBake Task Executor and the OpenEmbedded MetaData Repository, both in combination enabling to build Embedded Linux Distributions from scratch. Since I'm the co-founder of this project I have the honor to host a couple of sessions. I'm especially happy to meet the OE developer and OpenZaurus maintainer Marcin 'Hrw' Juszkiewicz for the first time.
  2. Trolltech Dev'Days'06 in Munich -- a developer conference with a lot of interesting sessions about Qt, Qtopia, and related products. Despite my ambivalent relationship to the Trolltech Brisbane developer group, I'm glad for the opportunity of attending a conference with an advanced technical program -- especially because Opie veteran Holger 'Zecke' Freyther will join me.

Nearby... since I need to work during travelling, I have just ordered a Lenovo Thinkpad X60s -- crossing fingers that it will arrive before the first conference is due.





Thesis Submitted


written by Mickey on 2006-09-19 Click to comment

Today I have submitted my Ph.D. thesis "Component-based adaptive Middleware for mobile distributed systems" to the examination office!

My thesis shows how the encapsulation of distributed systems middleware functionality into components can lead to an adaptive middleware system that -- by the means of a reflective architecture -- features dynamic adaptation to changing application requirements and to changing environmental conditions. Using the developed µMiddle architecture, you can add and modify

and more directly within a running middleware system using a highly abstracted graph-based Meta-Object-Protocol that guarantees safe and consistent changes.
This kind of capability is of increasing importance for next generation mobile distributed systems and leads to more flexible middleware and application architectures.
Subject to the agreement of the board, I will get an appointment for the public defense of my thesis -- hopefully not later than December this year.
I want to acknowledge all of you who supported and believed in me in the past 5 years -- thanks!





The Trouble with NDAs


written by Mickey on 2006-09-14 Click to comment

NDAs are pretty common in freelance work projects. The acronym NDA stands for "Non Disclosure Agreement", which basically means that you are not allowed to talk about anything related to clients, vendors, hardware or software specifications, market strategics, etc.

While I understand (and of course respect) the origins and purposes of NDAs, sometimes they're troublesome anyway. For instance, I am working on a really really cool project that is eventually going to be Open Source and have an important impact there, because... I would love to tell you more, but I'm not allowed to :)

This is a difference between academics and businesses I will have to live with.





Thesis Progress


written by Mickey on 2006-08-07 Click to comment

Since May 2006 I'm no longer employed at the Frankfurt University (they have limited 5-year contracts for offspring researchers) and getting time to proceed with my doctoral thesis got much harder. I had to find calm periods between starting my freelancer career and a lot of everyday life things that were to handle.

Shortly before my one-week vacation on Ibiza, I handed a release candidate out to my doctoral adviser and -- despite a lot of short comments which I need to take into account for the final version -- I got a fairly well review. In particular this means, that as soon as I found a 2nd referee for the thesis, I will be able to submit it. If all goes well it will happen in September 2006.

Polishing the dissertation makes more fun, now that I can see the end of the matter.