Mapframe and maplink tags can be assigned an explicit name (like "see"), and if one is lacking then they will be given an automatically-assigned name which is calculated from the hash of fully-parsed GeoJSON contents. We have experiences some weaknesses caused by this magic (TBD: link tasks).
Is it possible to assign a plain, autoincrement numeric ID instead?
Open questions:
* [x] Explore changes needed to drop production of hash IDs:
* https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Kartographer/+/887779
* [ ] Where is back-compatibility required?
* [x] Static image URL with old group IDs. groups are passed to the mapdata library and included in the mapdata API, so we can push compat back to the mapdata API for this case.
* [x] mapdata API when requesting old group IDs
* Hash mapdata on-demand, whenever old group IDs are used?
* https://gerrit.wikimedia.org/r/c/mediawiki/extensions/Kartographer/+/887782
* [ ] mapdata API when requesting all groups?
* Could the consumer silently know old group IDs?
* [x] How often is the mapdata API called without group IDs? Querying the webrequest table for uri_query matching "mapdata" but not "mpdgroups", 0.1% of the requests match, or roughly 4000 per day.
SELECT * from wmf.webrequest where uri_path='/w/api.php' and uri_query rlike "mapdata" and uri_query not rlike "mpdgroups" and year=2023 and month=2 and day=1 limit 100;
* [ ] Sample these requests—what are the callers and do they assume hash IDs?
* [ ] mapdata API when requesting by titles and not revids?
* [ ] How often is the API called without revids?
* [ ] What to do about template changes which can cause renumbering of maps for a given revision?
* This could cause maps to appear in the wrong place in an article.
* Could be converted back into the existing bug (missing map) by using a more sophisticated ID?
* [x] Random (version 4) UUID changes on every parse, which makes it unsuitable
* [ ] mapdata API should accept additional parameters which cause variation in parsed output, eg. isMobile. (can be follow-up work)
* [ ] Consider producer rollback.
* [x] Compatiblity ahead of producer change. These are separate patches.
* [x] Toggle producer with configuration.
If successful, consider how this can be applied to solve {T328772}.