Progress on Geo June

At the outset of Geo June, I was hopeful that we could be providing more regular updates on what's going on, but with so much happening I knew we weren't going to be able to keep up with blog posts! Here's a recap of what we've been up to so far this month:

We had a great time at DrupalCamp Wisconsin!

Big thanks to the organizers of this camp, which was well-organized and well attended. It drew many Drupalers throughout the Midwest, so it was also great to hang out with people from Palantir, CTC, and even Karen Stevenson.

Naturally, we talked Geo and Geocode. CTC also had a session covering Location and GMAP, so if you like mapping and Drupal, this would have been the place to be! The good news is, if you missed this gathering, you can catch the sessions online.

The IRC Channel is increasingly Lively

We've been meeting up daily from 10:00AM - 11:00AM US Central time, and of course, people drop in throughout the day. We've been talking techy stuff like writing the modules themselves, but we've also been offering support and guidance to new users. For me, the most fun is talking about what people are doing - or what they want to do - with the current and future GIS tools in Drupal.

If you're a seasoned IRC pro, you can hop on and join us in the #drupal-geo channel on irc.freenode.net. If you need information on getting started with IRC, you can find it here and here - or you can just hop on from the Geo June site.

Speaking of the Geo June site...

Initially built out as a landing page and a place to feature our sponsors, it has begun to morph into a central stomping ground for "all things GIS in Drupal." It's got module descriptions, feeds from general GIS and Drupal resources, API documention for participating modules, and place for demos and docs.

We're sensitive about creating disparate resources, so we'll be trying to feed Drupal-specific documentation back into more appropriate venues. Meanwhile, the Geo June site will live on as an aggregaton point for demos, feeds, and conceptual GIS+Drupal information. We'll decide later whether to rename the domain after June has come and gone (a mystery shopper already nabbed drupalgeo.org while we were at DrupalCamp!)

The site is a work-in-progress, but the barriers for creating content are low, so please feel free to jump in and start adding demos, modules, or other information. If you've got other ideas, track us down in IRC and we'd love to talk about bringing them to life.

Documentation and Use Cases

In addition to the beginnings of the Geo docs, there's a new flood of info on the Geo Use Case Wiki on groups.drupal.org. That's seriously cool and the easiest thing for anyone to get involved with. It also helps developers more than you know: When you're trying to build something as general and flexible as the Geo modules, it really helps to mentally flip through different scenarios to see if the architecture is sound.

We've already looked and several and thought, "oh, we could totally build that in Drupal!" For example, the Geo Blog Demo that Jer whipped up for DrupalCamp WI covers a lot of what the FixMyStreet idea calls for.

If you've got an idea and want some help getting it off the ground, now is a great time to get help from folks participating in Geo June. We're motivated to see this work spring into life.

And of Course, There's Some Coding Too

The whole point of Geo June is to make a release-quality version of the Geo and Geocode modules, so that other fantastic and sexy modules such as Openlayers and GMAP + Geo can depend upon a stable footing for their input and presentation layers.

These modules have been functional since last Fall, and polished off in time for our DrupalCON DC presentation. There's a relatively small number of bugs to squash before release, but I wanted to spend some time thinking through some larger issues so that the work is sustainable in the long run.

The first part of my month has been focused on "interoperability" issues, which means creating two bridges:

  1. A bridge between a users' expectations of what geography means to her and how it's stored. This means translating concepts like "address", "country", "across the lake", or even "you are here" into meaningful raw data like points, lines, and polygons.
  2. A bridge between this data and modules that can process and output it as maps, feeds, or other meaningful presentation and visualization formats.

In both cases, I believe that Geo should play a part by speaking some "common language" that's recognized by other modules. However, I don't think that a dependence on Geo should be a requirement to store and interpret information. I'll explain more of this later, but here's a hint: "hook", and here's another one: "standards."

I've been thinking about this a lot over the past 10 days (OK, more like the past 3 years). But I've also been checking in code. If you've read this far, you're still interested, and my CVS logs aren't juicy enough, here's a quick breakdown:

  • Distance calculations, using both native functionality (PostGIS) or some pre-baked calculations (MySQL). These are available via Views.
  • A more flexible way to define "two-faced" FAPI elements that present one thing to users (say, a textarea), and present another thing to Geo or Views (say, an array containing a lat/lon point)
  • A more flexible way for CCK field formatters to suggest what format they're expecting. This lets you build a field formatter that can work with Geo's Fields, but doesn't necessarily require Geo.
  • Also, Karen helped me uncover a "secret hack" that will allow Geo to exposed its storage to the Schema API. While imperfect, it means a lot less code, and a lot more flexibility and performance.

So, What's Next?

We're going to keep having those daily IRC meetups, which will only get better if you're there :). We're also pushing ahead with our proposed and in-progress work on our modules, and we'll keep you updated (as much as we can) along the way.

Advantage Labs is committed to a 1.0 release of Geo this month and are allocating as much time as we can to the cause. But we're not one of those firms with a great big R&D budget, so the difference between making Geo "minimally functional" and making it "super awesome!" is based financial contributions, small or large, from "viewers like you". Or, more directly, from those of you who expect you can profit from our work in the short- or long-term.

Increasingly though, we need more time and help from participants of any skill level. No matter how stable Geo is, nobody will use it if they don't understand what it does. You can help out by:

  • Trying things out and then asking questions publicly. Go ahead and post an issue if something is confusing or not straightfoward. This will help us understand where people are falling down, and any answers we provide will help the next user.
  • Post tips and howto's on your own site (great google-juice, and we'll aggregate it if you tell us about it)
  • Post demos and examples on http://geojune.org/demo
  • Help out with documentation on http://geojune.org/documentation

We're thrilled with the progress and participation thus far, and can't wait to see how the next 20 days pan out.