Just for context, here is the current OSM data model in a nutshell:<p>There are three data types - nodes, ways and relations. All of the three can have any number of "tags" (i.e. a map<string, string>), which define their semantic meaning. For example, a way with `barrier=fence` is a fence. This stuff is documented in the openstreetmap wiki.<p>A node is a point with a longitude and a latitude.<p>A way is a sequence of nodes.<p>A relation is a collections of any number of nodes, ways or other relations. Each member of this collection can be assigned a "role" (string). Again, the semantics of what each role means is documented in the openstreetmap wiki.<p>To modify data, simply new versions of the edited data are uploaded via the API.<p>---<p>The most prominent point that stands out here is that only nodes have actual geometry.<p>This means that...<p>1. to get the geometry of a way (e.g a building, a road, a landuse, ...), data users first need to get the locations of all the nodes the way references. For relations, it is even one more step.<p>2. in order to edit the course of a way, editors actually edit the location of the nodes of which the way consists of, not the way itself. This means (amongst other things) that the VCS history of that way does not contain such changes