I will explain a little bit of how OpenStreetMap is built.
I write this so that others also (hopefully) can find this.
When looking at the map at the first page (which is rendered by a program such as Mapnik or Osmarenderer) the map is served in a form as tiles.
At the most out-zoomed level one tile covers the whole earth. The (standard) Mapnik layers zoom-levels goes from 0 to 18, at each zoom-level a tile is divided in four to the next level.
The tiles are frequently updated, I do not know exactly how the server does determine when to update a tile, but I do know that if a tile that you see is older than 7 days; it is sent to a renderque regardless if it has been updated or not.
The map projection is the Mercator projection, which have many fine properties - especially for navigation. And a few downsides as all map projections have, due to the simple fact that the earth is round and not flat. Mercator is by the way also used by Google, Yahoo, NASA and many others.
The data behind the tiles (from which they are rendered) are based on polygons, lines and points (from now on referred to as “elements”). Each element can have several tags assigned to them, tags consists of key and value pairs. Any key and value pair is valid, but obviously the renderer programs can’t know how to handle any possible tag. Many common tags are not rendered by default, but they are there, invisible tough. Some of the tags are not even intended to be rendered at all, like the note or fixme tags which is intended as notes to other mappers.
Oh, I almost forgot relations (but are to lazy to rewrite the last paragraph)!
Relations is a way to relate or bind together several elements (they do not need to be spatially adjacent), typical relations are multipolygons (polygons with holes in them, as defined by another polygon inside it, that belongs to the same relation) and routes. Routes can include as an example bus stops at the side of the way, this data could be used for a trip planning application ( go to north at freeway, take bus 809 to hometown center, walk south to… ). As all the data is considered free for any use as long as OpenStreetMap and its contributors (as group) is given credit, anyone can cook up the most amazing applications based on this dataset!
So where does all this data come from?
Well, there is many data sources. Bulk imports have been made from TIGER (USA) and AND (Netherlands), but I think that I can safely assume that most data comes from the thousands of contributors. Over the past day 1843 contributors have provided data (more stats) to the OpenStreetMap database.
The contributors (or mappers as I prefer to call them) can get data from several sources, like GPS traces, Aerial imaginary and local knowledge. They then convert this to the OpenStreetMap format using a program like JOSM, Potlatch or Merkaartor. Potlatch is the easiest to use of them, but on the other end lack several advanced features. My personal preference is still Potlatch, due to its ease of use. I also prefer to map elements with exactly the same tags, because the I can draw the element and press the R-key and have the tags repeated. Thus I can come up in a really high speed which is fun.
Hope this answers your question, and help you (and others) to understand roughly how OSM works.
I does also strongly recommend you to install FireBug or use the Google Chrome inspector (They are very similar tools, and they can tell much of how a webpage is built ).
For the second question, I don’t know. I take a bet on that there already exists free software for exactly that purpose.
Frank M. E.