API stability? whazzat?
November 10, 2007
I haven’t posted in a while, so some news first: I’ve joined the OpenedHand crew. So far it’s been great: interesting projects, smart people and a really nice and telework-approving atmosphere (I had some doubts about working several thousand kilometers and two timezones away from the office, but it’s been very smooth so far).
For the past few days Iain Holmes and I have been reviewing the geoclue API (for those of you just tuning in: Geoclue is a geoinformation framework/library that’ll make your apps location-aware, whether on desktop, laptop or Internet Tablet). Iain posted our proposal to the mailing list yesterday. Comments on the API changes are very welcome, especially from application developers interested in using Geoclue.
I feel like I should explain why we want to change pretty much the whole API — I know it might look like NIH syndrome if you just take a quick look… So here goes:
- First, we’re still unreleased*: if we want to change something, now is the time.
- The way functionality was divided among interfaces did not make sense to us: One data provider may provide position, but not address info; another may provide both. It makes sense that the first one implements Position-interface and the second one implements both Position and Address. These changes will make it easier to write a master-server that could actually select different data sources based on their availability and accuracy
- A few methods and signals had details that really needed to be changed: CivicLocation did not have timestamp on it. Position didn’t have real validity flags so it was hard to tell if a result was valid coordinate or not.
- At this point the milk had been spilled already. The API had to break in a major way anyway, so there’s little harm in fixing the small annoyances too: CamelCasing interface, method and signal names; changing method names to more meaningful ones (like CivicLocation -> Address).
*) I do have geoclue packages available for maemo, but they’re not widely used yet, as far as I can tell. I promise to help if someone’s done a lot of work based on current API.