When a new version of the Protomaps basemap schema is released, developers should be able to tell from the version increment how much effort it will take them to integrate the new tiles with their map. We use semantic versioning to communicate this.
Semantic versioning (or SemVer) is a formalized way of making promises with an X.Y.Z version indicator.
MAJOR
.MINOR
.PATCH
, example:1.0.0
(default)MAJOR
.MINOR
.PATCH
-POSTFIX
, example:1.0.0-pre1
(optional)
- MAJOR version X for incompatible API changes.
- MINOR version Y when adding functionality in a backwards-compatible manner, and
- PATCH version Z when fixing backwards-compatible bugs
- pre-release version -POSTFIX when releasing developer previews
NOTE: The above applies after software has reached as version 1.0.0
, no promises are made for earlier versions.
- Major version X: high – significant integration challenges, read the changelog closely
- Minor version Y: low – some integration challenges, read the changelog
- Bug fixes Z: none – simply use the new tiles, skim or ignore the changelog
- Pre-release POSTFIX: low to high – some to significant integration challenges, read the changelog
Upon our version 1.0.0
release Protomaps Basemap makes the following promises based on the Tilezen schema:
common
- Theselayer
s,property
s, andkind
s are generally available across all features in a Tilezen response.- Establishes basic selection of features and their arrangement into specific named layers.
- Core properties needed for display and labeling of features:
- Special bits that make vector tile content interoperably Tilezen, including
kind
,kind_detail
,landuse_kind
,kind_tile_rank
,min_zoom
,max_zoom
,is_landuse_aoi
,sort_rank
,boundary
, andmaritime_boundary
. - Fundamental properties like
name
(including localized names),id
, andsource
included on most every feature.
- Special bits that make vector tile content interoperably Tilezen, including
common-optional
- These are meant to be part of a common set, but may not be present because they aren't relevant or because we don't have the data (primarily featureproperty
s, but could also belayer
s).- Used to refine feature selection.
- Lightly transformed interoperable Tilezen properties based on original data values. Examples include:
country_capital
,region_capital
,bicycle_network
,is_bridge
,is_link
,is_tunnel
,is_bicycle_related
,is_bus_route
,walking_network
,area
, left & right names and localizedname:*
values on lines, and left & rightid
values on lines. - Fundamental properties like
ref
,colour
,population
,elevation
,cuisine
,operator
,protect_class
, andsport
.
optional
- These are the properties of a specific, less importantkind
, or generally present acrosskind
s but only in exceptional cases.- Often used to decorate features already selected for display.
- Additional properties like
capacity
andcovered
.
- Remove
common layer
- Change
common layer
name - Remove
common-optional layer
- Change
common-optional layer
name - Remove
common
feature property completely from all zooms - Change
common
feature property name - Remove
common-optional
feature property at zoom 14 or more - Change
common-optional
feature property name - Remove
optional
feature property at zoom 14 or more - Change
kind
value name - Remove
kind
value completely from all zooms - Move
kind
from one layer to another - Additional simplification across
kind
values in zooms 14, 15, or 16 (or max zoom) by removingcommon
,common-optional
, and/oroptional
properties by merging or other method - Simplification within
kind
values at zooms 16 (or max zoom) by removingcommon
,common-optional
, andoptional
properties by merging or other method - Change of <= -3 (earlier) to default
min_zoom
ormax_zoom
values to determine whenkind
is included - Change of >= +2 (later) to default
min_zoom
ormax_zoom
values to determine whenkind
is included - Change of version of a positioned glyph font for an already included script
- Add
common
layer - Add
common-optional
layer - Add
common
feature property - Add
common-optional
feature property - Add
optional
feature property - Add new
kind
value - Additional simplification across
kind
values at zooms 13 or less by removingcommon
,common-optional
, andoptional
properties by merging or other method - Additional simplification within
kind
values at zooms 13, 14, or 15 by removingcommon
,common-optional
, andoptional
properties by merging or other method - Reassign 50% or more of existing
kind
value into a newkind
value, when kind has 10,000 or more features - Change of <= -2 (earlier) to
min_zoom
ormax_zoom
values to determine whenkind
is included - Change of >= +1 (later) to default
min_zoom
ormax_zoom
values to determine whenkind
is included - Change the maximum Tilezen zoom (currently zoom 16).
- Add new positioned glyph font script
- Add
optional
layer - Change
optional
layer name - Remove
optional
layer - Additional simplification within
kind
values at zooms 12 or less by removingcommon
,common-optional
, andoptional
properties by merging or other method - Reassign an existing
kind
value to an another existingkind
value when they are equivalent (e.g. fixing the spelling of a value coming from an upstream data source) - Reassign less than 50% of existing
kind
value into a newkind
value, when kind has 10,000 or more features - Reassign more than 50% of existing
kind
value into a newkind
value, when kind has less than 10,000 features - Change of -1 to default
min_zoom
ormax_zoom
values to determine whenkind
is included - Adjustments to the overall map balance (proportion of features in one layer or another, proportion of
kind
s in a single layer) by adjusting boosting ofmin_zoom
values over thekind
's default, limiting the number of individualkind
features in a given tile coordinate, and other means. - Add unpublicized
kind
value - Remove unpublicized
kind
value - Correct a regression in the API (to the last good version)
- Correct a newly added feature property name
- Correct a newly added
kind
value
We do not version data features, but we do attempt to indicate the data source and the feature ID as assigned by that source so customers can investigate upstream changes.
Protomaps basemaps have 3 primary sources:
- Natural Earth (used for zooms 0-8 for most everything) updates infrequently (often annually)
- OpenStreetMap (used for zooms 9+ for most everything, sometimes earlier) updates frequently (at least daily)
- OpenStreetMapData (used for zooms 9+ in the earth and water layers only) updates infrequently (optimistically monthly)
- Add new feature
- Removal of existing feature
- Change feature name
- Change feature geometry
- Change feature property values (including property removal if removed from original source)
- Change feature
kind
value (when upstream data source reclassifies them). - Change feature
min_zoom
&/ormax_zoom
values (when area or other signal changes upstream).
NOTE: It is possible to query the version of individual features by looking at a feature's source
and id
properties and performing a lookup via the source service, but that is beyond the scope of Tilezen. Because of simplification, id
properties are not always available due to feature merging.
In addition to the common
name locals call a place, the following common
and common-optional
languages are generally available:
name:ar
العربية (Arabic) commonname:bn
বাংলা (Bengali) – common-optionalname:de
Deutsch (German) – common-optionalname:en
English – commonname:es
español (Spanish) – commonname:fr
français (French) – commonname:el
ελληνικά (Greek) – common-optionalname:hi
हिन्दी (Hindi) – common-optionalname:id
Bahasa Indonesia (Indonesian) – common-optionalname:it
italiano (Italian) – common-optionalname:ja
日本語 (Japanese) – common-optionalname:ko
한국어 (Korean) – common-optionalname:nl
Nederlands (Dutch) – common-optionalname:pl
Polski (Polish) – common-optionalname:pt
Português (Portuguese) – common-optionalname:ru
Русский (Russian) – commonname:sv
Svenska (Swedish) – common-optionalname:tr
Türkçe (Turkish) – common-optionalname:vi
Tiếng Việt (Vietnamese) – common-optionalname:zh
中文 (Chinese): primarily simplified but sometimes traditional – common – deprecatedname:zh-Hans
中文 (Chinese): primarily simplified but sometimes traditional – commonname:zh-Hant
中文 (Chinese): primarily traditional but sometimes simplified – common
Arabic, Chinese, English, French, Russian and Spanish are used by the United Nations for meetings and official documents. The other languages listed are either proposed as official language of the United Nations (Bengali, Hindi, Portugese, and Turkish) or frequently used in OpenStreetMap, Who's On First, or Wikipedia.
Additional localized names are available as common-optional
and optional
, but their actual use is the data is not widespread.
- Major additions, deletions to country names, borders, disputed territories, and capitals are possible and may be advertised but do not bump the Tilezen API version.
- Minor corrections to country names, borders, disputed territories, capitals, and other administrative geography are always possible and will not be tracked or advertised.
- Rollup of MAJOR Tilezen API changes
- Change the maximum Tilezen zoom at which tiles are generated by default (currently zoom 16)
- Remove a file format
- Backwards incompatible change to a file format
- Tilezen software dependency has a breaking change to the tile response
- Rollup of MINOR Tilezen API changes
- Add a file format
- Rollup of PATCH Tilezen API changes
- Infrequent update of static data sources like Natural Earth or OpenStreetMapData
- Backwards compatible change to a file format
- Software dependency has a backwards compatible change or bug fix with no change to the tile response