What’s this GeoNode thing?

by Sebastian Benthall

I’m going to start blogging here about the GeoNode.

If there is anything I’ve learned at The Open Planning Project and OpenGeo, it’s that it is critical for the success of open source projects that they be “truly open”–not just with an open source license “slapped on,” but with a transparency built into its development and management process.

So I am chagrined that the GeoNode, the project I’m currently most involved with, has been developed in relative obscurity. At OpenGeo, we’ve been treating it like an internal project, and though its task tracker is open, documentation is sparse.

The reason for this is simple: we have been too busy building it to properly groom it. But hopefully that will change soon.

So what is the GeoNode? Here’s the backstory, as articulated by Eddie Pickle:

The GeoNode project is an open source initiative backed by the World Bank, OpenGeo, and others with pilot programs in El Salvador and Guatemala. It aims to give a modern spin to the idea of the spatial data infrastructure with an eye to the use and reuse of data, encouraging collaboration, and promoting open data exchange as a default. Initially, the development of the GeoNode has focused on serving and visualizing the data created by the Central America Probabilistic Risk Assessment (CAPRA) to assess and mitigate the risk due to adverse Natural Disasters.

At its core, the GeoNode is based on open source components GeoServer, GeoNetwork, Django, and GeoExt that provide a platform for sophisticated web browser spatial visualization and analysis. Atop this stack, the project has built a map composer and viewer, tools for analysis, and reporting tools. The GeoNode also supports facilities for styling data as well as collaborative features like ratings, comments, and tagging for data, maps, and styles. The GeoNode is built on four key tenets: Collaboration, Distribution, Cartography and Data collection.

This is the GeoNode vision–a vision which is current under (rapid!) development. But at the time of this writing, the use of the present tense in the paragraphs above is sometimes ambitious. You can check out the demo that we update weekly from GeoNode trunk here.

In its current state, it requires some explanation. What you’re seeing is a Django site that is configured to work against a GeoServer instance that contains the spatial data hosted by the GeoNode. The map on the front page is a GeoExt map embedded as a widget. This Map-As-Embeddable-Widget is a feature of the GeoNode’s Map Composer, which is closely related to GeoExplorer, OpenGeo’s main GeoExt-based web GIS client.

The site’s theming is, as requested by our partner and client, made to look like the World Bank’s CAPRA website. Rolando Penate has been working ideas for generic GeoNode themes that we hope to implement soon. His design wireframes show off some of the potential of these themes as well as the features that we are scheduled to implement in the coming year: user registration, commenting and rating, a groups.

The purpose of all these “Web 2.0” features (cringe!) is to provide a layer of social metadata over the geospatial data and ISO metadata that we will be supporting with an integrated GeoNetwork instance. If the internet has proved anything, it’s that the best catalogs are those created dynamically from real usage. So our plan is to integrate cutting-edge web GIS tools with the social features of the site so that as users participate in the GeoNode environment, we collect data about their activity and use it to refine search results. We joke about whether the GeoNode aims to be the MediaWiki/Twitter of maps, or the Facebook/YouTube of maps, or the Yelp/Wordpress of maps…but really these features are all so commonplace on the web now that it’s not a matter of imitating the market leaders. It’s a matter of taking solid modern principles of data management and bringing them intelligently to the Spatial Data Infrastructure domain.

We are several months away from these features, however. For now we are focusing on building a solid backbone of tools that will make the GeoNode attractive to users.

If you’ve been following GeoExt development lately, you may have noticed Andreas Hocevar’s contributions of JavaScript client code that works against the Mapfish Printing module. That’s all been core development work funded by our GeoNode partnership.

Another neat budding project worth noting is gsconfig.py, developed primarily by David Winslow. It’s a Python library for interacting with GeoServer’s catalog via its REST API. We are going to be using it to provide through-the-web data upload and metadata management through a Django-powered user interface.

These two open source contributions highlight what’s for me one of the coolest parts of our GeoNode development: that we are dedicated to bringing as much as possible of the work for the GeoNode back into widely recognized open source geospatial projects or splitting parts out into general purpose libraries. This is possible because of the NGO and government community partnership around the GeoNode that is being spearheaded by Stu Gill, of World Bank CAPRA. Stu is a visionary who sees very clearly the decisive role openness will play in the future of SDI, GIS, etc. And he understands that openness will play an important role all the way down to the open source core, and has been reaching out to like minds.

OpenGeo’s GeoNode team has been hard at work on the prototype GeoNode software and the open source software improvements that it depends on, but in the coming months we hope to shift our priorities more towards documentation and community. We’ll be announcing those advances through GeoNode.org, the official site of the GeoNode project. But we’ve unintentionally left the lid on this for too long. In the short term, I’ll be blogging informally about GeoNode progress week-by-week here, because it’s high time we got the GeoNode into the open.