Moblin 2.0 beta — now in sync!
May 20, 2009
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

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.
LGPL no longer a half-hearted software license!
January 27, 2009
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.
Generating UPnP Service Bindings
October 20, 2008
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.
Convergence is really nice, in theory
January 11, 2008
I’ve been trying to test the GPS on my newly-arrived N810. So far I have not succeeded in getting a fix from my window. Time-To-First-Fix while walking outside (with very good view of the sky) has been 5-10 minutes.
This is not what I had been hoping for. It seems I’ll still be carrying an external GPS with me, at least sometimes — just like like I have to carry a camera with me if I want to take half decent photos, even though my phone has two cameras in it. Good gadgets seem to be difficult to make. Good convergence gadgets are still, in my opinion, mostly an unproven theory.
Otherwise I’m very satisfied with the device: it feels really solid, and I’m still amazed how they fit the keyboard into a device smaller than the N800.
Not SiRF III?
Anyway, about the GPS: There were rumours around the internet that the chipset is SiRF III, but this does not seem to be the case. Internettablettalk forum member ag2 found this string in /usr/sbin/gpsdriver:
GPS5300GPS5300GPS5300GPS5300GPS5300GPS5300GPS5300GPS5300GPS5300GPS5300GPS5300GP
GPS5300 is a gps-on-a-chip for OMAP based phones from Texas Instruments. From their product brochure (emphasis mine):
The GPS5300 NaviLink 4.0 solution enables a rapid time to first fix (TTFF) from weak satellite signals… .
Questions:
- Can someone confirm the chipset details?
- Assuming we do have a GPS5300 on the tablets, does “rapid” have an alternate meaning in Dallas? Maybe it’s just that everything is bigger there, even time-to-first-fix.
cool geoinfo stuff going on
November 13, 2007
Several interesting news reached my sensory organs today:
Gypsy released
Iain Holmes just released Gypsy, a more elegant GPS daemon for a more civilized time. Full API documentation, a tutorial and even experimental packages are available (shocking, I know).
Gypsy is a good match for mobile devices if you ask me, and to that end I’ve tested it with N800 and a Nokia LD-3W bluetooth GPS — works fine.
Experimental user position support for Pidgin
I haven’t tested this proof-of-concept yet, but it is interesting: Geoposition sharing for pidgin on maemo. Doesn’t use geoclue but doing so might save several hundred lines of code…
Jaiku client released with source code
Henrik Hedberg released Mauku 0.3 (Jaiku client for Maemo) a few days ago. The source code is now available at Garage. Hmm, I smell a small geoclue project here… stay tuned.
SoC musings + seeking employment
August 23, 2007
Summer of Code has now practically ended. I’ll post a more detailed look at my original plans and actual accomplishments soon, for now I’ll just say that I’m fairly happy with the results: some things we’re left undone, but other unplanned features got implemented. What I’m wondering is how the rest of Maemo SoC went — according to Mathieu Blondels last post he’s doing ok (although that was a month ago), but the other two projects seem to have been dropped in the mid-term evaluation.
Smoove “Instant Desktop migration” and the Ruby bindings project have had no activity at all as far as I can tell (there’s some progress on the Ruby front, but it seems unrelated). Now, a sample size of four means that we can’t draw too much conclusions, but a half-way failure rate of 50% still seems high — compare with Gnome’s 2 out of 29 = 7%. What went wrong?
Eminently employable
Conveniently at the same time as SoC ends, I’ve found out that I won’t be getting either of the two jobs I’ve applied for. Naturally the application processes took about nine weeks to finish… So, if you’re looking for a developer or development support person with any/all of these qualities (preferably around Helsinki), let me know:
- Involved with maemo from the beginning, familiar with development on the platform
- Understands open source tools, processes and communities
- Experience in closed and open source development in several languages on multiple platforms
- Lots of knowledge and hands-on expertise in Geographic Information Systems
Full time, part time, freelance — I’m not too picky as long as the job is interesting.
Contact information
LinkedIn profile
Geoclue 0.8 “SoC” released
August 22, 2007
Finally got the release out the door! More information at the home page, and here’s a link to Geoclue status applet install file (for IT OS 2007) for the impatient:
This isn’t the major release (except for me, this being the Summer of Code evaluation release): Geoclue position API is going through some changes at the moment and the next release will probably be a lot more more interesting. Still, feedback from users and developers is very welcome!
I thought some usage advice might be nice too, so here goes: Geoclue tries to abstract the source of the data away and provide just generic location data, but unfortunately that doesn’t always work like magic (not yet at least)… Here are some tips if you’re not seeing anything useful when you select different position providers:
Hostip
- visit Hostip with a browser and click “Make a correction” if your location is not shown or is wrong.
Plazes
- Plazes is the most useful provider for frequently visited places with wifi. See my earlier post on why getting started with it is currently a bit difficult.
GPS
- gps only provides coordinates, which are currently not shown on the status applet. You’ll need to use “geoclue-position-example gpsd” on the command line or try the home applet from the garage download page, if you want to see the output.
- If you do not get any results, make sure you own a bluetooth gps device and that it’s on and paired (using Control Panel –> Bluetooth)
Resource use
I’m always worried about the resource use of things I install on my tablet and I’m pretty sure I’m not the only one, so I guess I should talk about that too:
- geoclue position providers get started only when requested
- currently the providers stay running indefinitely
- CPU use is minimal, I have not observed memory use much yet
Wrapping up
August 12, 2007
I promised some screen shots of plazes-enabled geoclue. Well, this is what I see when I connect to the wireless network of the summer cafe just around the corner here:
When the connection is made, the plazes position provider checks if the plazes.com database knows the location of the MAC address of the router. If plazes.com has a “plaze” with that MAC address, geoclue emits current_position_changed and civic_location_changed D-BUS signals with all the details so all applications interested in location information find out about the change immediately. I think this’ll work very nicely for commonly visited places.
At the moment I’m working on a usable manual position provider, a kind of backup position provider for the inevitable situation when there are no automatic providers available. That wasn’t as simple as I assumed (anything with user interaction is tricky to get right…), but should be done in a day or two. The rest of the week is reserved for wrapping things up before the Summer of Code deadline, August 20th: bug fixing; new releases of geoclue, the statusbar applet and the demo app (finally uploading to the Extras-repository); documentation and uploading everything to code.google.com.
In case anyone’s wondering: I definitely won’t be going away when Summer of Code ends. Geoclue is just getting to the point where it is interesting: It’s already usable and there’s a growing interest from 3rd party developers. I’m now quite familiar with the code base and have several improvement ideas.
Interested in the position API? Take action now!
Speaking of improvement ideas… if you’re interested in the Geoclue positioning API you should take action right now: We are (or mostly Keith Preston is) making some needed changes in the API and now is the time to voice any concerns or wishes — the plan is to freeze the position API after this. Take a look at the current API definition and comment on the mailing list.
Going plazes
August 2, 2007
I’ve been working on a couple of Geoclue features that, when combined, will start making things interesting:
Feature 1: Plazes support
Plazes.com supports querying “plazes” with a MAC address of the router you’re connected to. This means that at home I get this output from a geoclue test program:
jku@loki:~$ geoclue-position-example plazes You are at 60.196908 24.87822 Country: Finland Locality: HELSINKI Postalcode: 00330 Street: Solnantie 24 Text: Jussi's home
Plazes.com-support for Geoclue is actually not totally new — the original python version has existed for some time already. It’s awfully nice though: the location accuracy can be way better than anything ip-based positioning can offer (block-level vs. city-level).
Feature 2: Internet Connectivity Monitoring
All positioning providers that use web services can monitor internet connection events if libconic is available. I have this working with the hostip backend already and it’s quite nice:
- no network latency when an application needs the location information
- enables “new location”-events without polling all the time
So?
If a user goes through the trouble of creating plazes* at most common locations (home, work, regular cafe), geoclue can provide fairly accurate location information and event notifications (“New location: Max’s Cafe”) wherever she goes. This is the point where Geoclue is already useful to application developers…
*) creating a plaze is easy, you can do that at www.plazes.com. Unfortunately adding the MAC address to the plaze is not — at least not on linux. I’m hoping Maemoplazer can do it, but haven’t been able to check: it keeps refusing to start.
I’ll finish these features and package them by next week. will post screen shots then. Questions or comments are welcome: use the geoclue mailing list.
Online Desktop and other things GUADEC
July 19, 2007
GUADEC seems to be very interesting this year from the maemo / Internet Tablet perspective… The Nokia releases (SIP support and a Gecko based browser) were a positive surprise of course but there are also other keynotes that make me wish I could have been there. I recommend reading Planet Gnome this time of year — it’s quite lively during and after Guadec.
One thing that really hit a nerve: Online Desktop is about deep integration between web and the desktop (see also Big Board). I’m not entirely sure I like this progress but I have to agree with Havoc Pennington and Luis Villa: It is the future. Maybe not this implementation, but the idea… It will be very interesting from a mobile device POV — syncing data becomes a lot easier if the data is on the internet to begin with.
Questions to GUADEC attendees:
- I understood there was a GMAE meeting this week. Any news?
- How was the Geoclue workshop?
