Moblin 2.0 beta is out! This is very exciting for us: letting everyone see our hands work after having worked in private for six months… Now, I’m obviously biased, but personally I think it’s turning into a really awesome operating system / user experience — it’s not finished yet, but the awesomeness is there. See the video for some highlights.

I’ve been mostly working on synchronization myself: a daunting task that surely would have ended in pain if Patrick Ohly (SyncEvolution author) hadn’t joined our team. After Patrick came on board we quickly came up with a plan:

  • Concentrate on netbook<->server sync for Calendar events, Tasks and Contacts
  • Port SyncEvolution to use the just open sourced Synthesis SyncML engine
  • Add a D-Bus api to SyncEvolution in addition to command line access
  • Write a GTK+ application (in unmistakable Moblin style, thanks to Nick and other talented designers I have the pleasure to work with) that uses the D-Bus API

I’m happy to announce that the above is implemented in Moblin 2.0 beta:

Current Sync user interface

Current Sync user interface

m_zone shows events and tasks on the left pane

m_zone shows events and tasks on the left pane

We still have lots of things on the TODO list (more compatibility testing with servers, several missing UI features, automatic syncing, better integration with the rest of the Moblin stack to name a few), but the current features are now usable: I keep my own PIM data synchronized between my Nokia N85, a laptop with Debian unstable and a Moblin 2 netbook using scheduleworld.com as the server.

So, if youre trying out the Moblin 2.0 beta, please try Sync as well. Contributions are warmly welcome at the project site. By the way: Although we’ve heavily concentrated on the netbook use case, everything should work outside of Moblin as well.

The Lesser General Public License is only a half-hearted Open Source Software license. We believe it encourages vendors to take from the community without giving anything back […]

This assessment was QT Software’s opinion until Jan 14th. Current answer to QT FAQ #159 is worded with less conviction.

Apparently blogging about new features is now a requirement when committing to GUPnP repository! I should really start reading the small print before signing…

So, I improved gupnp-binding-tool a bit. For those who didn’t guess from the name, it is a GUPnP binding generator, a bit like dbus-binding-tool. It lets you, the UPnP application developer, deal with an API specific to your UPnP service (or control point) and hides most of the uglyness that naturally follows from GUPnPService and GUPnPServiceProxy being very generic.

Here are the main new features:

  • server (device) side bindings in addition to control point bindings: “–mode server”
  • state variable notifications support
  • “–prefix” option

You can take a look at the updated server tutorial , but what it really boils down to is in this example. First, implementation of the SetTarget action handler without wrappers:

static gboolean status;

void
set_target_cb (GUPnPService *service,
               GUPnPServiceAction *action,
               gpointer user_data)
{
  /* get new value */
  gupnp_service_action_get
      (action,
       "NewTargetValue", G_TYPE_BOOLEAN, &status,
       NULL);
  /* change notification */
  gupnp_service_notify
      (service,
       "Status", G_TYPE_BOOLEAN, status,
       NULL);

  gupnp_service_action_return (action);
}

...

/* connect handler */
g_signal_connect (service,
                  "action-invoked::SetTarget",
                  G_CALLBACK (set_target_cb),
                  NULL);

Notice the magic strings defining method and variable names and the type definitions that can’t be checked at compile-time? Getting those wrong will mean a run-time error in the best case, and they definitely won’t be available in your editors auto-completion.

Now take a look at the same handler using bindings generated with “–mode server –prefix switch” from the SwitchPower service definition (see gupnp/examples/SwitchPower1.xml):

static gboolean status;

static void
set_target_cb (GUPnPService *service,
               GUPnPServiceAction *action,
               gpointer user_data)
{
  /* get new value  */
  switch_set_target_action_get (action, &status);

  /* change notification */
  switch_status_variable_notify (service, status);

  gupnp_service_action_return (action);
}

...

/* connect handler*/
switch_set_target_action_connect (service,
                                  G_CALLBACK(set_target_cb),
                                  NULL);

Better, eh?

PS: The standard device/service definitions are available at http://upnp.org/standardizeddcps/default.asp.

Welcome to the future

June 23, 2008

Few things are cooler than being able to work on interesting new stuff. Other people immediately building wild things on top of that work, however, is even cooler.

So, I worked briefly in the GUPnP project, making bindings for Vala. Before I managed to blog about it (hey, midsummer and all…) Zeeshan had ported gupnp-media-server to Vala and Jorn Baayen had built gupnp-media-renderer!

so… what does that mean for people who do not speak UPnP fluently? It means that I just used my N810 Mediastreamer to select the song Måndagsbarn by Veronica Maggio (a flac file on my laptop) for playing on my living room stereo set. Pretty cool, eh?

Now guess how many configuration steps were needed for all three devices to work together?  None, it just worked. Very cool.

Maybe it’s not comparable to the rocket backpack we’re all waiting for and maybe I’m just easy to impress, but I still found Ross‘ response to all this very appropriate: “Welcome to the future!”

PS: Did I mention it also works for video and images? Well, it does!

PS2: Some of the stuff mentioned here has not been released yet and may still change (at least gupnp-media-renderer is in svn only). The GUPnP framework on the other hand is ready and stable: See the documentation for API reference and tutorials.

In other news, Tampere is a host city candidate for GUADEC+Akademy 2009. Go Tampere!

(old) news

May 8, 2008

Forgotten this blogging thing altogether… well, here goes:

Geoclue 0.11

Geoclue 0.11 was released. I’m fairly satisfied with it and would love
comments from application developers. Some highlights:

  • Refined API. Easier to use and includes some nice additions like async-method calls (no more freezing UIs).
  • Usable Master provider:
    Geoclue Master provides Address and Position data using the best available geoclue provider. Master may not be industrial quality yet, but it is IMO usable (testing is more than welcome).
    See documentation for usage examples.
  • A couple of new providers:
    Gsmloc — uses a cell phone, libgammu and http://gsmloc.org to get a position. No signals though.
    Localnet — uses router MAC address and a local file to get an address. Excellent for often visited places.

Get Geoclue as a tar-ball or via git:

git clone git://anongit.freedesktop.org/git/geoclue

OpenedHand is hiring

Several open positions: We’re looking for people with kernel, OpenEmbedded, GTK+, Clutter, UI design and graphic design skills (not necessarily all in the same person). Take a look.

Guadec 2008

Looks like I will be in Guadec talking about Geoclue! This will be joint operation with Iain and Bergie, and we’ll cover Geoclue, Gypsy and location-aware applications in general. I’m really looking forward to the whole event: I’ve wanted to go for a couple of years, but never really had the chance.

Yahoo has some kind of web based location sharing system called Fire Eagle. Could be interesting, but it’s currently “invitation-only”, in the best  web 2.0 spirit. This includes users and developers. So far, I understand the point, but the specs and API definitions are not publicly available either! Even the information that Fire Eagle is invitation-only is restricted: I had to get a throwaway Yahoo-login to find that out.

Dear Yahoo!, I don’t like jumping through hoops. Please call me when your specs are available: +358-400-609787 (I don’t have an answering service but I promise I’ll answer you some day, just keep trying).

Kesäkoodi is a “Google Summer of Code”-like program for Finnish students (university and univ. of applied science).  Bergie just reminded me that the project plan deadline is Feb 20th — that’s next week.

The project areas are not defined beforehand, but some “areas of special interest” are mentioned:

  1. social media
  2. location and context sensitivity
  3. mobile apps
  4. system management
  5. operating systems

About #2 and #3: I’ve got the feeling this summer would be a good time to work on Geoclue. We’ll have the new API finished Real Soon Now™  (promise), and there should be lots more developer interest when we reach summer.

If you’re studying in Finland, have some coding skills and are interested in a location-related programming project, stop by #geoclue irc channel (on irc.gimp.org) or ping me on jabber. Do stop by even if you don’t have a specific idea — maybe we can figure something out…

Follow

Get every new post delivered to your Inbox.