2 October 2009

New beginnings

About a month ago, I left Collabora in order to bring new, different challenges in my life.  Today, I am announcing publicly that I have founded Novopia Solutions, a new player in free software.  Novopia’s long term goal will be to bring free and open source solutions to market that have yet to be penetrated by free software solutions.

While this is a field where there are plenty of FOSS solutions, the primary focus in the upcoming weeks will be on improving the geolocation solutions in GNOME.  Commercial support for libchamplain is of course on the list.

More to be announced later. :)

14 September 2009

libchamplain hits 0.4

About a month after its 1 year birthday, libchamplain hit the 0.4 mark – the first stable release of this new version.  It’s a Clutter based ClutterActor and Gtk+ widget to display street maps, cycle maps or other maps.  It comes with eye candy.

Special thanks to all contributors to this release (in chronological order of first contribution):
Pierre-Luc Beaudoin, Jonathon Jongsma, Lorenzo Masini, Packz Enoch, Thomas Van Machelen, Anders M-Pedersen, Stephane Delcroix, Denk Padje, Mike Sheldon, Emmanuel Rodriguez, Emmanuele Bassi, Lionel Dricot, Simon Wenner, Kritarth Upadhyay, Debarshi Ray, Paulo Cabido, Sjoerd Simons, Victor Godoy Poluceno, Javier Jardón, Patryk Zawadzki, Sebastian Reichel, Tim Horton, Frederic Peters, Cosimo Cecchi, Vincent Untz, Felix Riemann


Libchamplain in action in Eye of Gnome,
displaying a picture of Lübeck, Germany.

New in this release (since 0.2.10)

  • Support for custom map sources: embedding apps can define their own map sources and provide tiles for libchamplain to display.  This includes a way to list available map sources.
  • Zoom on double click is now configurable.
  • View keeps centred when you resized the view.
  • A way to convert screen coordinates to map coordinates: lets you interact with the map and its markers.
  • Cache tiles: downloaded tiles are cached.  The cache is intelligently validated against the server every 7 days for now.
  • Revamped marker API: Default markers now have a nicer look with rounded corners, nicer colors and a shadow.  The API allows easy image and label markers to be created.
  • Limit visible zoom levels: you can now limit what the user can view.
  • Feedback during loading: ChamplainView will emit a state change when loading resources from network providing better feedback possibilities to the user.
  • Line and polygon drawing API: You can now easily draw lines and polygon over the map.  This is useful for indicating routes or highlighting areas.
  • User Agent: libchamplain now identifies itself in HTTP requests
  • Marker selection support: libchamplain provides a helpful API when you want to let user select a bunch of markers (or only one).  This API has been designed with Gtk+’s selection API in mind.
  • Ported to Clutter 1.0: libchamplain now depends and use Clutter 1.0.  It allowed us to add the very nice in and out for markers.
  • Bindings: the API is now bindable.  Only the Python bindings works for now but that’s not because the Perl binder didn’t try hard to get some too, try having a baby close to a release! :)   C# bindings and C++ have been worked on but didn’t make it on time for the release.
  • Many bug fixes.

Plans for the future

Now that 0.4 is behind us, we already have a huge list of nice to have in 0.6 (due in same time as Gnome 2.30 or Gnome 3.0):

  • Smooth zooming and animation;
  • Rotation of the map;
  • Display cached tiles while downloading new ones;
  • Add a clustering layer: a layer where markers very close on a map will be merged into one marker;
  • An MVC API for layers: use ClutterModel and support GtkTreeModel as sources of Marker data;
  • Limit the visible area on the map;
  • Have the map wrap horizontally;
  • Have a nice dragging mode for markers;
  • Add a map scale;
  • Provide better accessibility;
  • Better cache policies;
  • Better animations;

And most importantly: local rendering of maps. This project is well on its way with the recent conclusion of the Google Summer of Code 2009.  Simon Wenner, which you probably read the progress on planet.gnome.org, did a marvellous job on this.  His work should be included in the first development release of libchamplain 0.5.

9 August 2009

Creating a detailed map with Walking Papers

One of the things I learned about at SOTM, is the existence of walking-papers.org. This tool renewed my interest of mapping around my house in order to create an higher quality map. During SOTM, we were often presented with examples where OpenStreetMap was more accurate and more detailed than commercially available data. I think I just contributed to that!

First of all, what is Walking papers. It’s a simple web site where you can print a map of an area. You go walk around and note the missing information. When you come back, you scan the page and upload it back. From Walking papers you can edit the map using your scanned page as the background to the online Potlatch editor.

Since I am not a big fan of Potlatch (and that I gave away my scanner, not having used it for years), I used the paper as a reminder of what’s on the land when editing with Josm.

Before SOTM, I never though about the high value of extra data (other than ways). Now I highly value all the small details, such as mail boxes, restaurants and addresses. The last one is pretty boring to do by the way. It requires a lot of note taking and a lot of nodes to create and edit. But addressing will be the ultimate step to make precise routing possible with OpenStreetMap data.

So here is what I did (with a friend for Saint-Laurent and Prince-Arthur streets) over the week-end. This represents about 4 hour person walking on site and 4 hour person putting all the data back in the computer. I included a screenshot of Google Map’s Tele Atlas data just as an example to show how far they are from having complete data.

Note: The before screenshot dates after the first pass on Prince-Arthur.  I didn’t do the streets north of Prince-Arthur street yet, that’s why OpenStreetMap is missing a park. I’ll add it when I see it with my eyes (we should never copy from other map sources).

I am really happy with how the Square Saint-Louis renders.  Unfortunately, the square’s page is only available in French on Wikipedia.  The square is bordered with Victorian style houses from the 1880s.  The square itself dates from the same years and has never lost its charm.  In its first years, it was where the upper French Canadian class settled.  Avenue Laval is bordered by georgious victorian houses.  I hope I could buy one some day, those houses are just very nice and we should protect them.

3 August 2009

libchamplain 0.3.6 released, now using Clutter 1.0

libchamplain’s development was not blocked by the never ending delays in Clutter 1.0′s release. But we were waiting for 1.0 with eager.  And now the results are in.  Clutter 1.0 introduces many changes that simplified libchamplain’s code and solved some of our long standing issues at the same time.

Taking opportunity of the new introduced animations in Clutter, I added new marker animations in libchamplain:

If you are viewing through a planet, or a non HTML5 capable browser, here’s the file.

Since porting to Clutter 1.0 was the only condition set by the Gnome release team for libchamplain’s inclusion in Gnome 2.28, we can consider it a done deal!

See the complete announcement.

In other news, libchamplain 0.3.5 was also released last Saturday. It is the last release to use Clutter 0.8, but it also has very good Perl and Python bindings. Since Clutter 1.0′s bindings are not ready yet, libchamplain 0.3.5 is the last release to have bindings until Clutter gets some!

12 July 2009

Attending the State of the Map 2009

I am in beautiful Amsterdam since Thursday attending the State of the Map 2009.

It is a nice conference, but having attended only free software conferences so far I was up for some cultural shocks.  First of all, everyone here has an iPhone, a Mac and a twitter account.  I signed up for one to be able to catch up with the virtual side of the conf.

There are a lot of very short nice talks about what people are doing with the data or how they contributing data. So far, the most interesting one has been how JumpStart paid people to go to Palestine and the Gaza stripe to map the place as no maps were available. This is an exciting idea where they sent people on site to hire mappers and make this data available. They did encounter problems but the result is great! (and is in the process of being imported into OpenStreetMap).

I’ve been lucky to be able to fit a last minute lightning talk about libchamplain.  I think libchamplain will bring knowledge about OpenStreetMap to the GNOME desktop users and could be benefictal to the first, while we get nice maps for the latter.   As for technology, libchamplain seemed to be on par featurewize with commercial solutions presented here.  Let’s hope its usage picks up (already 5 applications and counting!)

15 June 2009

Geolocation in Empathy: now real

Last January, I announced Geolocation in Empathy.  All pending branches have now been merged and released in Empathy 2.27.3.

It took quite a lot of time to finalize it because we were quite busy and quite frankly while this is sexy, it isn’t a very important feature in Empathy :-) .  In the following screenshots, you’ll discover that things have changed a lot since the original announcement.

First of all, the markers now include more information about the contact.  This uses the new markers in libchamplain.  It works nice for now (as I only have 3 or 4 contacts publishing their location), we’ll see with usage if the markers are just too big.

The map is now interactive: right clicking on a contact will bring up the same context menu you get on the contact list.

The Preferences UI was reworked to be simpler.  The previous UI left space for an hypothetical Manual address mode which was dropped.  The rationale is that Empathy shouldn’t have to care about addresses.  If you want to change the address, change it in Geoclue.

This is new since January: the tool tip now include your contact’s geolocation information.  This is the only part of all the geolocation changes that are present even if you don’t build with Geoclue or libchamplain.  It was impossible to display a map there as ClutterGtk doesn’t seem to like such windows hehe. We already know it is partly ugly and contains duplicate information :-) It will be improved before final release.

Finally, the contact information dialog now displays a map and the detailed information about the contact’s location.

Don’t miss the FAQ that I populated with questions I was often asked during development.  Report bugs on the Geolocation component of Empathy (you can also see that we have work left to do).

I am not the only one who worked on this exiting feature, here are the details:

  • Alban Crequy worked on the XMPP support and reviews;
  • Dafydd Harries did the early work on the XMPP support;
  • Guillaume Desmottes wrote the XMPP PEP code (the same used for OLPC) and reviewed the code;
  • Pierre-Luc Beaudoin did the UIs, the libchamplain and geoclue integration and pursued the XMPP support;
  • Xavier Claessens reviewed many times.

I can’t wait to see more people using this and show up on my map!

4 May 2009

libchamplain 0.3 released!

I am proud to announce the release of libchamplain 0.3, the first development release toward 0.4.  libchamplain is a map widget.  It is the work of many months (as far as November) and many contributors since FOSDEM.  Here is a short list of what you get:

  • Support for proxies
  • Support for custom map sources
  • A way to list the available map sources
  • Support for 2 new built-in map sources: Cycle Map and Osmarender
  • A bunch of new function to allow more control on the UI
  • A nicer, more flexible Marker API
  • Nicer default markers: they are now grey, have rounded corners and cast a shadow!
  • Notification when the view is loading content and when it’s done
  • Support for locking down available zoom levels
  • A more intelligent cache that can be purged
  • Bindings (in the works): Perl, Python, C# and C++

Of course being a development release, the API isn’t entirely stable yet.  For instance, the code surrounding the ChamplainMapSourceDesc introduced this weekend is subject to be reviewed in the next weeks.

Yet, this release is a big step forward introducing a lot of the desired features while leaving some for an upcoming release (such as the ability to draw lines on the map).

You can grab the tarball or clone the source code.  You can read the NEWS or read about the API.

On a side note, libchamplain as been officially proposed as an external dependency for GNOME 2.28.

26 April 2009

Writing a nice API: comments needed

In the race to the 0.3 development release, we are reviewing the API to see it is nice to use, bindable and most of all intuitive to g* coders.  But sometimes, it is hard to find out how to do it well: comments on this particular issue would be appreciated.

ChamplainView is the map view that displays the map.  It needs a ChamplainMapSource from which it gets the map.  There are specialised objects that inherit from ChamplainMapSource such as ChamplainNetworkMapSource and the upcoming ChamplainLocalMapSource (or what ever it will be named by the end of the SoC).

champlainNetworkMapSource* champlain_network_map_source_new_full (const gchar *name,
    const gchar *license,
    const gchar *license_uri,
    guint min_zoom,
    guint map_zoom,
    guint tile_size,
    ChamplainMapProjection projection,
    const gchar *uri_format);

As you don’t want to fill all this information each time you create a new map source, libchamplain currently provides helper constructions:

ChamplainMapSource * champlain_map_source_new_osm_mapnik (void);
ChamplainMapSource * champlain_map_source_new_osm_cyclemap (void);
ChamplainMapSource * champlain_map_source_new_osm_osmarender (void);
ChamplainMapSource * champlain_map_source_new_oam (void);
ChamplainMapSource * champlain_map_source_new_mff_relief (void);

We think it could be interesting to replace these by a Factory to which you pass an enum value to get the constructed ChamplainMapSource.  You would probably be able to add your own map source constructor (as you can implement your own map sources).  You would probably be able to get the list of available map source too.

The question is: is this overkill? the best way to do it? is there something similar in glib or gtk to get inspired from? We base most of the API decisions by looking at other Gtk+ widgets, but this particular object seems to be a different case.

We are asking for your ideas.

20 April 2009

libchamplain has got a SoC project

There will be a Google Summer of Code project for libchamplain – your Clutter based Map Widget for your Clutter or Gtk+ based applications. This project will be realized by Simon Wenner.  He will be working on getting the map rendered locally (using OpenStreetMap xml data) as opposed to downloading the pre-rendered tiles as libchamplain currently does.  At the end of the summer, libchamplain will support both for best flexibility.

This functionality means a lot of possibilities for libchamplain: better accessibility, smaller bandwidth needs, smaller cache footprint, more context data and finally themable maps.  These can be very useful if you are running on different platforms such as Maemo 5 or a desktop: bigger fonts, more contrast, tango colors!

(oh and by the way, this is the new default markers: more on them in a later post)

Unfortunately, another very interestant SoC idea didn’t make it to selected list: a glib based OSM data API.  That would have made it very useful to access the downloaded data.  But hey, that will be for later!  Thanks to all the students that submitted a project idea on libchamplain :-)

22 March 2009

Some libchamplain love

libchamplain is a map widget for your application.

I’ve just tagged some bugs or enhancements with the gnome-love keyword.  If you ever wanted to contribute to libchamplain, I think these bugs should be rather simple to fix/implement.

In other news, I selected a list of bugs and features that needs to be fixed before a 0.4 release is made.   Such a release will happen before Gnome 2.28 as I plan to ask to be an external dependency (as Empathy, Eog-plugin and f-spot will have use for it).  The list of bugs is listed in on the mailling list.

Libchamplain is part of Gnome’s Google Summer of Code.  There are already some libchamplain ideas. These ideas are planned for 0.6 release, but the work need to start this summer! Students: apply!

Yes, you did read f-spot! Anders Mørk-Pedersen started a f-spot plug-in to display the geolocation information of your photos!  It even works with multiple selected photos.  Now the poor Anders is so busy with school that it is stuck in a demo state. Anyone interested to help should ping us about it!  libchamplain in f-spot was made possible by Stephane Delcroix‘s hard work both to libchamplain’s bindings and clutter’s.

Along the python and managed bindings, perl bindings have been announced.  Emmanuel Rodriguez is writing them with support from the perl community. He’s also contributing unit tests in perl.  These have already proven to be quite useful!

Finally, I decided to give it a try and create a website and logo for libchamplain.  I quickly made the site by borrowing Cheese‘s website hehe. The logo represents a jigsaw puzzle piece of a world map as libchamplain is a module to add to existing applications to add maps. I tried to tango-ify it as much my capabilities allow me, if you have a better touch here’s the svg.  Since I have so much use for The Gimp and Inkscape, I donated to the Libre Graphics Meetup!

That was a short résumé of what happened in libchamplain recently, excluding the 53 files changed, 3591 insertions and 1165 deletions.