Proposal:Code Scanning

From OpenStreetMap Wiki
Jump to navigation Jump to search
Code Scanning
Proposal status: Draft (under way)
Proposed by: Paguro01
Tagging: *:code_scan:*=*
Applies to: node, way, area, relation
Definition: Defines if and what kinds of codes to scan to get information on a subject or complete a task.
Statistics:

Rendered as: hidden
Draft started: 2024-11-19

Proposal

Abstract

As the evolution of technology continues, more and more features in our world are crossing the barrier between physical and digital. It is now expected (if not required) in many places and occasions to be able to take out your phone and scan a code to get access to a service or to know more about a topic. It has become very convenient over time for businesses and administrations all around the world to link real-time or interactive media to a physical feature with the use of codes.

On the other hand, this is excluding more and more people from essential services and further restricting access to knowledge, especially in lower-income regions and for the elderly/disabled.

The goal of this proposal is to bridge the gap between the information and its physical representation in code form, for those who can't, don't know or don't want to scan the code provided by the feature.

To achieve this goal, the proposal introduces a *:code_scan:*=* tagging scheme tailored to code scanning for physical-to-digital information access and service consumption.

The proposed tags can be expanded in the future to cover more kinds of codes as technology evolves, and can be applied to an indefinite amount of existing tags to further detail feature accessibility in the OSM database.These tags can be added to nodes, ways, relations and areas, as suitable for the kind of tag being expanded on and occasion.

This scheme is not intended for:

  • Shows or performances whose acts include codes that the audience can scan, like drone swarms aligning to form QR codes in the sky;
  • Codes found on goods or services that are not linked to a physical feature, like supermarket goods or mobile carrier top-up cards;
  • Tickets to venues, concerts, exhibitions, movies, and boarding passes if the codes on them are only meant to be scanned by the staff;
  • ALPRs (license plate readers) on highways;
  • Codes that are nothing more than a form of art and/or don't contain any information by design (not meant to be scanned or malformed on purpose);
  • Indoor beacons
  • Codes on business cards, souvenirs;
  • Codes on shipping containers.

Rationale

OSM Editor apps may provide mappers with a button to open a code scanning app, with which they can capture the code in an instant. The photo of the code as well as the parsed data are used to auto-fill the most technical tags from the proposed scheme onto the active OSM feature.

This simplifies the tagging process for popular codes like QR by an order of magnitude and leverages the living standards and software library ecosystems, requiring little to no knowledge of how the code is made, its structure or how it works from the mapper's perspective.

Proposal:QR code

Proposal:Information=qr code

https://taginfo.openstreetmap.org/search?q=qr_code#keys

Tagging

The tags are defined as follows. All tags apply to all kinds of OSM database elements: nodes, ways, areas and relations, as fit for the case at hand.

Tag Requires Replaces Description Values
*:code_scan=* -- -- Further describes any tag whose purpose on the feature can be (further) explored with the scan of a code

The tagged feature can be (further) explored via this code

*:code_scan:condition=* *:code_scan=* -- The code is only applicable when the requirements are met Conditional restrictions
*:code_scan:mandatory=* -- -- Scanning the code is mandatory to access the information or service.

In particular, scanning the code is the only way for any user to get the desired information or access the service. We define any user as (in order of evaluation, short-circuiting at the first applicable case):

*:code_scan:mandatory:condition=* *:code_scan=* *:code_scan:mandatory=* Same as *:code_scan:mandatory=* but is only applicable when the requirements are met

In this case we define any user as any entity affected by the coniditional restriction.

Conditional restrictions
*:code_scan:purpose=* *:code_scan=* -- The intended purpose of this code.

If set to *:code_scan:purpose=information, please consider adding *:code_scan:information=* too. If set to *:code_scan:purpose=service, please consider adding *:code_scan:service=* too.

If set to *:code_scan:purpose=advertising, please consider adding *:code_scan:to=* too.

*:code_scan:media=* *:code_scan=* -- The media this code is available on (printed on a surface, displayed on a screen...)

If the code exists on more than one media at the same time, one should at least tag the easiest code to access/scan.

*:code_scan:format=* *:code_scan=* -- This defines the format of the code (e.g. QR, Aztec, EAN, ...).

More values will be documented as technology evolves.

*:code_scan:with=* *:code_scan=* -- The equipment the user must use to scan the code.

When more than one value for this tag applies, use the broadest in scope (for example, prefer 'camera' to 'app' if the code can be read with any camera app in addition to the dedicated app).

*:code_scan:content=* *:code_scan=* -- The content of the code, in text. This is the value that camera apps display in a confirmation prompt before opening the code, for example.

Only use this tag when the value of the code is guaranteed to be the same for a reasonable period of time (refer to Wiki guidelines on tagging temporary features)

Any non-empty text.

If binary, please encode using Base64.

*:code_scan:to=* *:code_scan=* -- The resource this code points to when scanned.

If the 'website' value is used, please consider adding *:code_scan:content=* with the URL.

If the code doesn't point to a resource but the content of the code is the resource, omit this tag.

*:code_scan:information=* *:code_scan=* -- The information this information gives access to when scanned. This also applies to smaller pieces of information within a bigger scope (a board, for example). It's not required that all of the information be gated behind this code for this tag to be applicable.

Examples include QR codes on timetable boards for public transport in the countryside, company websites, in-depth explanations of topics covered on a board.

*:code_scan:service=* *:code_scan=* -- The service this code gives access to when scanned. This also applies to single steps in the regular use of a service: it's not required that the entirety of the service be gated behind this code for this tag to be applicable, although it is more and more common (unfortunately).

This tag is relevant as long as the act of scanning this code is part of the regular, intended use of this service, like paying for purchases, boarding a vehicle, completing authentication or unlocking something.

Examples

Photo Context Minimum tagging

(baseline)

Complete tagging

(in addition to Minimum tagging)

2022-06-18 qr-code.png
Scanning this code links you to a tourist resource on historypoints.org:

https://historypoints.org/index.php?page=pilots-cottages-trwyn-du

For this example we will assume the codes to be standalone, therefore they will be tagged as code_scan:*=* instead of *:code_scan:*=*

For the board:

tourism=information

information=board

board_type=history

then the code:

code_scan=yes

code_scan:mandatory=yes (the URL is not printed on the board)

code_scan:purpose=information (this is purely informational)code_scan:media=sign (the code is found on a sign)

code_scan:format=qr (these are QR codes)code_scan:with=camera (any camera app will do)

code_scan:content=https://historypoints.org/index.php?page=pilots-cottages-trwyn-ducode_scan:to=website (the code links to a website, see previous tag)

code_scan:information=history (the resource explains the history of the place)

Ribeirao-grande-map.jpg
Scanning this code provides a geo: URI with your current location, for use in map apps.

This kind of URI is usually scanned with the map app itself rather than the generic camera app.

For the sign:

tourism=information

information=map

then the code:

map:code_scan=yes

map:code_scan:mandatory=no (implicit)

map:code_scan:purpose=guidance (the QR helps you find your location)map:code_scan:media=print (the code is printed on fabric)

map:code_scan:format=qr (this is a QR code)map:code_scan:with=app (any map app will do, but the regular camera app won't)

map:code_scan:content=geo:-24.09498,-48.36436?z=19 (exactly as encoded)code_scan:information=map (scanning this code will show you the surrounding area on your device)

https://live.staticflickr.com/6013/5946931324_dc992dee7c.jpg

This code lets you play the audioguide track for the exhibit you're facing.

The code only works with the museum's app.

For the board:

tourism=information

information=board

board_type=art

then the code:

code_scan=yes

code_scan:mandatory=no (implicit - you can tap the phone on the NFC tag instead)

code_scan:purpose=service (the code starts the audioguide)code_scan:media=sign (the code is found on a metal plate)

code_scan:format=data_matrix (this is a Data Matrix code, not a QR!)code_scan:with=app (need the museum's app!)

code_scan:content=041mamac.servehttp.com/GFITag/manager.do?id=26

code_scan:to=app (takes you to the app)

code_scan:service=audioguide

Rendering

Any User Agents could display the codes in a Graphical User Interface using the information from the tags (code format and content).

It is also possible to replace/complement the codes with buttons that perform specific actions on press. For example, the code from example no. 1 could become a "History (external website)" button that opens "https://historypoints.org/..." on press.

In no occasion should codes be rendered on the map in any way (be it icons, nodes or renderings), as it would make no sense to the end-user, clutter the view and foster vandalism.

Features/Pages affected

Key:passenger information display

Key:departures board

Key:information

External discussions

Comments

Please comment on the discussion page.