Motorcycle Adventures and Free Software

Weblog: Archive

2010-01-01 - 2010-12-31

Google's Near Me Now: not quite there

Posted on 2010-01-08 11:50:11 UTC in 60° 10.290 N 24° 56.796 E Helsinki, FI to . 0 comments.

Google launched a new mobile web service called Near Me Now that can recommend things like restaurants, bars and ATMs near you. This uses browser geolocation to provide only results relevant to where you are.

googlenearme.jpg

The idea is quite good: to replace business directories like Yelp or eat.fi with something that is easily accessible from Google's homepage and uses Google's great relevancy algorithms.

However, the implementation is not quite there yet. My main gripe is that they implemented this using browser sniffing so that the feature can be accessed only with iPhones and Android devices. Even though I'm using N900, a mobile device that has GPS and provides geolocation through the browser I cannot access that site. That reeks of the bad old times of IE-only websites.

Lesson: if you need browser sniffing to provide some feature, implement it based on browser capabilities, not the user agent (which can anyway be spoofed easily).

Sponsored links

save money using, phone card

Direct manipulation interfaces

Posted on 2010-01-21 13:26:44 UTC in 60° 9.810 N 24° 55.680 E Helsinki, FI to . 0 comments.

There certainly is a lot of buzz about Apple's rumored Tablet product. Daring Fireball writes:

If you’re thinking The Tablet is just a big iPhone, or just Apple’s take on the e-reader, or just a media player, or just anything, I say you’re thinking too small — the equivalent of thinking that the iPhone was going to be just a click wheel iPod that made phone calls. I think The Tablet is nothing short of Apple’s reconception of personal computing.

What I find most interesting are the view that the Tablet may bring new computer interaction paradigms. Again from Daring Fireball:

Our “desktop” computers’ human interfaces haven’t fundamentally changed since 1984 — keyboard and mouse/trackpad for input, overlapping draggable resizable windows on-screen, and a hierarchical file system where you create and manage “document files”. Have you ever sat back, scratched your chin, and wondered when the computer industry will break free of these current interfaces — which can be a hassle even for experts, and downright confusing (e.g. click vs. double-click) for the non-experts? Surely no one expects the computer interfaces of, say, 50 years hence to be based on these same metaphors and input methods. What’s the next step?

A touchscreen tablet isn't really suited for the WIMP paradigm as for example text entry is quite difficult, and you probably want larger, thumb-friendly user interface elements. This is where Microsoft's Tablet PC initiative failed, trying to bring the regular WIMP user interface to the tablet.

Instead what seems to be happening is that all the Wiis, iPhones, and N900s are now heading us towards a post-WIMP world. Instead of indirect manipulation by mouse and keyboard we can now interact with our applications using the more natural ways of touching things on screen or moving the device around.

This innovation will not be limited only to mobile APIs, web applications can already now know whether user is accessing them via a WIMP system or a touchscreen device thanks to CSS media queries and Javascript orientation events in latest Firefox.

The user interface innovation that is arriving thanks to these new interaction possibilities is quite promising, though it will probably take a while before we know what things actually work, and what are just fun demos.

If you're thinking about new kinds of user interfaces, it might be a good time to read papers like Noncommand User Interfaces (Jakob Nielsen, 1993) and Magic Ink (Bret Victor, 2006).

I certainly am as we are in the process of defining a new kind of CMS UI for Midgard 2.

Update: Gizmodo has a very nice article on Jef Raskin's information appliance concept and the evolution of GUIs.

iPad and information appliances, a free software angle

Posted on 2010-01-28 09:51:43 UTC in 60° 10.572 N 24° 55.212 E Helsinki, FI to . 0 comments.

Apple iPad is certainly interesting. It seeks to challenge the concept of PCs by providing something that is at the same time more personal, and a lot easier to use. The personal computer of the future.

Gone is difficult file organization - instead, applications use their own purpose-build content repositories. Instead of seeking software from many places, all of it is easily available in an App Store, all quality-controlled by Apple. And same thing with content - forget about bookshelves and stacks of CDs, instead simply dowloading all you need from iTunes.

This sort of user experience obviously comes with a cost. Important computing concepts like multitasking are not supported. The iTunes/App Store experience means that Apple is in the position to ensure no software or content competing with its or its business partners' business model gets on the device. And most of the content you buy for the device is DRM'd, meaning that you're only renting it for the time allowed by content owners, never buying.

Even with the limitations concerned I can see myself buying an iPad. It would serve as a very nice device for web surfing from the couch and as an e-reader on business trips. I can also see myself running demos and presentations from it instead of a laptop.

Even with the limitations concerned, it is likely that the iPad will happen, and will blaze the trail towards a new way of personal computing. Stephen Fry says it well:

Like the first iPhone, iPad 1.0 is a John the Baptist preparing the way of what is to come, but also like iPhone 1.0 (and Jokanaan himself too come to that) iPad 1.0 is still fantastic enough in its own right to be classed as a stunningly exciting object, one that you will want NOW and one that will not be matched this year by any company. In the future, when it has two cameras for fully featured video conferencing, GPS and who knows what else built in (1080 HD TV reception and recording and nano projection, for example) and when the iBook store has recorded its 100 millionth download and the thousands of accessories and peripherals that have invented uses for iPad that we simply can’t now imagine – when that has happened it will all have seemed so natural and inevitable that today’s nay-sayers and sceptics will have forgotten that they ever doubted its potential.

The success of iPad will mean more than just a completely new level of App Store economy. Other companies will certainly seek to emulate the model, coming up with their own post-WIMP devices and their own content and software ecosystems. This all will be a challenge for the free software movement.

The world of free software is still very much stuck in what computing was in the 90s. We think of desktop computers, we do not integrate with the web. And we do not get the transformation that is happening with personal computers. Taught by smartphones and cloud applications, users are moving from desktops through simple netbooks towards information appliances.

With information appliances you need a seamless user interface. You need an ecosystem where content comes alongside the software to utilize it. You need to move past the old WIMP metaphors and the idea of separation between data stored in a a file system and the software manipulating it.

So far the first convincing attempt towards this direction I've seen in the free software world is KDE's Social Desktop initiative. It allows users to connect with each other straight through the desktop, and it allows discovery of new applications and content to download and use straight in the applications. We also use it with Maemo's new App Downloader.

Threatened by the cloud from one end, and closed-ecosystem appliances from the other, it will be interesting to see how we react. Will we rise to the challenge and start providing new user experiences? Will we build a free cloud? Will we integrate with initiatives like Project Gutenberg and Creative Commons to provide the content integration? Will the open web be our safe haven?

Definitely interesting times to be a software developer.

Halti.com provides contextual product recommendations

Posted on 2010-02-10 15:33:05 UTC in 60° 9.984 N 24° 55.050 E Helsinki, FI to . 0 comments.

Last week the Finnish outdoor brand Halti launched a pretty interesting web service. While many outdoor brands focus on extreme sports that don't really have much to do with the reality of most of their customers, Halti connects their product lineup to the needs of the site visitor by utilizing both weather and location. This means where ever they are or are planning to go, they can get product recommendations personalized to their needs:

halti-small.png

This is another case of location context being used to serve users better. To figure out where the user is coming from the site uses a combination of IP positioning and browser geolocation, while weather information comes from Foreca's feeds. Map visualization uses CloudMade's OpenStreetMap-based maps. And of course the whole thing runs on the stable Ragnaroek series of Midgard.

In other news, Jos et jaksa is another pretty interesting recent site launch, especially for the fact that it is the first-ever website running on the legacy-free Midgard2 platform and Midgard MVC.

Buzz may end segregation in microblogging

Posted on 2010-02-10 20:16:11 UTC in 60° 9.798 N 24° 55.674 E Helsinki, FI to . 15 comments.

Yet another interesting launch this winter: Google finally published their lifestreaming application, Buzz. These are still clearly early steps for the service as it doesn't provide any APIs yet, and the user interface feels slow in a quite un-Google-like way.

However, it still shows strong potential in several ways. First of all, it may help the people raised on Twitter to discover a more conversational culture. And secondly, it connects to any website providing some necessary feeds, promising an end to segregation where you had to follow some of your friends on Twitter, some in Qaiku and some in Facebook. If all those sites start providing proper feeds you can just follow everybody in the interface of your choosing.

buzz-in-gmail.png

What is even more promising is that instead of being built on direct API linkage between designated partner sites, all of this is based on quite simple building blocks of the upcoming semantic web: social graph discovery, Atom activity feeds, and possibly the Salmon comments aggregation protocol. Your website, marked up in a semantic way is your "API". This means any site can join the play, not just the big players.

But to be fully usable Buzz needs to provide a few things:
  • Language filtering. I had to unfollow some Portuguese-speaking friends already
  • Discovery of interesting discussions. Now I only see things my friends post, not the things they comment
  • Groups or channels people can post to
  • and yes, Salmon so comments to my posts on Buzz will trickle down to Qaiku or my blog
As things stand for now, Qaiku will remain the conversation platform of my choice. It provides more flexible privacy, including our company's internal conversation channels, and does better job of geolocation and multilingual microblogging. You'll also find my Qaikus syndicated to Twitter.

Maemo's community involvement infrastructure is what MeeGo needs

Posted on 2010-02-16 09:39:35 UTC in 60° 10.566 N 24° 55.206 E Helsinki, FI to . 1 comments.

Nokia's Maemo and Intel's Moblin are merging to form MeeGo, a development environment for a new class of internet-connected devices ranging from smartphones through netbooks to TV sets. This may be finally what provides the free software world with a consistent and modern alternative to the iPhones and iPads that the proprietary world has come up with, the "magical user experiences" Linux Foundation's Jim Zemlin was asking for.

meego-small.png

Unlike Android, both Moblin and Maemo stacks have been very promising in the sense that they've been closely aligned with existing and well-known Linux desktop technologies. All RPC communications happen through D-Bus, Qt or Clutter is used as the GUI toolkit, there is Telepathy for integrated VoIP and IM communications, and Moblin even comes with the GeoClue location service.

So far the discussion about this merge has very much focused on technical terms: what toolkit to use (Qt is recommended), what package manager (RPM) and so forth. However, what hasn't been discussed yet is what will happen to Maemo's excellent infrastructure for community involvement:

  • Brainstorm is a tool for proposing ideas and solutions to them, and then voting to qualify them. This is a very good way to gather ideas and feedback from the community, and some brainstorms have even ended up having community-led free implementations available, freeing Nokia from having to write all platform functionality
  • Talk is the very popular forum for both Maemo end users and developers. Having an open forum to discuss it all, and having also people from Nokia and Intel there would help to communicate the aims and decisions around the platform a lot better
  • Packages and Downloads provide a fully open and crowdsourced "app store experience" where the community is free to develop, upload and install Maemo applications through a consistent service that provides quality control, nice installers and a free API for browsing the software available
  • Community Council and the Sprint process have been the way Maemo's community infrastructure has been designed and developed out in the open. The various tasks have been documented in the Wiki, and people have been able to follow the progress through a Qaiku workstream
  • Karma is a way to credit community members for their involvement. The involvement can be technical (for instance, developing a popular Maemo application) or social (publishing popular blog posts or helping people on Talk), and has been used as a criteria for Community Council and other elections. Karma also helps Nokia to qualify community members, to find the people who should have access the developer devices for instance. In a large community it is hard to identify the people who are just loud and the people who are doing actual valuable contributions from each other without such tools
  • Social News and Planet are a way for the community to aggregate and promote important posts around the project. We look at things like social bookmarking, blog links and votes happening on the Maemo site to determine the most important stories of the day, to provide an "automatic newspaper" for the project

Providing all or some of these services as part of the MeeGo infrastructure would enable the community to feel involvement, and even ownership in the new project that is shaping up. This is critical for a project that has such a big reliance on new innovation and connectivity with the upstream, especially at the time of such big change.

Going to the Bossa Conference

Posted on 2010-02-23 12:38:44 UTC in 60° 10.194 N 24° 56.304 E Helsinki, FI to . 0 comments.

Bossa Conference, an event about mobile development with free software technologies will be held on March 7th-10th in Manaus, Brazil. This year I'm speaking about using Midgard as a replicated storage layer in mobile applications, with examples for multiple programming languages and toolkits.

The idea behind the Midgard content repository is that instead of coming up with your own file formats you can just keep working with objects and signals, and let the repository deal with the rest.

bossaconference-small.png

It is always fun to go to Brazil and meet the vibrant free software community there. The plan is to fly over this weekend, spend a few days in Sao Paulo and then head for the Amazon. Feel free to ping me if you're around.

Wallpapers for Ubuntu 10.04: my submissions

Posted on 2010-02-24 11:03:08 UTC in 60° 10.080 N 24° 55.578 E Helsinki, FI to . 1 comments.

Ubuntu 10.04 "Lucid Lynx" is coming and they're looking for suitable wallpapers. I made some submissions and was pretty happy to see one of them in the Top 15 wallpapers for Ubuntu Lucid post:

Shnjaka sailing on lake Onega, Russia

Here are some other submissions I made:

Lights of the Itaipu dam, Brazil Sunset on the Aegean sea, Turkey Motorcycling on mountain roads, Albania

Register and log into meego.com using your maemo.org account

Posted on 2010-02-24 13:57:09 UTC in 60° 10.080 N 24° 55.578 E Helsinki, FI to . 4 comments.

MeeGo is the new mobile Linux platform developed by Nokia and Intel. As the community is forming up, we thought that it would be good to enable people to use their maemo.org identities also on the MeeGo web services (as well as on any other OpenID enabled website). For this, let me introduce Maemo's OpenID provider.

First of all, go to meego.com and click login:

meego-login.png

Select the "Log in using OpenID" option, and provide your maemo.org OpenID URL:

meego-maemo-openid.png

Then the request will be redirected to maemo.org where the site will check your credentials and ask whether to relay your information on to meego.com:

maemo-openid-meego.png

And that's it, suddenly you can use your maemo.org account with meego.com!

 

The same OpenID provider component can also be utilized on any other Midgard-powered website.

CMS Watch on their Midgard usage

Posted on 2010-03-08 18:24:26 UTC in 3° 3.806 S 60° 6.420 W 10km NW of Manaus, BR to . 0 comments.

Which CMS does The Real Story Group Use? (Tony Byrne / CMS Watch):

The answer is, we use an open-source platform called "Midgard." We picked it nearly ten years ago, and it has held up fairly well.
...

One of the things we like about Midgard actually makes it rather unsuitable for many simpler publishing scenarios: it is highly object-oriented. This allows us to run multiple sites off largely a single codebase -- at the cost of quite user-unfriendly administrative and authoring facilities.

Also, Midgard is very much a development platform, and we have had to create a fair amount of custom code, especially to handle structured content. In that regard, our CMS experience probably resemble yours. As an industry we remain very far from plug-and-play content management technology for all but the simplest of websites.

While the post contains many negative points about older Midgard (the UIs are a bit better now than they used to be, quite a lot of development has since been happening especially in the LTS branch), it is remarkable that CMS Watch has been able to run their services through the same CMS setup for ten years. This really shows the durability and commitment to long-term stability we have in the Midgard community. We've been doing this for more than ten years, and will likely keep going for quite a bit longer.

As for usability and popularity of Midgard, there is quite little we can do about it in the Midgard1 area, as that is now in long-term support phase that won't allow major changes. But Midgard2 is a new world with new opportunities. Midgard's content repository is pretty much there already, as is the MVC layer, and this spring we should be able to unveil the new, quite revolutionary CMS concept as well. Watch this blog for updates!

Getting started with the Midgard content repository

Posted on 2010-03-09 15:50:26 UTC in 3° 3.806 S 60° 6.420 W 10km NW of Manaus, BR to . 3 comments.

I'm doing a talk today in the Bossa Conference about using Midgard as a content repository for mobile applications. As part of my presentation I wrote some simple example code for using the Midgard APIs in Python, and thought they would be good to share to those not attending the event as well.

The idea of a content repository is that instead of coming up with new, isolated file formats or database setups for your application you can just work with objects and signals, and let Midgard handle the rest. This is something that lots of people are doing with CouchDB as well, but we feel Midgard, with its light footprint and native APIs for languages like Python, C, Vala and PHP fits better in the mobile applications context.

Installing Midgard

Midgard packages are available for many different Linux distributions through the OpenSuse Build Service. To find the right repository for your setup, go to the OBS project page. For example, on my Ubuntu Karmic netbook the URL to add to apt sources.list is deb http://download.opensuse.org/repositories/home:/midgardproject:/mjolnir/xUbuntu_9.10/ ./. Then I just:

sudo apt-get update
sudo apt-get install python-midgard2

Midgard is also available in Maemo extras and for OS X on MacPorts.

Defining a schema

The first thing when developing a Midgard application is to define your storage objects. This is done using the MgdSchema XML format. In this case we're doing a simple "attendee" object that amends Midgard's built-in person record with information related to the conference:

<?xml version="1.0" encoding="UTF-8"?>
<Schema xmlns="http://www.midgard-project.org/repligard/1.4">
    <type name="openbossa_attendee" table="openbossa_attendee">
        <property name="id" type="unsigned integer" primaryfield="id">
            <description>Local non-replication-safe database identifier</description>
        </property>
        <property name="person" type="unsigned integer" link="midgard_person:id">
            <description>Person attending the event</description>
        </property>
        <property name="registration" type="datetime">
            <description>Registration date of the attendee</description>
        </property>
        <property name="likesbeer" type="boolean">
            <description>Whether the attendee likes beer</description>
        </property>
    </type>
</Schema>

Then we just save this XML file into /usr/share/midgard2/schema/ so that Midgard will find it.

Initiating the repository connection

Once the MgdSchema is in place it is time to import antigravity and start hacking in Python. The code works pretty much in the same way in other languages Midgard is available for, but Python is used here for the sake of simplicity. First we load the Midgard extension:

import _midgard as midgard

Then we setup the repository connection. With these settings we will store our content into an SQLite database located in ~/.midgard2/data/midgardexample.db:

configuration = midgard.config()
configuration.dbtype = 'SQLite'
configuration.database = 'midgardexample'

# Open a Midgard repository connection with our config
connection = midgard.connection()
connection.open_config(configuration)

As this is the first time we're interacting with the repository we need to tell Midgard to prepare the storage for itself and also for our new openbossa_attendee class:

midgard.storage.create_base_storage()
midgard.storage.create_class_storage('midgard_person')
midgard.storage.create_class_storage('midgard_parameter')
midgard.storage.create_class_storage('openbossa_attendee')

Interacting with data

First we create a person object with our attendee:

person = midgard.mgdschema.midgard_person()
person.firstname = 'Leif'
person.lastname = 'Eriksson'
person.create()

Then we create our attendee object and link that with the person we just created:

attendee = midgard.mgdschema.openbossa_attendee()
attendee.person = person.id
attendee.likesbeer = True
attendee.create()

Querying data

Later we'll want to find out about all Leifs attending the event. We do this by using the Midgard query builder:

qb = midgard.query_builder('openbossa_attendee')
qb.add_constraint('person.firstname', '=', 'Leif')
attendees = qb.execute()

The query builder returns us a list of matching attendee objects. We can go through them and also fetch the associated persons:

for attendee in attendees:
    person = midgard.mgdschema.midgard_person()
    person.get_by_id(attendee.person)
    if attendee.likesbeer:
        print "%s, %s is attending the event" % (person.lastname, person.firstname)

Then we can update the persons with their email addresses:

    person.email = 'leif@vinland.no'
    person.update()

For basic data handling, that's it! When you need more, you can extend objects with file attachments or parameters. You can also create joined records using Midgard views. Midgard provides D-Bus signals, transactions, centralized metadata, synchronization and many other things.

First year of Qaiku, and a travel writing challenge

Posted on 2010-03-09 21:00:09 UTC in 3° 3.806 S 60° 6.420 W 10km NW of Manaus, BR to . 3 comments.

1st birthday of QaikuQaiku, the conversational microblogging service that launched a year ago had a refresh that launched today. While it hasn't yet convinced the twittering masses, it has already proven itself as a lot more thoughtful platform for the Finnish online community, and as a valuable workstreaming tool.

The new version looks quite nice and fresh. Notice the privacy information on the right-hand side, which is relevant as Qaiku allows channels and profiles that are private or invitation-only:

qaiku-onmytravels-small.png

Technically the new version is also remarkable as it is the first major website to run fully on top of the legacy-free Midgard2 platform. So yes, every entry you see there is a GObject. And D-Bus signals fly when you post.

On to the challenge, then

To highlight Qaiku's threading, conversational nature I started a new "On my travels, I have" thread for sharing your most extraordinary travel experiences. This is not on Twitter or Buzz as with Qaiku it is so easy to keep the conversation together and accessible for the future as well.

To contribute, sign up on Qaiku, go to the thread and add your experiences as a comment. If you have a link or picture to include, you can also do so. My first entry was:

seen ice descend from the heavens and provide us with cold beer on a hot day in Lesotho

Will be interesting to see what comes out of this :-)

Easier templating for Midgard 8.09

Posted on 2010-03-17 20:33:14 UTC in 60° 10.302 N 24° 55.686 E Helsinki, FI to . 0 comments.

For a while now there has been discussion about making template editing easier with Midgard CMS. In the Ragnaroek series we have a very comprehensive template system where all output from the system can be overridden. While the possibilities have not always been easy to discover, things should be better in the next Ragnaroek LTS release.

To access the template system just click Folder > Edit layout template in the Midgard toolbar:

midcom-toolbar-edittemplate.png

This will take you into Asgard, the Midgard administration interface. There you'll be shown what elements are used by the components running on your site:

asgard-template-possibleelements.png

Clicking on an element name will let you create it. Then you'll be shown the default contents of that element to make overriding them easier. The language used in the templates is obviously PHP:

asgard-element-defaults.png

When you save your element it will replace the component's default output in the folders using that particular style. You can also do nice things like including contents from another page using Dynamic Loading.

What about file attachments?

Asgard also allows you to add files (images, CSS, javascript, whatever) to your template. To do this click the Attachments button when you're in the style. There you'll be able to manage existing file attachments and to add new ones:

asgard-style-attachments-add.png

If you're dealing with a text-based file (CSS, javascript, XML, ...) Asgard will also allow you to edit it directly on the web:

asgard-edit-css-file.png

...and finally when you're done with your file and want to use it in some of your templates, the URL is available easily from the interface:

asgard-file-information-url.png

Content repositories: SQL or NoSQL?

Posted on 2010-03-29 11:08:31 UTC in 60° 10.566 N 24° 55.182 E Helsinki, FI to . 0 comments.

The NoSQL movement seems to be pretty active, advocating a move away from traditional relational databases:

...developers have become crippled by being able to only think of data in terms of Rows and Columns. There's a multitude of database paradigms: Graphs, Trees, Objects, and so on. Furthermore, databases limit developers to SQL, which is great for certain kinds of set mathematics and not much else. In order to overcome fundamental limitations of DBs, things like Conditionals, Iteration, String Manipulation, and more have been hacked into what was at first an elegant set mathematics language.

Algorithms (such as MapReduce) which make data analysis scalable are highly unintuitive in SQL. The limitations in the environment lead to a limitation in engineers' ability to solve "big data" problems.

This may be true if you're building the next Twitter or Facebook. But how many of us really do?
In the quite ranty article I Can't Wait for NoSQL to Die Ted Dziuba has a point:

by replacing MySQL or Postgres with a different, new data store, you have traded a well-enumerated list of limitations and warts for a newer, poorly understood list of limitations and warts, and that is a huge business risk.

This is exactly the reason we decided to build Midgard2 on top of a relational database. While it does constrain us in some cases, we can still provide a quite reasonably full-featured content repository this way.

And being built on SQL means we know the system scales down to mobile devices and all the way up to major business systems like Lufthansa's global marketing budget tracking. That is something very few NoSQL systems will be able to boast.

GeoClue 0.12 is out: Location awareness over D-Bus

Posted on 2010-03-29 11:26:54 UTC in 60° 11.286 N 24° 49.464 E 6km NW of Helsinki, FI to . 0 comments.

geoclue-200.png

After a long hiatus there was a new GeoClue release 0.12 last week. GeoClue is a D-Bus service that Linux applications can use to obtain user's current position and convert between human-readable addresses and coordinates. As location-aware services are becoming more important and computers more mobile the free desktops should also be aware of where they are.

Dadadi Blog writes:

Geoclue has a really nice feature, the master provider. It means geoclue can handle multiple sources of geoinformations. For example, you can get your position with your gps device, or with OpenCellId, or with webservices that will associate your IP address with a location (such as hostip). Geoclue master provider is able to choose the source with the best accuracy.

Geoclue is used at least in Empathy to publish your location to your contacts, and in WebkitGtk to support html5 geolocation.

It's been the first release in nearly two years, and it's great to see that nice project moving forward again. In this release, Nominatim has been added as a provider for geocoding and reverse/geocoding. It means it's possible to use nominatim service to get the position for a given address, or the opposite. There have been also many bugfixes and code cleaning, including a bug I've helped to resolve that prevented master provider from being usable in some configurations.

I'm also really happy to see GeoClue again moving on. It is important for the free desktop infrastructure to have such critical tools available as vendor-neutral D-Bus services instead of platform-specific libraries.

Update: ran into python-geoclue, a very handy Python convenience library for dealing with GeoClue that is a result from last summer's GSoC. Seems to work pretty well.

Swarms and networks in modern warfare

Posted on 2010-03-30 07:45:48 UTC in 60° 11.286 N 24° 49.464 E 6km NW of Helsinki, FI to . 0 comments.

Foreign Policy has a feature on the New Rules of War which talks about how warfare is transitioning to networked small units working together:

Liddell Hart, writing in 1935, predicted that at some point "the old concentration of force is likely to be replaced by an intangibly ubiquitous distribution of force -- pressing everywhere, yet assailable nowhere."

Now, swarming is making a comeback, but at a time when few organized militaries are willing or able to recognize its return. For the implications of this development -- most notably, that fighting units in very small numbers can do amazing things if used to swarm -- are profoundly destabilizing. The most radical change is this: Standing armies can be sharply reduced in size, if properly reconfigured and trained to fight in this manner. Instead of continually "surging" large numbers of troops to trouble spots, the basic response of a swarm force would be to go swiftly, in small numbers, and strike the attackers at many points. In the future, it will take a swarm to defeat a swarm.

This is actually quite close to what appears to be the Finnish doctrine. Small units or two-man fireteams navigating their way in the deep woods to converge on set objectives. When practicing with anti-tank weaponry there we used to disassemble the big missile systems and carry them on our backs, while Americans carry the same tools on humvees.

The idea of microenterprise applied to warfare. John Robb even called it "Open Source warfare".

Unitasking has its merits

Posted on 2010-04-06 20:30:23 UTC in 60° 9.684 N 24° 56.202 E Helsinki, FI to . 0 comments.

One of the key complaints about iPad has been its lack of multitasking. With it you can only run one application at a time, though music for example will still continue to play while you work. This is not how computers have traditionally worked, but it may not only be a bad thing. Om Malik notes:

In many ways, the iPad’s lack of multitasking ability makes it worthy of focusing on just the task at hand. In my brief usage of the device at the time of its unveiling, I felt a near-complete interaction with an email or a document or a web page. That was near nirvana when it came to consumption of content.

This is close to the way I work on my Ubuntu Netbook. When I use an application - be it a web browser or a code editor - I run it maximized, trying to rid my screen of unnecessary distractions. This is what makes the netbook my work machine.

My work machine is not a communications tool. For that I have my N900 universal communicator, a second screen with beautiful multitasking capabilities. The N900 is the hub of all the potential distractions - whether you call me, IM me, or ping me on IRC, the little notification led will start to blink. If I don't want to be distracted I simply leave the communicator in my bag.

So yes, in an increasingly distracting world, single-tasking may have a new purpose.

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.

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.

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...

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)

 

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.

Privacy: how Qaiku is doing it

Posted on 2010-05-18 11:17:53 UTC in 60° 9.816 N 24° 55.686 E Helsinki, FI to . 0 comments.

Facebook is facing a backlash on their constant erosion of privacy. They have a privacy policy longer than US constitution, and a track record that has even sparked a federal complaint. While I'm a big believer in a transparent society I still believe users should be in control of who can see their information and how.

I think Qaiku, the conversational microblogging service, is doing this quite well. In your profile you have a simple setting:

qaiku-privacy-settings.png

Privacy of individual conversations comes from the settings of the person who initiated that thread. The setting is clearly shown in the sidebar. Some examples:

qaiku-privacy-thread-qaikuonly.png

qaiku-privacy-thread-memberonly.png

qaiku-privacy-thread-public.png

This way you can know who will be able to see your comments and make the decision before posting them.

The Terms of Service are not too tricky either, containing items like Be Nice and What is yours is yours.

Midgard2 has moved to GitHub

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

Now that Midgard2 is at Long-Term Supported stage it was time to finally make the jump and migrate our development efforts to happen on top of Git, the fast version control system. To maximize project visibility and enable easy tool access we chose GitHub as the Git hosting provider.

git-banner.png

While migrating to Git we also decided to implement the Distributed Version Control model where the MidgardProject account contains "blessed" repositories of various modules of the Midgard2 ecosystem, with development happening in personal clones. Maintainers of Midgard modules will be responsible for merging changes from developers back upstream, based on pull requests. More information can be found from the developer list thread.

You can get started by following the MidgardProject account on GitHub! See also Midgard2 and Midgard MVC on Ohloh.

Midgard1 Ragnaroek maintenance and development will still happen in our old SVN environment and the Trac tool.

First year of IKS for Midgard

Posted on 2010-05-25 15:29:31 UTC in 51° 42.798 N 8° 46.233 E Paderborn, DE to . 0 comments.

Last year we became a partner in the European Commission -funded Interactive Knowledge Systems project aiming to increase semantic capabilities in Open Source CMSs and vendors.

The first year of IKS has focused mostly on research and requirements gathering. As a project participant we at the Midgard project have taken this time for making our own preparations as well. Here are some initial results:

  • grokking the semantic web and linked data ideas and terminology obviously required some amounts of studying
  • we did a comparison of features and concepts between three content repositories together with Day Software. The similarities between Midgard, JCR and CouchDB are remarkable
  • while others in the IKS sphere are focused on Java, we've started collaborating with the developers of Tracker, a GObject-based RDF triple store. Tracker would fit the Midgard architecture much better and we would be able to avoid big external dependencies
  • we chose Wymeditor as the new rich text editor in Midgard CMS. Wymeditor is fast, jQuery-based and relatively sparse of features, allowing us to build the functionality we need in an integrated manner. Wymeditor is also capable of dealing with RDFa
  • MgdSchema, the XML syntax for describing Midgard content types was expanded to allow us to link objects and properties to appropriate RDF ontologies
  • we participated in several IKS meetings around Europe: Salzburg, Rome, Salzburg, Rome and now Paderborn
  • preparations were made to migrate Midgard's default HTML templates from Microformats to RDFa

All of this aims for making Midgard compatible with the designs of the IKS project, but building as much of it on top of the pure GNOME + PHP stack as possible.

Staff meeting in the park

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

At Nemein we have a monthly staff meeting to go through all project backlogs, new initiatives and happenings in the R&D side of things. Today the weather was nice, so we decided to keep the meeting in the nearby Sinebrychoff Park, armed with croissants, cake and the company waterpipe. Quite pleasant change from routine!

20100604_002_small.jpg

20100604_004_small.jpg

20100604_009_small.jpg

Thanks to Aslan for the cake!

Open Source? Free Software? What we need is Open Projects

Posted on 2010-06-14 17:32:42 UTC in 60° 0.000 N 24° 0.000 E 28km S of Lojo, FI to . 3 comments.

Both companies and public administration are starting to understand the benefits of free software: reducing vendor lock-in, possibility to continue development of a project after a vendor has gone out of business or lost interest, and in general enjoying the four freedoms. But unfortunately much of this understanding has been limited to the context of licenses.

In reality, licenses are only a small part of a project being truly open. They are just a layer of insurance comparable to traditional source code escrow.

What we really need is understanding of a bit more wholesome project openness. The actual goals of openness that the license should derive from. Here are some aspects to consider:

Project transparency

If a project aims to have outside users or contributors, they need to be able to see the history of changes in the software, decisions that have been made, and the open list of bugs or enhancements being worked on.

A released software package answers these questions poorly regardless of a license. Instead, what is needed is the project being developed out in the open, preferably using one of the common project hosting environments like Gitorious, GitHub, SourceForge, Launchpad or GNU Savannah. You can also host the project yourself using something like Trac or GForge but this limits access and visibility to the project.

The project must actually use the service, not just by code dumps at release time, but with constant development activity visible as code commits and active issue tracking. Depending on business goals it is also good to have future plans for the project visible to the public.

All of this is mandatory for others to gauge the viability of a software package to their needs. Josh Berkus presented a good list of things you shouldn't do to create a community around your project.

Contribution policy

Potential users and developers need to know how they can make their changes available to a package. Is it possible at all, are copyright assignments or some contributor agreements necessary, is there a documented process for submitting changes or even becoming an acknowledged developer in the project? Or is the project being developed behind closed curtains of a company?

Requirements and software stack

Another area some projects fail at is communicating how the software can be built and installed. If the only practical way to run the software is from released binary packages, or through buying consulting, is it truly open? Does the project require additional closed software or specific hardware to run with?

Specialized licensing concerns

Depending on the type of software other concerns may be being able to provide it as part of a Software as a Service offering, or being able to deploy it on some constrained or closed hardware.

Some software licenses address these questions clearly, like EUPL requiring contributions to be opened also when the software is offered in SaaS manner, or GPLv3 forbidding device manufacturers from locking down or 'Tivoizing' their hardware products.

Wrapping up

Most of these questions are well understood within the free software community itself. But we generally communicate it poorly by focusing the discussion on license technicalities. I guess this is because we're so used to working in this open manner that we take the it as a given. But users, especially in the public administration only see the licensing side of things because that is the only aspect we talk about and have definitions for.

A good exception for this is the Apache Software Foundation that has a well-defined set of rules that projects must follow before they can be adopted under the ASF umbrella. Maybe FSF and OSI should also publish some understandable guidelines and definitions for project openness?

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

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

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.

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.

Recent performance improvements for Midgard 8.09

Posted on 2010-07-22 11:35:29 UTC in 60° 0.000 N 24° 0.000 E 28km S of Lojo, FI to . 0 comments.

Midgard 8.09 is an industrial CMS that is now in Long-Term Supported stage, with the community maintaining it until 2013. As we all know, performance is a feature, and with a CMS framework that has lived through many changes including transitions from PHP4 to 5.2 and from Classic Midgard era to the modern APIs, there is a lot to do.

For the next 8.09.10 release we decided to put quite a bit of efforts into performance tuning, with some excellent work done by Content Control to simplify ACL handling and cache navigation information. As you can see, the result is quite impressive:

ragnaroek-acl-nap-performance.png

What is left to be done is some work with the multilingual content database queries. After that we should be good to go with what is probably the fastest Midgard1 ever.

Frankencamera aims to make cameras open and programmable

Posted on 2010-07-23 11:05:02 UTC in 60° 0.000 N 24° 0.000 E 28km S of Lojo, FI to . 3 comments.

Frankencamera, or fCam, the open source computational photography platform from Stanford's Camera 2.0 project was unleashed for the Nokia N900 this Wednesday. PhysOrg has a story outlining the significance of this:

Computational photography refers to the ways computers can extend the capabilities of digital imaging by combining multiple photographs taken with different camera settings to create an image that could not be taken in a single shot, or with an ordinary camera.

Some of these new ways of combining images can be done in Photoshop or another such program, but until now they could not be done inside the camera, Levoy said. That's because commercial cameras are closed to development by all but their manufacturers. Frankencamera, on the other hand, brings computational photography directly to the camera, by making the camera a programmable platform.

I installed fCamera and the HDR photo assistant from Maemo extras-devel yesterday, and the results (taking .DNG RAW images, automatically generating HDR pictures) seem quite impressive. Here is a quick example from our office. Sun is shining outside and the office is not lit:

HDR_2010722_1454_small.jpg

For comparison, here is the same setting with the regular N900 camera application:

20100722_001_small.jpg

It will be interesting to see what developers will come up with, now that all these camera capabilities are available through an open API!

Aloha and the art of semantic web content

Posted on 2010-07-27 19:07:49 UTC in 60° 0.000 N 24° 0.000 E 28km S of Lojo, FI to . 0 comments.

To bring CMS editing to the next level, the IKS project is working on a semantic HTML5 editor. This week we had a hackathon in Helsinki focusing on implementing our ideas with the Aloha Editor. In addition to enjoying the hot summer weather here, we accomplished quite a bit and in the end were able to present the whole pipeline of:

  • Loading content from Midgard CMS to Aloha Editor
  • Annotating our content with Google-compatible Person RDFa elements
  • Saving the content back to Midgard
  • ...and finally analysing the content with FISE to find more semantic information

iks_helsinki_hackathon_participants.jpg

The hackathon participants included developers from Nemein, Gentics, Infigo, Salzburg Research and the German Research Center for Artificial Intelligence. Some screenshots:

aloha-editing-small.png
Editing content with Aloha in Midgard

aloha-editing-rdfa-small.png
Annotating persons with the Aloha RDFa plugin

aloha-generated-rdfa-small.png

RDFa annotation created with the semantic editor
fise-analysed-content-small.png
Additional semantic information suggested by FISE

All the relevant code can be found from GitHub (see also the FISE Midgard integration).

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.

buscatcher: Never miss another tram

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

Opening public data is a hot topic in Finland at the moment. As a small experiment with the data that is available I wrote buscatcher, a simple N900 app that displays Helsinki trams (and some buses) moving on a map in real time. This makes it easy to determine when your next tram is coming to the stop, or where it is stuck.

buscatcher.jpg

Click here to install this application

Updated 2010-09-28: Buscatcher now has a stable release that is available from Maemo Downloads with already more than 10,000 installations.

For other platforms, you can grab and run the application from the GitHub repo. It should run on regular Linux desktops, and there have been reports of working on also platforms like the OpenMoko Freerunner.

Towards the geotagged web

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

There was a pretty interesting snippet in Engadget's coverage of yesterday's Nokia World keynote:

"By 2013 800 million people will be using GPS-enabled devices. Soon, everything on the Internet will have a location coordinate. This is a space we intend to own."

Indeed, this is a quite possible future, and one for which we with Midgard are quite well prepared for. Many smartphone browsers (and even desktops) nowadays can transmit their location to web services, more and more geotagged information is being published via microformats, feeds and RDF. From the humble beginnings with Plazes, social web services like Twitter, Qaiku and Facebook can now store and display location where different status updates were made.

The missing piece for a wider-scale geotagged web however is actual usage of geodata. We need easy tools for tagging content with locations, but also web services that actually serve their users better thanks to location information. This can mean helping the user to catch a bus, or recommending them clothes purchases based on local weather. Anything that goes beyond just showing dots on a map.

For that, Midgard has had the necessary infrastructure in place. What we need is your ideas and use cases for how to improve web services through location.

Join the Helsinki MeeGo Network

Posted on 2010-09-17 13:42:46 UTC in 60° 0.000 N 24° 0.000 E 28km S of Lojo, FI to . 0 comments.

The MeeGo community is starting to form local networks for developers and enthusiasts:

Local MeeGo Networks organize face to face meetings and other activities on the real ground. They bring what no online social network can provide: real handshakes, real kudos, real applause, real face to face chat. They are free as in beer.

If you are in the Helsinki region and are interested in MeeGo, the first meeting will be held in the Nemein office on September 22nd, starting at 5pm. Welcome!

meego-helsinki.png

Updated 2010-09-28: The Helsinki MeeGo Network is now on meetup.com. Join us!

The web and the free desktop

Posted on 2010-10-11 18:37:30 UTC in 60° 9.786 N 24° 55.668 E Helsinki, FI to . 11 comments.

Some days ago I ran into an interesting comment in a review of the Ubuntu 10.10, released yesterday:

in an era where you can do 90 percent of your work through a browser window, Ubuntu needs polish, usability, compatibility, and a likable look and feel more than anything. With Windows 7, Microsoft's dominant OS is no longer the big, obvious heavy it once was, at least from the software design standpoint.

Indeed, web browser is the tool I spend most of my time in. While I still hack using desktop-based development tools instead of the cloud, almost everything else I need is already happening on the web.

This means the operating system doesn't really matter. Linux, Mac, Windows, KDE, MeeGo, GNOME, whatever is the best at managing my browser windows and web apps may be the winner, and the only desktop app that matters is the browser. Or actually, not the browser but the things you access with it.

Instead of looking back and competing on the merits of what desktops were back in the 90s, how about really focusing on the desktops of the future? You need mobility, support for touch interfaces, and especially, you need great support for managing different web applications. Their shortcuts, their preferred screen size, their cookies and their local storage.

Firefox is already working on how to manage web apps better, as is IE9. But how about trying to outdo them on the desktop level? Maybe desktop could manage privacy, access to user information, and context probably better than a browser can? Handling native applications and web applications in the same way might be another good idea, including making them supported in notification systems etc.

Qt, GTK+, Clutter and QML may be great toolkits for some situations, but we should accept that HTML is another toolkit, and really the only cross-platform one out there, and that it should coexist seamlessly with the native toolkits. Fedora's Mike McGrath might be on to something.

Update, responding to The browser myth comment by Johannes Schmid:

Most people will probably answer that the web browser is the application they use most often. That might be true, but is it the application they spent their time with when they are working? I certainly hope not!

It wasn't my intention to claim everything happens through browser, but instead to suggest that web applications should be treated as equals to regular desktop applications, with similar services and management UIs provided for both.

The split between web applications and desktop application most likely varies between companies. In our company most of the business collaboration tools are web-based, as is the primary access to email, calendaring, contact information, financials, etc. We use in-browser office tools and OpenOffice.org with probably a 50/50 split (I've found OOo can make a lot prettier presentations than the current web-based offerings for instance). And even software development happens more in the browser, except for the people involved with the CMS back-end.

This didn't use to be the case a few years ago. The web evolves a lot more quickly than the traditional desktop world, and so when looking for better tools we increasingly end up selecting a web-based one. I'm sure this is a process that happens in companies everywhere, though more slowly with conservative big enterprises. Making the free desktop the best environment to use web applications in would hugely increase the platform's appeal.

Another great opportunity with web applications is their portability. We will probably never get the whole world to switch to GNOME or KDE, but if our free software is available through a browser they can still benefit and participate in our efforts. Using web tools also exposes the free software community to the large group of developers who have bypassed the traditional desktop model and grown up making web apps.

Using HTML as a toolkit may not necessarily mean interacting with regular web servers. Many regular desktop applications embed WebKit or some other HTML widget to display rich content. It is also quite possible to run full web systems on your own computer, made even easier with tools like the Midgard Runtime or CouchApps.

Update, responding to Can Web Developers Scale? by Jaroslaw Staniek:

Can Web Developers Scale?
"That's like saying that there's a huge pool of high-school physics teacher who can now contribute to solving cold fusion. [..]"
Really I admire talented web devs. But I think while most of developers are web developers, most brilliant developers are not the web ones.

Obviously believing that there are thousands of web developers itching to contribute to GNOME or KDE, if it only could be done with web technologies is false. But the fact is that most developers nowadays grow up learning and making web applications instead of the traditional desktop technologies. Opening a way for them to become members of the existing free software communities would be a big win.

Now most of them use Macs and build closed web application silos, though with the shared open infrastructure of Ruby on Rails, Django, Midgard or whatever.

Open Source is more than just code dumps

Posted on 2010-10-29 11:12:34 UTC in 60° 0.000 N 24° 0.000 E 28km S of Lojo, FI to . 0 comments.

Great quote from Matt Asay's analysis of what went wrong with the opening of Symbian:

Open source isn’t a one-time announcement, coupled with a code drop. It’s exceptionally hard, ongoing work that requires equal parts evangelism, programming, and customer success stories to keep developers believing that their work matters.

This is very much in line with what I wrote about Open Projects earlier. I'll be giving a talk on the subject in COSS's OpenMind conference on Nov 10th.

Application quality assurance in Linux distributions

Posted on 2010-10-29 14:11:01 UTC in 60° 0.000 N 24° 0.000 E 28km S of Lojo, FI to . 1 comments.

We had a session about application QA in last weekend's GSoC Mentor Summit. I explained how the Maemo Downloads approval process works in a completely open, crowdsourced way. This differs from many distributions where approval of new packages involves obscure decisions and secret handshakes.

Some guidelines:

  • Separate your core distribution and application packages
  • Approval process should have three layers: development, testing and stable, individually for each application targeting a particular distribution version
  • Anybody can upload packages to development status, and then promote them to testing
  • On their way from development to testing packages should pass automated tests
  • Anybody can install and test packages that are in testing, and vote for them
  • Testing guidelines should be clear and easily available to anybody interested in testing
  • Quarantine period for applications being tested (ten days in case of Maemo)
  • When quarantine has passed and application has enough positive votes, developer can promote the package to stable

Hopefully these ideas will prove helpful for other distributions like MeeGo, Ubuntu or Debian. See also my slides from an earlier talk on the same subject.

Testing votes for a package

Unitasking and the desktop

Posted on 2010-11-01 16:54:01 UTC in 60° 0.000 N 24° 0.000 E 28km S of Lojo, FI to . 2 comments.

Last spring I wrote about the improvements in focus you get from single-tasking mobile and tablet environments where everything practically runs as full-screen. I quoted Om Malik:

In many ways, the iPad's lack of multitasking ability makes it worthy of focusing on just the task at hand. In my brief usage of the device at the time of its unveiling, I felt a near-complete interaction with an email or a document or a web page. That was near nirvana when it came to consumption of content.

And indeed, I've found this mode of interaction to be great when I'm focusing on reading or writing something. But how about real work? Let me quote again:

"I think PCs are going to be like trucks," [Steve] Jobs said at D8, the All Things Digital tech show. "Less people will need them. And this is going to make some people uneasy."

On my desktop (13,3" MacBook Air running Ubuntu Maverick), this is certainly true. I use my Maemo phone or a tablet for most of reading and fun stuff, leaving the computer mainly for development and other project work. In such work you often need multiple windows open, and often jump from one task to another. How to maintain focus?

For me, the best solution was to use a tiling window manager. With a tiling window manager you get rid of overlapping windows, and the system instead fits everything you have running to a single screen. Here's how my hacking environment looks like:

xmonad-midgardmvc-small.png

In this situation I've split my working environment to multiple per-context workspaces. One includes browser and email. Another has instant messaging. And the third is the actual work, running a browser for testing stuff, a PHP AppServer console, and another console for actual code editing. On top of all this I have the GNOME panel, and the whole setup is managed using the excellent xmonad tiling window manager.

Some desktop environments, like the MeeGo netbook are built right from the beginning with such focus-improving ideas in mind, but I felt that a "real desktop environment" with tiling might fit my needs better.

Me on MeeGo

Posted on 2010-11-08 11:07:51 UTC in 57° 0.000 N 11° 0.000 E 56km SE of Frederikshavn, DK to . 0 comments.

This is me normally:

bergie_haydarpasa2_100x100.png

This is me on MeeGo:

bergie_meego_100x100.png

Thanks, Texrat!

Help testing the OpenPSA business suite

Posted on 2010-11-08 14:56:57 UTC in 57° 0.000 N 11° 0.000 E 56km SE of Frederikshavn, DK to . 0 comments.

OpenPSA is an web-based management suite for consulting companies. The GPLd suite includes functionalities like calendaring and contact management, product configurations, sales processes, project management and invoicing. The application was originally developed by Nemein but since 2008 has seen excellent maintenance work by the Content Control team.

openpsa-screenshots.png

As a result of last weekend's Midgard developer meeting in FSCONS, the OpenPSA suite has now been packaged for Debian and Ubuntu. Ubuntu users can easily test the package with:

$ sudo apt-add-repository ppa:midgard/ratatoskr
$ sudo apt-get update
$ sudo apt-get install openpsa2

After this, the OpenPSA suite should be running on your machine in http://localhost/openpsa2. Default user account is admin / password.

You can also check out the project on GitHub. Please add your issues and ideas there!

Midgard2 Content Repository library is now in Debian

Posted on 2010-11-11 14:43:33 UTC in 60° 0.000 N 24° 0.000 E 28km S of Lojo, FI to . 0 comments.

debian.pngThis should be great news for developers who want to work with a content repository: Midgard2 just landed to Debian unstable. Note that it is not the classic Midgard CMS what we're talking about here, but instead the content repository / ORM library that the CMS is built on.

Midgard2 is a content repository library written on top of the GNOME stack: we use D-Bus for signaling, libgda for connecting to different databases, and GObject Introspection for providing APIs to multiple programming languages. This means the same content repository, and the same data is accessible from languages like C, C#, Python, Vala and Javascript.

When you use a content repository you can work with objects and methods instead of tables and queries. Midgard2 also provides replication services for keeping your data in sync across different machines.

In addition to Debian, the Midgard2 library has been available for a while from Maemo 5 Downloads, managing content in the mobile phones of tens of thousands of users.

Thanks to Timo and Piotras for making this happen!

Initial look at MeeGo Netbook, a minimalistic computer interface

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

This week in MeeGo Conference all attendees received Lenovo S10-3t IdeaPad convertible netbook/tablet computers from Intel and Nokia. For many of us this was the first time we're actually using MeeGo on a device, and so I thought to post some notes on how it feels.

ideapad-meego-conference.png

IdeaPad hardware

The IdeaPad looks and feels like a typical netbook: cheap plastic construction, big protruding battery, small trackpad and screen. However, it suddenly becomes quite interesting when you swivel the screen around, making it a tablet computer with a nicely sized touchscreen.

The whole package is quite much heavier than my current MacBook Air, but that is a price you pay for almost eight hour battery life. I wish a PC manufacturer started making as clean hardware as Apple does. A Nokia Booklet with MeeGo would come close.

All the normal stuff like WiFi (mine had Atheros), display-out and touchscreen work. For some reason trackpad buttons don't, and there is a mystery SIM card slot under the battery that needs a bit more investigation. Integrated 3G would be sweet!

MeeGo Netbook

When we got the netbooks in the conference there were two options for the install: fully free software, or one with proprietary WiFi drivers. Both images were development snapshots of MeeGo Netbook 1.1, a descendant of Intel's Moblin desktop. The system boots very quickly, and generally feels very responsive, though at times the bundled Chromium browser can make the whole system slow.

Getting the netbook set up was reasonably straightforward. Different areas of the MeeGo toolbar had integrated functionality for various services, with setup wizards for connecting to your accounts on them. In minutes I had my work calendar on the system, was connected to the IM networks I use, and had tweets appearing on the "MyZone" desktop.

Having all this cloud integration in place means the IdeaPad can quite easily serve in its intended "conference laptop" purpose - I don't need to do anything special to copy my data to the device, just connect it to various services.

IdeaPad as a tablet

Out of the box MeeGo Netbook doesn't deal with the tablet mode of the IdeaPad too well. Touchscreen works but generally applications are clumsy to use with it, and there is no on-screen keyboard. This can be fixed by installing a Chrome kinetic scrolling extension and grabbing the on-screen keyboard from the MeeGo Handheld repositories.

I've also heard reports that the IdeaPad would be able to run the full Handheld UX. But probably it is better to wait and see what kind of touch elements appear once the hackers who got their netbooks in the conference have time to play with them more. The MeeGo Forum has a thread discussing IdeaPad improvements.

Just how MeeGo is this?

The Netbook user interface comes from the Moblin project, and so builds on top of the GNOME stack, and ships mostly with applications coming from that desktop, even though MeeGo's official architecture designates Qt as the toolkit to use. It may be that at some point the Netbook user interface will get rewritten, but the more important thing to developers is that apart from default applications the MeeGo Netbook appears to be a pure MeeGo system: it uses MeeGo repositories, and all the services like Telepathy, GeoClue and Tracker are there.

This means that you can easily start developing and experimenting with MeeGo application development on this machine. The Community Applications system, including PPAs on the community OBS are being set up to help this, and there was some discussion on how to run Qt Creator on it. For now Git, Gedit and Python are enough for me.

Computer minimalism

I've written earlier about unitasking and the importance of having a computer environment that helps maintaining focus and getting things done. In this particular branch of computer minimalism the idea is that generally you should be doing just one thing at a time, with minimal distraction.

The MeeGo Zones paradigm does this reasonably well. In a normal usage situation there is nothing else on the screen than the application you're working on. The applications themselves can be organized between multiple zones, so you can cluster things based on working context.

MeeGo's toolbar autohides to the top and can be invoked by either moving the mouse there, or by pressing the Windows key. There you can quickly access areas of current information, like calendar events, TODOs, instant messages and tweets. When you've done handling those just let the toolbar slide away and you're back in your application. Information access, with minimal hassle.

Wrapping up

This initial look at MeeGo makes me a bit torn. On the other hand, I love the minimalistic interface paradigm, and the UI feels fast and smooth, but also lots of necessary software is missing and many parts feel unpolished. But still this isn't bad for a new OS that has been around for only about eight months. The hardware itself isn't too great, but probably the best current option for a cheap tablet/netbook convertible.

For now I plan to keep MeeGo Netbook on the machine. It won't be my work computer, but instead a travel and conference machine for quick hacking and browsing while on the road. I'll keep monitoring the relevant conversations to see how things improve, and will also try to write some improvements myself. The first step, though, is to report the bunch of bugs we've found so far.

PHP: Finally getting an ecosystem?

Posted on 2010-11-23 17:55:18 UTC in 60° 0.000 N 24° 0.000 E 28km S of Lojo, FI to . 0 comments.

PHPOne of my main concerns with PHP has been the lack of ecosystem. Almost all libraries and tools are written with a specific framework in mind, creating separate ecosystems around Drupal, Zend Framework, Midgard and others instead of an ecosystem benefiting all users of the language.

There have been efforts at this, like PEAR before, but they have mostly stagnated. This is why I was really happy to see a post today on Planet PHP about the former eZ Components library entering Apache incubation as Zeta Components. While components in the Midgard terminology mean full applications that can be plugged into your website (like modules in other ecosystems like Drupal), in case of Zeta Components the term means general purpose libraries:

Apache Zeta Components are a high quality, general purpose library of loosly coupled components for development of applications based on PHP 5. Beside typical modules for web application development, like a Template engine, Database tools and an MVC component, Apache Zeta Components contain command line tools, a chart rendering library, a WebDAV server, a universal document conversion component and many more tools to ease developers live.

This should be great news to anybody working with PHP. The current list of Zeta Components appears to provide a quite comprehensive list of useful libraries, through Apache the licensing is very permissive, and as I've written before, Apache has a great set of guidelines its projects must follow.

Zeta Components is certainly a project that I will be watching. And hopefully it can be a place where we can start contributing some of the generic PHP libraries and tools from the Midgard project. A first target that comes to mind is the generic geolocation library that we have.

COSS and MeeGo meet in Helsinki on Dec 1st

Posted on 2010-11-25 17:22:37 UTC in 60° 0.000 N 24° 0.000 E 28km S of Lojo, FI to . 0 comments.

Next Wednesday will have the annual Finnish Centre for Open Source Solutions member meeting and the Helsinki MeeGo Network meetup held together in Hotel Scandic Continental. The COSS meeting starts at 4pm, continuing with the MeeGo meetup at 6pm.

The event will be keynoted by Nokia's MeeGo Developer Advocate Ronan Mac Laverty. Register now!

meego-helsinki.png

Finland's brand strategy builds on the ideas of free software

Posted on 2010-11-25 17:51:29 UTC in 60° 0.000 N 24° 0.000 E 28km S of Lojo, FI to . 0 comments.

mission-for-finland.pngFinland's national brand strategy project released their report today on the Tehtävä Suomelle website. The basic idea is to promote the Finnish capability for getting things done, and the communal approach to problem solving.

I found the beginning of the Finland - It Works document particularly interesting:

"Just a hobby, won’t be big and professional" 25 Aug 91 20:57:08 Newsgroups: comp.os.minix

This statement sparked a revolution. The amateur computer programmer Linus Torvalds had come up with a way of enabling an unlimited number of people to work on the development of the same program source code. This was to prove to be a highly successful approach. Linux, which since then has evolved into a huge success, is one of the most significant open-source operating systems. The Internet would not be possible without a service infrastructure, which is currently largely based on Linux and open source.

Torvalds understood that a complex system, such as a global network, can only function if there are a large number of motivated individuals contributing to its development. This is expressed in another famous statement made by Torvalds: "Given enough eyeballs, any bugs are shallow". In other words, the difficulty of problems depends on the number of people involved in finding a solution.

Linux, which was created by Torvalds, and other open source systems combine the foremost virtues of Finnish functionality: nurturing the commons in a successful way, and the shrewd use of human resources. Thus it is probably no coincidence that the main impetus for open source came from Finland, from a country where functionality is the highest praise for almost anything.

I would imagine this is the first time a country uses FOSS philosophy as one of the building blocks for a national strategy.

If you have the time, go to the project website and read the materials. They seem to have some interesting suggestions on how to move Finland's public image forward.

Why make your projects properly open? Sustainability

Posted on 2010-12-09 18:29:37 UTC in 52° 0.000 N 4° 0.000 E 16km NW of Brielle, NL to . 0 comments.

Snapshot from Bertrand's presentation in the Amsterdam IKS workshop: what does being an Apache project bring to the table?

asf_stanbol_sustainability.jpg

The answer is sustainability. IKS is an EU-funded project which will eventually end. Proper project governance handled together with the Apache Software Foundation can help the software to survive and thrive for long after that.

Sustainability is something that is critical for all libraries and infrastructure software. If you want adoption, you need to ensure potential users and developers that the software will continue to be around. The way to accomplish that is to have a clear, open governance model. It is time to stop throwing code over the wall.

Using RDFa to make a web page editable

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

As part of the IKS project we're working on semantic web editing. One area there is using RDFa to actually make pages editable. RDFa is a way to embed semantic information to regular HTML pages, and is already supported by some search engines, making this also a way of doing SEO.

But in addition to telling search engines what the content on our pages means, we can also use it to communicate between templates and the content management UI. In this example I'm using jQuery, Aloha Editor and a Midgard saving plugin for Aloha to manage content.

What works:

  • Explaining the content shown on a web page via RDFa and making it Aloha-editable
  • Storing edited content back to the CMS
  • Adding new items to containers (for example, adding a new article to a news listing)

The RDFa used is actually pretty simple. Here is how an article looks like:

<article xmlns:sioc="http://rdfs.org/sioc/ns#" 
         xmlns:dcterms="http://purl.org/dc/terms/" 
         typeof="http://rdfs.org/sioc/ns#Post" 
         about="urn:uuid:d1eeb24ae38c11df92307f77dcafaed7aed7"> 
    <h1 property="dcterms:title">
        Application Quality Assurance in Linux distributions
    </h1> 
    <div property="sioc:content">
        <p>We had a session about application QA in last weekend's 
        <a href="http://gsoc-wiki.osuosl.org/index.php/2010">GSoC Mentor Summit</a>. 
        I explained how the <a href="http://maemo.org/downloads/Maemo5/">Maemo Downloads</a> 
        approval process works in a 
        <a href="http://wiki.maemo.org/Extras-testing#How_it_works_in_practice">completely open, crowdsourced way</a>.
        This differs from many distributions where approval of new packages involves obscure decisions 
        and secret handshakes.</p>
        ...
    </div> 
</article>

What is shown above is an article represented using the Semantically-Interlinked Online Communities specification. The article is identified by a UUID (in this case, a Midgard GUID), and has title and a content properties. When the CMS javascripts load, Aloha will be enabled for both properties, making them editable:

aloha-in-rdfa-small.png

When user wants to save things, there is a Save button provided in the toolbar. Saving reads the contents of modified Aloha instances, and sends them together with RDF type and identifier information back to the server:

aloha-in-rdfa-save.png

When receiving the POST Midgard runs a controller that maps the provided RDF information to a object in the content repository, validates the content and saves. The RDF mappings in a Midgard2 MgdSchema look like the following:

<Schema xmlns="http://www.midgard-project.org/repligard/1.4">
    <type name="org_midgardproject_news_article" table="org_midgardproject_news_article">
        <user_values>
            <typeof>http://rdfs.org/sioc/ns#Post</typeof>
            <namespaces>sioc:http://rdfs.org/sioc/ns#,dcterms:http://purl.org/dc/terms/</namespaces>
        </user_values>
        <property name="title" type="string">
            <description>Title of the article</description>
            <required>true</required>
            <property>dcterms:title</property>
        </property>
        ...
    </type>
</Schema>

Stop using SQL, then

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

From yesterday's PHP Advent article:

PHP has been around nearly as long as there has been a Web to develop for, but it evolves constantly and is a modern programming language by almost any definition. Sure, it might not suit hipsters who only enjoy bands when they can say “you probably have not heard of them; they only formed tomorrow,” but it is not your granddad’s programming language.

Sadly, web development often also involves SQL, and that is your granddad’s programming language. SQL, and the stored procedure languages you are most likely to encounter, have deliberately not evolved much since the 70s and 80s. When your programming ancestors were hunting saber-toothed tigers and scratching proposed SQL syntax onto cave walls, they had some fundamentally different ideas to those behind scripting languages.

Yet another reason to stop interfacing directly with a storage back-end and use a content repository.

Get a preview of the next Midgard content repository

Posted on 2010-12-20 21:01:13 UTC in 60° 0.000 N 24° 0.000 E 28km S of Lojo, FI to . 0 comments.

MidgardCRMidgard 10.12 was released last week as a developer preview of what is coming in the world of content repositories:

MidgardCR 10.12 "Hrungnir" is a technology preview of the third generation of the Midgard Content Repository. It is released to allow developers to gain familiarity with the upcoming Midgard storage APIs and RDF storage.

MidgardCR is available as a GObject-oriented C library with language bindings for multiple languages including Python, JavaScript, Scheme and Java through GObject Introspection.

Content managed in MidgardCR can be stored to multiple relational databases supported by the GNOME Database Abstraction Library. Databases tested with MidgardCR include SQLite, MySQL and Postgres.

While this might not be something for production use, especially on the web as the GObject Introspection bindings for PHP5 aren't done yet, it ought anyway to be interesting to developers. Suddenly you have a full content repository that can not only store regular content, but also RDF triples. And this with pretty much any programming language you would like to use.

The new MidgardCR is also interesting in the sense that it has been written in Vala instead of straight C, making it more accessible for potential contributors. Grab the project from GitHub or install to your favorite distribution. And stay tuned for more Midgard announcements later this winter.

Thanks to Andreas Nilsson for the MidgardCR logo.

Back