Openismus has recently had to let some great developers, and good friends, go. We are now much smaller.
Planet maemo: category "feed:64774e4a8618b0d6bf16181a6b931820"
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.
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.
The Openismus employees who worked on the N9′s Harmattan project received their free Nokia N9 phones from the company yesterday. It was expensive but its the right thing to do.
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.
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.
I’ve had the Google/Samsung Nexus S phone for a few days and I will now vomit my thoughts out here.
Openismus is looking for experienced and mature C++ coders again in Berlin and Munich. gtkmm or Qt experience is persuasive. I hope you can find my email address.
Qt has had an open bug-tracker for a few months now. I am very happy about that. It has made life far more pleasant for Qt developers compared to the past. However, there are some problems. In summary, bug reporters are often treated like the enemy instead of contributors, and this could be fixed easily.
Some projects on gitorious want all patches via git merge requests. This is very tedious, particularly for small changes. It’s therefore likely that many small improvements will never be submitted. Projects must care about that if they care about quality.
As far as I can tell, you must do it like this:
Create a remote clone
You can do that via the project’s top level web page. For instance. Then you need to “checkout” that clone on the command line.
Or reuse an existing clone, though you’ll have to rebase against the original, probably fixing some awkward conflicts from previous commits to your clone if you haven’t used branches for everything as I suggest below. It looks like people often create new clones for each merge request.
Create a branch in your remote clone
For instance:
- git branch mr_dosomethingtofooforgoo master
- git checkout mr_dosomethingtofooforgoo
- Make your changes, add and commit them.
- git push origin mr_dosomethingtofooforgoo
Request a Merge
Click the “Request Merge” button at the right, when looking at your clone’s top-level. For instance. There is no “Merge Request” button when looking at an individual commit, or even when looking at a branch. This would make it far easier to submit small changes.
Then you must copy/paste the first-line and details from your commit message into the two text fields on the Request Merge form.
You must also choose your branch name from a drop-down list and choose the commit from that branch that you want to use.
Then you can finally click “Create Merge Request”.
We are comfortably fond of autotools here at Openismus. It’s not perfect but we can use it, it does what we need, and it doesn’t have the problems that we see in other systems.
Autotools Tutorials
Years ago I wrote some popular introductory web pages showing how to do the obvious important stuff. David King has updated them and put the examples in git. They are now even simpler, because autotools got even better in the meantime. I think they will be useful.
Autotools with Qt Creator
Some of us like the Qt Creator IDE. So we asked Peter Penz to create a qt-creator plugin that provides some autotools support making it easier to use qt-creator with lots more existing projects. For instance, you can now have some code-completion in qt-creator with autotools-based projects, and you can run the whole build cycle from inside the IDE. Looking at the code, it seems fairly easy to create these plugins once you know how.
It currently works with the stable qt-creator 1.3 (ignore the uneven version number) though you’ll need to build it from source yourself for now. There is some interest from the qt-creator maintainers, so we hope to find time to update it for qt-creator’s master branch, which uses Qt 4.7 (currently unstable, but eventually stable with the same uneven version number), and then make a proper gitorious merge request.
By default, qt-creator uses qmake, though I think there is some CMake support. qmake is a time-wasting copy/paste-encouraging feature-lacking broken failure, so anything that helps people to avoid it must be good.