Motorcycle Adventures and Free Software
Henri Bergius
Biker, free software consultant, neogeographer

There is a total of 792 posts.

Weblog: category "desktop"

My interview at dot KDE

Posted on 2010-09-02 15:55:28 UTC in 60° 0.000 N 24° 0.000 E 28km S of Lojo, FI to . 0 comments.

Jos Poortvliet did an interview with me for dot KDE in this summer's aKademy and it has been online for a while now. In it we discuss things like Midgard as a storage engine for desktop applications, and Maemo's open QA process for Downloads applications. Some excepts:

At maemo.org we have an appstore for FOSS applications on the Maemo platform. This appstore is enabled by default on all Nokia N900s so we wanted to have some quality control. We had to create our own appstore approval process, compatible with the FOSS philosophy. Now any developer can submit an app, and anyone can test and vote. The whole process is completely transparent, auditable and visible. And it also provides a feedback channel from testers and users to the developers!

...

Midgard is a data storage service. Whether you write desktop or web applications, instead of coming up with your own file format, you just use Midgard. You can work more easily and object-based. Users have many different devices these days, so Midgard has strong replication features to synchronize between different systems. Midgard is built on top of GObject; we provide bindings to a bunch of different languages so developers can choose the tools they like - PHP, Python, Javascript. Currently (as in now, while we're talking) Qt bindings are being developed here at Akademy.

Read the whole interview.

Sponsored links

Microsoft Certification Exams save money using, phone card

Zeitgeist does location: what did I do while in Brussels?

Posted on 2010-07-21 17:16:00 UTC in 60° 9.768 N 24° 55.668 E Helsinki, FI to . 6 comments.

Zeitgeist, the desktop activity logging engine is now becoming geo-aware. From Seif Lotfy's blog:

It allows you to ask Zeitgeist stuff like

  • “Get me the recent files I edited at university”
  • “Who do I contact most when I am at School?”
  • “Which pictures did I take in Brazil?”
  • “Where was I when an Email came in?”
  • “What files did I open during the conference?”
zeitgeist-geoclue.jpg

As I've been advocating since 2006, location is important for making applications smarter. While you might not remember where you stored some file, you probably remember where you were when working on it. Then Zeitgeist's location features, powered by GeoClue, will be able to get it for you.

This is especially cool since Zeitgeist is coming for Maemo as well. My laptop is quite mobile, but the N900 is even more so.

My GeoClue talk from aKademy 2010

Posted on 2010-07-09 14:04:14 UTC in 60° 0.000 N 24° 0.000 E 28km S of Lojo, FI to . 1 comments.

aKademy 2010 was hosted in the sunny city of Tampere by the Finnish Centre for Open Source Solutions, an organization that I'm a steering group member of. In addition to helping a bit with the arrangements and organizing the Midgard Gathering there, I also gave a talk about GeoClue, the positioning framework for Linux desktops.

bergie-geoclue-akademy2010.png

We initially started the push for location-aware desktops around 2006, and now the efforts are finally starting to bear fruit. Both Zeitgeist and Nepomuk are looking at indexing documents based on where you accessed them, Telepathy can share your location with your friends, and hopefully soon also your desktop clock will switch timezones when you travel.

It is very cool that this development seems to be happening on both GNOME and KDE at a reasonably similar pace. GeoClue is also a service in MeeGo and I've been told another major mobile phone manufacturer uses it. Maybe soon Mac OS X will not be the only platform with location APIs built in?

Photo by Alexey Zakhlestin.

Meet Midgard and GeoClue in aKademy 2010

Posted on 2010-06-28 12:54:47 UTC in 60° 0.000 N 24° 0.000 E 28km S of Lojo, FI to . 0 comments.

We tried to get the combined GUADEC and aKademy conferences to Tampere in 2009, but a warmer place unfortunately won. However, we will be hosting this year's aKademy so at least KDE and Qt fans will get to enjoy this beautiful northern industrial city.

The main conference will be held at the Tampere University over the weekend, and then the remaining hackweek will be in the nice Demola facility in the Finlayson district. Expect great connectivity and close proximity to all Tampere nightlife.

I'm involved with two aKademy activities:

In addition there will be a Maemo / MeeGo meetup in the Plevna brewery on Friday evening. See you there!

akademy-banner-small.png

Midgard Runtime brings our web framework to the desktop

Posted on 2010-06-23 12:02:17 UTC in 47° 0.000 N 13° 0.000 E 48km SE of Saalfelden am Steinernen Meer, AT to . 6 comments.

Midgard2 10.05.1 was released yesterday, bringing a long-waited feature finally to the Midgard installation packages: the Midgard Runtime.

Midgard Runtime is an application that consists of a simple Qt WebKit viewer that, when run, starts a local Midgard web server on the background and connects to it. This means that you'll have the full Midgard MVC stack available on your own desktop, in a way that is easy to install and easy to run. Get it for your favorite Linux distribution from OBS!

midgard-runtime-ratatoskr-small.png

As a whole, the Midgard Runtime stack is quite interesting:

The AppServer is particularly something that other PHP projects might find useful. Since the server itself is written in PHP you don't have any additional dependencies besides php-cli. It also means your application can use a lot more efficient caching as files have to be loaded only once, and things can be kept in memory between requests. Of course the downside is that if your PHP script dies, then the whole server is down. But that is easy to deal with by a bit of defensive programming.

At this point the Runtime is targeted at web developers interested in trying out Midgard, but eventually we'll be using the bundle system also for distributing full Midgard-powered web applications to the desktop. The progress on this can be followed on GitHub.

Compared to Nokia's Web Runtime, the Midgard Runtime should be more familiar to developers as you'll be able to write also server-side PHP code, not just JavaScript. In addition to PHP, the whole system is also accessible via any language that can handle GObject Introspection.

So, what can I do with it?

  • Install a Midgard environment with $ midgard2-runtime-bundle-simple-install
  • Start the runtime with $ midgard2-runtime-bundle-simple-run
  • Midgard MVC and components are located in ~/.midgard2/simple-bundle/. This is where you can also place your own code

Notes from my first Ubuntu Developer Summit

Posted on 2010-05-15 21:09:47 UTC in 60° 0.000 N 24° 0.000 E 28km S of Lojo, FI to . 0 comments.

Last week was the Ubuntu Developer Summit targeted at planning how the next iteration of the operating system, Maverick Meerkat, targeted at a October 10th 2010 release, would look like. The event was held in a spa resort off in the countryside near Brussels. A place where the developers were comfortably separated from the busy towns by forests and country roads.

I went to the UDS with two goals in my mind: to discuss making the Ubuntu desktop location-aware, and to figure out what sort of role Midgard, our content repository could play in the Ubuntu space. Normally such things would be better approached by talking to upstream projects and distributions, but as Ubuntu is taking an increasingly active role in developing itself to be a comprehensive and unique operating system, it would be a better place to accomplish such wide-ranging changes.

Location-awareness was a area that many were interested in. Ubuntu already had considered GeoClue, our location service, to be a component of the distribution in Lucid Lynx, but that plan had been abandoned due to the low-maintained status of the software. However, now that GeoClue has become the geolocation framework for MeeGo things are about to change, and so there is a significant possibility to get GeoClue into Ubuntu as well.

GeoClue by itself will obviously not do much, and so making applications use it is the important thing. Some applications already support location information and could be changed to include those features by default. This includes Empathy sharing location information with instant messaging buddies, and Getting Things GNOME TODO manager being able to tag action items with location. Zeitgeist is intending to start tagging and searching activity history with location, and Gwibber also wants to include location sharing to interface with social web services like Brightkite, Qaiku and Google Latitude. Another reasonably low-hanging fruit would be to make the Ubuntu panel clock automatically change time zones as you travel.

Midgard in Ubuntu is a bit trickier question. A lot of Ubuntu has now been developed to utilize the CouchDB document database, which provides quite similar storage services as Midgard does. CouchDB's cool map/reduce algorithms and replication capabilities have enabled Ubuntu developers to quickly integrate a content repository into many applications and to provide a cloud storage and synchronization service to users of the operating system.

But at the same time CouchDB introduces some problems:

CouchDB can't seem to handle the load of Gwibber's messages, leading to excessive CPU consumption and poor performance in certain cases. For example, the overhead of computing the views causes lag when the user switches streams after Gwibber refreshes. The cost of pulling the account configuration data out of the database can also sometimes cause a noticeable lag that lasts up to four or five seconds when opening Gwibber's account manager.

CouchDB has been designed with web servers in mind, and in many situations having a constantly-running Erlang process and having to do HTTP roundtrips to access data are undesirable on more constrained computers. We ported CouchDB to Maemo a few years ago and the performance was terrible. I'd imagine the same issues on netbooks and other small hardware that Ubuntu's Light initiative targets.

On such environments Midgard might be a better option. Midgard's recent LTS release uses regular relational databases for fast performance and low footprint, utilizes important pieces of free desktop architecture like D-Bus signalling and GObject Introspection, and has been proven to work well even on low-end devices like the Nokia N900. And yet it provides full content repository APIs comparable to CouchDB, and can even handle replication with Couch. One way to make Midgard possible, then, would be to provide Python DesktopCouch APIs to it.

Another interesting technology discussed much in UDS was Puppet, the  systems administration tool. It enables developers to describe their setups in a object-oriented declarative language, and then just let Puppet to make it so. I attended two Puppet sessions, and picked up a Kindle edition of the Puppet book which I read on the train ride to the Netherlands. As my company manages lots of Midgard web servers for our customers, automating system setup and maintenance on top of Puppet and Ubuntu Server might save us lots of time and effort.

All in all, quite an enlightening two days in the event. If things work out, I hope I'll be able to spend more time in the UDS targeting the N-series of Ubuntu next fall.

Ratatoskr is out: Midgard2 Content Repository goes LTS

Posted on 2010-05-07 17:03:21 UTC in 60° 0.000 N 24° 0.000 E 28km S of Lojo, FI to . 0 comments.

Midgard2 10.05 "Ratatoskr" was released yesterday, moving the Midgard Content Repository into long-term supported state as outlined in my recent post. Ratatoskr should provide a stable storage system for both desktop and mobile application developers.

Web developers will also benefit from Midgard MVC, the PHP framework that already runs services like Qaiku.com.

The release includes:

  • Content Repository API bindings for the following programming languages: C, Python, PHP, C# and Vala. D-Bus signals are used to inform different Midgard2 applications about things happening in the repository, enabling for example a PHP website and a Python background process to communicate with each other.
  • Midgard MVC, an elegant framework for PHP web applications. Midgard MVC includes interfaces for loadable components, hierarchical sub-requests, a forms system and much more.
  • Midgard Runtime that combines the Midgard MVC, a PHP application server and a WebKit UI to provide a full Midgard web development environment on the desktop.

This release benefits greatly from new technologies happening in the GNOME sphere: some of the language bindings are created using GObject Introspection, Vala has made development of new features faster and libgda4 makes all database operations more efficient.

Packages for various Linux distributions are already trickling into Midgard's OpenSuse Build Service repositories and Maemo Packages.

A good place to start the Midgard2 journey is my Midgard2 Content Repository for Python tutorial.

ratatoskr.jpg

Photo: Squirrel by John-Morgan on Flickr (the release codename Ratatoskr is a mythological squirrel)

 

Ubuntu Lucid brings Qaiku to the desktop

Posted on 2010-04-30 16:53:30 UTC in 60° 0.000 N 24° 0.000 E 28km S of Lojo, FI to . 0 comments.

Ubuntu 10.04 LTS "Lucid Lynx" was released yesterday. Among other new features it includes the Me Menu, bringing your social networks right into the desktop. Qaiku, the Finnish conversational microblogging service is included:

ubuntu-lucid-netbook-small.png

All in all, Lucid seems like a very smooth Linux desktop experience. I'm also happy other changes we've pushed for like PHP 5.3 are included. Maybe in the next release cycle we can start thinking of bringing geolocation to the desktop...

Future directions for Midgard

Posted on 2010-04-25 23:53:31 UTC in 60° 10.512 N 24° 55.152 E Helsinki, FI to . 1 comments.

Two weeks ago we had the Midgard Gathering in Poland, and some big decisions were made there. I've been meaning to blog about them, but the volcano eruption in Iceland kept me busy by providing an interesting trip through New York and Moscow.

Midgard2

The next Midgard2 release, 10.05 "Ratatoskr" will be a long-term support release, intended to provide a reliable base for building web and mobile applications utilizing the content repository. It will consist of:

Midgard Core, the actual content repository library that abstracts database connections, provides object-oriented storage and retrieval interfaces and handles things like D-Bus notifications of content changed by other applications.

Midgard PHP and Midgard Python, language bindings providing the Midgard content repository services to these popular scripting languages. This means the Midgard content repository can easily be used within any PHP web application, Python maemo application or with the Pylons MVC framework.

Midgard Mono, C# bindings to the Midgard content repository allowing better interfacing with Microsoft technologies.

GObject Introspection allowing us to provide other language bindings including Vala and Javascript.

Midgard MVC, an elegant framework for PHP web applications. Midgard MVC includes interfaces for loadable components, hierarchical sub-requests, a forms system and much more. You can see it in action for example on Qaiku.com

Midgard Runtime that combines the Midgard MVC, a PHP application server and a WebKit UI to provide a full Midgard web development environment on the desktop.

Once the release is in shape a major focus will be put in ease of installation and documentation. We already have Midgard2 running on Windows in addition to Linux and Mac, but it will remain to be seen if the port makes it in time for release.

Midgard3

After having a stable LTS release of Midgard2 out there the community will start working on Midgard3, which takes the concepts from Midgard2 even further with several important additions:

Workspaces, kind of "layered virtual databases" inside one content repository. These can be used on the CMS level of Midgard a bit like git branches are used.

Binary GUIDs for more efficient storage of the unique object identifiers in Midgard.

MgdSchemas stored in the database instead of XML files. This will make schema editing, sandboxing and replication between installations a lot easier.

MidgardQuerySelect, the new better database select interface to replace Midgard Query Builder.

Midgard CMS, the content management user interface built on top of Midgard3 and the Midgard MVC. We will provide interesting new concepts like UI constructed fully based on introspecting the CMS-generated pages and a git-like model where anybody can edit but pushing to production requires additional privileges.

Most applications will need to be adapted to work on Midgard3, which is why the LTS release will be there to ease the way, just like we did with Ragnaroek on the Midgard1 series.

The estimated first release of Midgard3 will be in December 2010.

On volcanic ashes and international travel

Posted on 2010-04-21 20:02:14 UTC in 40° 47.346 N 73° 58.506 W West New York, US to . 0 comments.

The past two weeks have been pretty hectic for me - Midgard Gathering in Poland, some meetings in Berlin, and the Linux Collaboration Summit in San Francisco. And then, thanks to the Eyjafjallajökull eruption in Iceland and the resulting flight cancellations, the trip back became a little bit more complicated.

San Francisco bay

My original KLM flight on April 17th was cancelled, and as the best offer from the airline was to get me home on 27th I made some quick decisions while still on the San Francisco airport. As it was certain that there would be some days of delay, New York felt like the best place to wait for the dust to settle.

Cancelled flights on SFO

After a failed attempt to get across the Atlantic on an Indian airline, my current plan is to fly tonight to Moscow with Aeroflot, and then hopefully to continue to Helsinki from there, either by plane or train.

New York from the Intrepid

In the meanwhile, thanks to Gregor and Google for graciously providing me with office space while I'm stuck here!

Gregor in Meat Packing District

As an afterthought: if such disruptions in flying would continue, that would be a huge boost for high-speed rail, fast ocean liners and telepresence. And that might not be such a bad thing for the future of mankind.