Tag Archives: Maemo

www.maemo.org

Maliit Keyboard Improvements

On Friday I pushed 194 commits to the Maliit Plugins repository, adding new features, bugfixes, cleanups and tests to the Maliit Keyboard. This is some of the work Openismus has done for Canonical over the last few months which we are now allowed to upstream. This includes hard work by Michael Hasselmann, Krzesimir Nowak, Jan Arne Petersen and Jon Nordby.

Our work on the underlying Maliit Framework for Canonical was published upstream as we did it. We believe we’ll be able to upstream more of our Maliit Plugins work in the future.

Versions of these Maliit Plugins commits were published a few days ago in the Ubuntu Phablet project’s maliit-plugins Launchpad/Bazaar repository. It also contains commits (not by us) on maliit-plugins’ Nemo Keyboard, mostly for integration with the Ubuntu Touch platform (and its use of Android’s Surface Flinger). The recent Ubuntu Touch preview is using a version of that Nemo Keyboard, though we believe that’s meant as a temporary solution. A properly integrated Maliit Keyboard should behave significantly better.

Anyway, these commits add these features to the Maliit Keyboard:

  • Auto-capitalization.
  • Styling, such as a black underline for the current word and a red underline for a word with an error, though its up to the toolkit exactly how it shows this.
  • Word prediction, error correction, etc are now available when editing previously-entered words, instead of just the next word, taking into account the surrounding words.
  • Users can add words to the dictionary with a long press on the space key.
  • More settings to enable/disable auto-capitalization, auto-correction, word prediction, error correction, audio feedback and whether the word ribbon should be disabled in portrait mode.
  • Applications can specify text and icons for actions keys, such as Done, Go, Login, etc.
  • Keyboard themes can now specify fonts.

The maliit-plugins NEWS file gives more details.

Many of these features were already in the old MeeGo Keyboard (used by the Nokia N9) which had to be dropped last year because of its libmeegotouch dependency and its need for proprietary plugins to achieve these features.

We hope to have all this in an official Maliit release soon.

Openismus Getting Smaller

Openismus has recently had to let some great developers, and good friends, go. We are now much smaller.

This is really sad because it took us a long time to find and train these people, and they would be massive assets if the future looked better. Although they will be greatly missed, I am at least reassured that they will have no problem finding new jobs. I do hope that they don’t settle for work that is anything but worthy of their experience and enthusiasm.

This downsizing happened because we are now finally losing the customer work we had from Nokia, as expected since their February 11th 2011 decision to kill MeeGo. Nokia are not our only customer, but they are by far our largest. That gave us the opportunity to diversify, and we tried, but without much success. That failure is mine. On the one hand, it’s unfortunate that we have been so dependent on one customer. But, on the other hand, we would never have been so big for so long without them. I would do the same again without regrets.

I view the last few years of Openismus very positively:

  • We gave several young developers their first chance to prove themselves as professionals.
  • We trained new developers. They are now established as respected and experienced developers.
  • We made a few contributions to our favorite projects. For instance, natural layout in GTK+ 3.

Personally, Openismus has allowed me to work part-time, so I can spend time with my children. My first child was born soon after the company was founded, and for the first year, I worked from home, contrary to the myth that founding a company means working all hours of the day and neglecting your family. The tech industry is excessively male, with little understanding for men who want to share in the work of child-rearing, so I’m glad I had the freedom to work part-time. I am highly motivated to keep this freedom.

This has been a disadvantage, of course. For instance, I strongly suspect that I could win more customer work by traveling more to conferences and to customers on site. That has given good results when I’ve managed to do it. But this is simply an impossibility for someone who needs to take care of kids. I think the custom of business travel might be one of the greatest obstacle to women reaching top executive positions. It’s one of many things that won’t improve until men are forced to share more of the burden.

So, Openismus goes on, with some uncertainty. Our specific expertise in the Maliit input methods, in the QtContacts and EDS contacts systems, and in DLNA via Rygel should be very attractive, but time will tell. If you need help with GTK+ or Qt on Linux, from people who really know how, and are not afraid to tell you how, then we are still here and still ready.

 

Openismus at FOSDEM 2012

A few Openismus people will be at FOSDEM In Brussels this weekend. FOSDEM is always a great conference, but I can’t be there myself as my travel is generally limited by the need to take care of my kids.

Michael Hasselmann and Jon Nordby are both giving talks about the Maliit input method framework, as seen on the N9. We are eager to find customers who need our help to integrate and improve this only real choice for an open-source on-screen keyboard. So we hope that some people of influence take the opportunity to get to know the project and its excellent developers.

Jens Georg is also giving a talk about Rygel, used in the N9 to support UPnP and DLNA. For German speakers, there are already video and slides online of a recent talk that Jens did about Rygel in Berlin for Deutsche Telekom’s Developer Garden. I was amused to discover that DLNA had specified themselves into a situation where a minimum certified server and a minimum certified receiver were only able to share a small resolution JPEG format. Apparently it’s getting better, and Rygel can deal with it all.

Discussing Maliit Keyboards and Plasma Active

The Maliit developers and the Plasma Active developers, with some Mer developers too, discussed yesterday how they can work together. Reading the irc log, it seems to have been productive, with great input from all groups, and with some first development steps planned.

As always, I’m proud of our Maliit developers at Openismus. We believe that excellent developers must be communicators, or their work is for nothing. That log shows why.

Maliit: The only real on-screen keyboard

I recently pushed the Maliit team here at Openismus to tidy up the website, to make the current status clearer. Here is a summary:

Maliit is the only open-source input system that offers the features real products need, allowing on-screen keyboards for all the world’s languages. It is mature but it needs more work. This is the right project at the right time for various desktop projects to work together instead of having separate hacks that don’t please users.

Everybody loves the virtual keyboard on the N9, which Openismus worked on. That is the Meego Keyboard, which is built on the Maliit framework. It performs. It’s largely open-source, but it is fine-tuned for the N9’s MeeGo 1.2 Harmattan. It has an unfortunate dependency on libmeegotouch, which few developers love.

The newer Maliit Keyboard does not depend on libmeegotouch, though it does depend on Qt and QML. With enough effort, the Maliit Keyboard could be as good as the MeeGo Keyboard.

The underlying Maliit framework API has been thoroughly tested and iterated by these keyboards and by other input methods, both open source and proprietary. It has had many contributors, has gained many regression tests, and is run by people who care deeply about quality.

Note that Maliit is not trying to be an on-screen keyboard for accessibility.

GNOME

We’d like GNOME to allow use of Maliit so people are not forced to use the current Caribou keyboard that only works with GTK+ applications and doesn’t offer features such as CJK or word prediction. We know that GNOME doesn’t want a hard Qt dependency. Of course that would be silly. We do want cross-platform compatibility. We also think that this is a large problem space that GNOME cannot tackle alone.

That would need gnome-shell (or its St toolkit) to support GtkIMContext as Maliit uses it. However, the gnome-shell developers currently feel that any on-screen keyboard (or input method UI, I think) must be part of gnome-shell’s own source code, and can’t be a separate process. Even if caribou could be made to work with non-GTK+ applications, a gnome-shell dependency is an even bigger block to cross-desktop adoption than Qt. So I really hope that this hard problem can be solved, though I do recognize that it’s hard.

The IBus implementation in gnome-shell seems to be hitting several similar issues (1, 2, 3), impacting CJK users even without a virtual keyboard. When they are fixed, maybe Maliit will work better. Note that, though Fedora has replaced SCIM with IBus, neither are really an issue for the on-screen keyboard, because IBus doesn’t let you show windows such as keyboards. However, the non-UI engines in the IBus plugins could (and probably should) be used in Maliit plugins.

I have some more notes about the current gnome-shell virtual keyboard here.

Unity (Ubuntu)

We’d like Ubuntu to use Maliit. We don’t know of any problems with that now, though I guess this depends on the GtkIMContext support in Unity’s nux toolkit library. We will do some tests on the WeTab soon.

Update: We published some Maliit packages for Ubuntu Oneiric in our PPA and we were pleased to find that nux seems to support GtkIMContext so you can, for instance, use the Maliit keyboard in the Dash’s search field. There are a few problems (1, 2, 3) but they seem fixable. There are also some generic GTK+ problems, but these are not blocked by anything fundamental in Unity.

Update 2 much later: That must have been with Unity 2D, using Qt. Nux doesn’t have an input method abstraction as of right now, though it could.

Ubuntu currently ships Onboard, though that’s apparently just for accessibility.

KDE and Qt

We’d like KDE to use Maliit for their tablet efforts. The Maliit keyboards work today in Qt and KDE applications, though I don’t know if that means that they work in Plasma too. They have a Plasma keyboard (source code) already, and there seems to be interest in using Maliit instead of, or as a base for that. That would give it features that it apparently lacks, while also sharing the maintenance workload.

Openismus work on Evolution-Data-Server and SyncEvolution

Evolution Data Server

Recently, MeeGo switched to GNOME’s Evolution Data Server for storage of contacts, calendar, etc, though not for the API, which remains QtContacts, via the qtcontacts-eds backend. To help with that, Openismus has been making e-d-s performance improvements for Intel. For instance, to avoid unnecessary transfer of data across D-Bus.

Tristan Van Berkom is doing the work, excellently as always, using upstream bugzilla, the mailing list, and upstream’s git.gnome.org. It’s gradually all going into the master branch. There are some special patches only for Meego’s branch, because it is based on the gnome-2-32 branch, whose API is partly deprecated in master. But we are taking the time to make equivalent changes in master’s new API.

We had worked on Maemo 5 (Fremantle)’s e-d-s fork, which used similar techniques to achieve the N900’s performance. But the developers weren’t given time to submit changes properly upstream. Also, some improvements were spread across other modules, some proprietary, though with hindsight the developers generally feel that many changes would have been better in evolution-data-server itself. It’s great that Intel are pushing for it to be done properly now.

Meanwhile we are also working on the qtcontacts-tracker backend alternative, which we like too.

SyncEvolution

At the same time, MeeGo switched to SyncEvolution for synchronization of contacts, calendar, etc with online services (via SyncML and other protocols) and with bluetooth phones. We are helping Intel with that too.

Chris Kühl has done some code cleanup which should hit the master branch soon and he is now letting SyncEvolution identify some phones via their Bluetooth Device ID profiles, where they exist. That could make configuration easier because the user won’t need to tell SyncEvolution what the phone can do or what quirks it has. Again, this is all via bugzilla, the mailing list, and gitorious, targeting the master branch.

Lastly, I’ve done some cleanup of the syncevolution.org website, simplifying its structure, and updating some text so it makes sense as a whole. I am still not fond of Drupal. David King wrote and updated the website’s documentation about the syncevolution command-line and GUI.

Missing the Meego Conference 2011

I won’t be at the Meego Conference in San Francisco this year. It would just mean too much time away when I should be taking care of my small children.

However, several Openismus people will be there to represent us: Ekaterina Gerasimova (Kat), Michael Hasselmann, David King, André Klapper, and Chris Kühl.

I will instead be taking my family to visit my side of the family in North Berwick, Scotland, where I’ll meet my nephew from New Zealand for the first time.

 

Nexus S

I’ve had the Google/Samsung Nexus S phone for a few days and I will now vomit my thoughts out here.

Hardware

The phone’s physical design has some fatal flaws. It has the four standard Android buttons at the bottom – Return, Menu, Search, and Home. But they are touch buttons instead of real buttons, and they are just as super sensitive as the main touch screen. Because the whole phone is so slippery smooth, that makes it incredibly difficult to use the main interface without touching one of these “hardware” buttons. Either the Return button, at the left corner, or the Home button, at the right corner, will typically close the current application. I find it very difficult not to trigger these buttons with my palm.

The on-screen keyboard is already awkward, but this makes it even more important to tap in exactly the right place and not a pixel lower. So it requires your full concentration and gives you the general feeling that you are defusing a ticking bomb hidden in a bar of wet soap. I didn’t have this problem with my older HTC Hero. If I was a regular user, who didn’t care about the Android software getting out of date, I would return the Nexus S.

The older Galaxy S doesn’t seem to share this problem completely. It appears to have a thicker bevel that should be easier to grip and it has less buttons at the bottom, in a slightly safer arrangement. However, two of them are touch buttons, so I guess it’s annoying too.

I generally feel that multi-touch ability is not worth the over-sensitivity of the capacitive screen, as it’s not used much in Android anyway outside of Fruit Ninja. I preferred the N900’s need for a very slight finger press.

Software

I’ve used an HTC Hero with Android 2.2 and the HTC Sense UI, and this is not very different, though regular Android lacks a consistent visual personality. However, I’m surprised that I miss some things from HTC Sense, such as:

  • I love HTC’s clock and weather widget, with the full-screen animations of rain, frost, snow or fog that appear momentarily over the whole desktop. It’s useless but it’s charming. Regular Android 2.3 has just an ugly little analogue clock widget. Its weather widget is boring.
  • My HTC Hero could upload photos and videos to Flickr, even integrating with the Accounts and Sync Settings, but regular Android 2.3 can’t.
  • The HTC Camera application lets you focus on a point by clicking the picture. I don’t know if it really worked, but I liked the idea. I do like that the regular Android 2.3 camera app lets me click the button to focus and then release later to actually take the picture quickly.

These can be replaced imperfectly by apps from the Android Market, but that’s a frustrating experience of choosing between hundreds of similar apps, with no help to judge their quality.

Nexus S versus HTC Hero

This is a rather arbitrary comparison that’s of little use to anyone, but it’s the hardware that I’ve had.

I prefer the HTC Hero hardware because of the above-mentioned hardware problems, and because the chin stopped me from holding it upside-down so often. However, the HTC’s camera was terrible, while the Nexus S takes bright clear pictures and videos.

Android Versus the N900

Before I switched to the HTC Hero, I had used my Nokia N900 for almost a year.

I still miss:

  • Contacts aggregation: The N900 combines contacts from Google Talk, Skype, Facebook, and others into one contacts list and presents communication with them in one Messaging application. It lets your Contacts list be your main start point for communication. Just start Contacts and you’ll see immediately who is online, by whatever protocol, because you can show them at the top of the list. Then click on a contact to call, send email, SMS, instant message, skype, etc. You don’t need to think much about what system you are using.
    Android does some of this, though a) You can’t show online people first, b) Its contact merging (“Join”) UI is clumsy, c) It often leaves the contact listed under the cryptic IM or Skype username instead of the real name and d) The Messaging application is only for SMS, e) the Talk application is only for (GTalk) jabber, f) There is no aggregated message history, so you need to go to the individual apps.
  • GPodder: This podcast client has a sane, usable, uncluttered UI that made my life better. I’m currently using DoggCatcher on Android – It’s the best of several poor choices, but it’s still a mess that gets in my way.
  • True multi-tasking: Multi-tasking in the N900 is truly useful, though it does indeed complicate the UI. Android does pseudo-multitasking – Apps store and restore their state, but they don’t actually do any processing while you are using a different application. But occasionally you do want to use another application because you really are waiting for the current application. This is most noticeable in the browser, for instance. Page display can be slow due to no fault of the browser and it would be nice if the phone let me do other things while waiting.
  • The Camera hardware button. It’s very awkward to take a picture by holding the phone (trying not to touch those Back or Home buttons) and then clicking the small button on the touch screen to take a picture. With the N900, I just pointed the phone and pressed the button on the top side.

I do not miss:

  • The N900’s chunky hardware. I used both the HTC Hero and Nexus S even more than my N900 because they are easier to carry around.
  • The default to landscape mode. Consuming large amounts of text (newspaper content) or lists (twitter or facebook posts), is easier in a portrait layout. That’s why newspapers have columns – they know what they are doing.
  • Non-flowing text in the browser. Android’s browser reflows text so you can read it. The N900’s browser often expects you to keep moving left and right on every line so you can actually read a paragraph. It respects the layout of the original page, but that’s little use on a small screen when I just want to read the content while ignoring the surrounding chaos.
  • Difficulty answering phone calls. On the N900, when the phone rings, I would unlock the screen, at which point the display would rotate from landscape to portrait, just a little to slowly. So my finger would move towards the Answer button, but when my finger reached the screen, the Cancel button was where the Answer button had been.
  • The N900 losing the cell phone signal and not getting it back without a restart or hacky GSM mode switch. I stopped using the N900 during our second pregnancy.

Overall, I feel that an updated N900, with thinner hardware like today’s phones, and slightly updated software, would compete very well with the current generation of Android phones. It would be way more attractive than a Symbian phone, though that’s not saying much. Of course, I enjoy several apps that are only available on Android, but I am not surprised that developers are not writing software for an API that Nokia declared dead before the N900 was even on sale, and for hardware that Nokia never tried to sell. Developers will even learn Objective C if it means reaching an audience.