Open Data License/What is clean?

From OpenStreetMap Wiki
Jump to navigation Jump to search

In order to remap before the final changeover date, it is important to understand what objects can be considered clean and which ones must be remapped. Up until now, only a small number of criteria have been considered (the "safe" approach):

The Safe Approach

  • An object is dirty if any mapper in its history is anonymous
  • An object is dirty if any mapper in its history has explicitly declined the licence change
  • An object is dirty if any mapper in its history has neither accepted nor declined the licence change
  • An object is clean if all mappers in its history have either accepted the licence change or joined the project after acceptance was required at signup

For the purpose of this document, let us define a non-agreeing mapper as the umbrella term for: anonymous, declining or non-responding mappers.

But many objects, despite having a non-agreeing mapper in the history, no longer contain any elements derived from the work of that mapper, to the extent that they need no longer be considered derived works. It is the intention of this page to identify the edge cases under which an object may be capable of being considered ODbL-clean. Please use this page as follows:

Do: Add your own examples of edge cases for discussion - whether you do or don't agree that they represent cases where the object can be deemed clean.

Do: Discuss (on the Discussion Page) the rights and wrongs of considering such objects clean.

Don't: comment inline in the page

Don't: Remove items just because you disapprove of the opinions of others

Edge Cases

Situation Applies to Why it could leave the object ODbL clean
Non-agreeing mapper added a tag, subsequent mapper removed it all None of the work done by the non-agreeing mapper lives on, nor did it influence the current version
Non-agreeing mapper added a tag, subsequent mapper changed it all None of the work done by the non-agreeing mapper lives on, if it can be seen not to influence the current version
Non-agreeing mapper added a node, subsequent mapper removed the node way None of the geometry from the non-agreeing mapper lives on, way tags were always clean.
Non-agreeing mapper touched a geometry-only node (no significant tags), a later agreeing mapper changed its position node None of the facts provided by the non-agreeing mapper live on, we invest our usual trust in the remapper to cleanly derive his facts from other sources.
Non-agreeing mapper moved a POI node (no changes to tags), a later agreeing mapper moved it to somewhere else node None of the facts provided by the non-agreeing mapper live on, we invest our usual trust in the remapper to cleanly derive his facts from other sources.
Non-agreeing mapper adds or changes a "non-significant" tag (created_by, source, etc.) all This category of tags is about explaining edits, does not feed into the actual map. At worst, reverting or deleting the tag should remove any tainting.
Non-agreeing mapper removes a tag all Can you copyright the state of something not being there?
Non-agreeing mapper fixes a tagging typo or transforms from one tagging norm to another all Rule-based edit that any mapper could reasonably apply to the previous, clean data

A Pragmatic Approach

Removing tainted data is the goal. This is not the same as undoing everything ever done by a non-agreeing mapper.

Deletions are not tainted

If a non-agreeing mapper deletes an object from the OSM data base, that object is not tainted. That deletion is clean by definition. No action is required to further clean the results of that edit.

The Deletion Paradox

If we were trying to undo everything done by a non-agreeing mapper, un-deleting an object might seem reasonable, but it is not. That deletion does not leave an identifiable object in the OSM database.

If a deletion were an act earning protection based on ownership, then the Deletion Paradox would prevent cleaning the OSM data base. Watch this.

User A creates a node.
User B deletes that node.
Both user A and user B are non-agreeing.  
To clean the node created by User A the node must be deleted.
To clean the deletion of the node by User B the node must be un-deleted.
Thus the data base can never be clean.  

That is irrational. Deletions are not tainted.

What taints data?

A node created by non-agreeing mapper is tainted.

Clean that node by removing it. Map again from good source(s).

A node moved by a non-agreeing mapper is tainted.

Clean that node by moving it.

A node deleted by a non-agreeing mapper is not tainted.

No action required.

A tag added by a non-agreeing mapper is tainted.

Clean that tag by removing the tag and value. Save this clean intermediate version to the data base. Then remap from good source(s) and include tag and value if supported by good source(s).

A tag modified by a non-agreeing mapper is tainted.

Clean that tag by removing the tag and value. Save this clean intermediate version to the to data base. Then remap from good source(s) and include tag and value if supported by good source(s).

A tag deleted by a non-agreeing mapper is not tainted.

No action required.

A way created by a non-agreeing mapper is tainted.

Clean that way by removing it. Map again from good source(s).

A way modified by a non-agreeing mapper is possibly tainted.

Nodes added or moved are tainted.
Nodes deleted are not tainted.
Tags added or modified are tainted.
Tags deleted are not tainted.
See nodes and tags above for further evaluation and for cleaning instructions of individual nodes and tags within the way.

A way deleted by a non-agreeing mapper is not tainted.

No action required.

A relation created by a non-agreeing mapper is tainted.

Clean that relation by removing it. Map again from good source(s) if warranted.

A relation modified by a non-agreeing mapper is possibly tainted.

Tags added or modified are tainted.
Tags deleted are not tainted.
See tags above for cleaning instructions.
Members added to a relation by a non-agreeing mapper are tainted.
Members deleted from a relation by a non-agreeing mapper are not tainted.
Roles added by a non-agreeing mapper are tainted. Clean as with tags above.
Roles modified by a non-agreeing mapper are possibly tainted. Clean as with tags above.
Roles deleted by a non-agreeing mapper are not-tainted
Object Edit[1] Tainted? Cleaning
Node Created Yes Delete node. Remap from good source(s).
Moved Yes Move node. Remap from good source(s).
Deleted No Already clean.
Tag Created Yes Delete tag. Remap from good source(s).[2]
Modified Yes Delete tag. Remap from good source(s).[3]
Deleted No Already clean.
Way Created Yes Delete way. Remap from good source(s).
Modified Yes See modified nodes and tags above. Apply cleaning for nodes and tags.
Deleted No Already clean.
Relation Created Yes Delete relation. Remap from good source(s).
Tag Created Yes Delete tag. Remap from good source(s).[4]
Tag Modified Yes Delete tag. Remap from good source(s).[5]
Tag Deleted No Already clean.
Add member Yes Remove member. Remap from good source(s).[6]
Remove member No Already clean.
Add role Yes Remove role. Remap from good source(s).[7]
Modify role Yes Remove role. Remap from good source(s).[8]
Remove role Yes Already clean.
Deleted No Already clean.

Intermediate versions

Saving an intermediate version is a bit of a hack. It saves to the database, a version of the data without the tainted aspects left by a non-agreeing mapper. Then data can be added from good sources. Once cleaned, then modified only by a accepting mappers, the object stays clean.

References

  1. by non-agreeing mapper
  2. Save intermediate version without tainted tag to clean if replacing same value from good source(s).
  3. Save intermediate version without tainted tag to clean if replacing same value from good source(s).
  4. Save intermediate version without tainted tag to clean if replacing same value from good source(s).
  5. Save intermediate version without tainted tag to clean if replacing same value from good source(s).
  6. Save intermediate version without tainted member to clean if replacing same member from good source(s).
  7. Save intermediate version without tainted role to clean if replacing same role from good source(s).
  8. Save intermediate version without tainted role to clean if replacing same role from good source(s).