With people more and more complaining that Google Maps gets it wrong, I often reply that the complainers have a look at OpenStreetMap instead. But there are a few misunderstandings on what OpenStreetMap actually is.
OpenStreetMap has its main site at http://openstreetmap.org. This shows a rendering of the map that we like to call a "slippy map". This is an online map, that can interactively be zoomed and paned. The slippy map on the site is nothing more than a display of map tiles, static images rendered from OpenStreetMap data as an example of what you can do with it. The real power of OpenStreetMap is not this default rendering, but the possibility to actually access the data behind this map rendering. And this is where it differs from Google maps, Bing Maps and Yahoo! Maps and various others. OpenStreetMap is the only mapping service that allows you to do something more than just look at pretty map tiles. OpenStreetMap is a database project, with as its main purpose to have an exhaustive database of every street, city, road, building etc on the planet, and not a map display project.
Now what does that actually mean? For one thing, it means that the sample map tiles (that are displayed in the slippy map) are not meant to be used heavily from applications. It's all right to show a map tile of your neighbourhood on your web site, but it's not okay to write a mobile application that allows you to scrape map tiles of large areas. Have a look at the general tile usage policy for some background. The only reason why there is a sample rendering is to aid mappers with improving the data that is the core of OpenStreetMap.
Obviously, the OpenStreetMap project wants its data to be used. But if you're not allowed to use the map tiles en-masse, then how can you use the data?
First of all, you can query the OpenStreetMap database in various ways. In most cases, you're going to get an XML file with descriptions of nodes (points of interest, facilities such as toilets, benches, addresses), ways (roads, water ways, transport routes) and areas (buildings, lakes). There is some more info on the (very simple schema) here. This data you can parse and import (as I've shown in a previous article) and do all kinds of cool tricks with, such as finding out the closest pub. This functionality is not available on the main OpenStreetMap site, because "OpenStreetMap does not aim to create and host every webservice possible, but to provide the data so that others can" make awesome map-related applications.
Secondly there is a growing number of web sites that uses the OpenStreetMap data to render specialized maps. There is OpenCycleMap that renders information related to using your bicycle and Öpvnkarte for public transport. There is even a tool that uses the postcode data in OpenStreetMap. It's quite possible to render your own maps as well, but that I will get back to in a later article.
MapQuest is a good example of a company that uses OpenStreetMap data. They have made their own rendering with its own styles for a visually different map. Their site implements searching for pubs/bars and restaurants for example and MapQuest are also happy with you using their map tiles for your applications. Recently, they have also announced a simple API to generate a static map based on OpenStreetMap with their rendering style.
The map above is generated by just requesting http://open.mapquestapi.com/staticmap/v3/getmap?size=320,260&zoom=12¢er=51.51,-0.15
Another major difference with established mapping providers is the ability to edit the map yourself. You can add your own business, houses, addresses, postcodes, your favourite restaurants with either on-line or off-line editors. My list of recent edits is here.
There is also a whole plethora of special renderings of the map data to assist with debugging issues with the map. There is the "no name" rendering which shows roads without name, ITO World's osm analysis that shows deviations of road names from another source in the UK, keepright and OSM Inspector that have some automated checks and a tool to overlay postcodes for checking.
Obviously, there are a few things missing that would make OpenStreetMap an even better resource for mapping related applications and web-applications. Feel free to suggest things that you find missing or lacking in the comments of this article. I'd be happy to hear why you would think that OpenStreetMap is not a good fit for your applications and usage.