A humanitarian organisation contributes data to OSM in crisis regions, building maps to, among other things, improve disaster response. Apart from standard OSM mapping, they also collect specific data that is not suitable for publiciation for privacy reasons.
A major aim of this project was to enable standard OSM mapping while in saving privacy-relevant data to a separate data base in parallel; this required changes to the JOSM editor, as well as the creation of a suitable storage backend.
Specifically, this project was about the mapping of buildings, where the buildings were to be added directly to OpenStreetMap, but additional information that touched the privacy of the occupants was stored separately.
We solved the problem with a custom plugin for the JOSM editor. After loading data from JOSM, the list of object IDs is transmitted to the separate server, and additional data is received from there.
JOSM is then used normally; the user won't even notice that data comes from two different sources. On save, data is again split in two channels, and some data goes to the private repository while other data goes to OSM proper.
The plugin is written in Java and hooks into JOSM's upload and download methods. It is Open Source and available (as "Separate Data Store") from the standard JOSM repository.
The backend for the separate data store is written in Ruby on Rails. It has an XML REST interface and offers that standard CRUD operations for extra attributes.
There's also a JOSM-independent web editor that allows editing the special tags contained in the backend. After selecting an area on the map, building data is downloaded from OSM, and individual buildings can be selected to view and edit the extra tags stored for that object.