Skip to content

A suggested contribution roadmap #1

Description

@chrisdebian

Hi, Hugo.

I came across golfTiles through the OSM community and wanted to say it looks like a really valuable project. The idea of golf-centric vector tiles from OSM data, built on tilemaker and served as PMtiles, fills a genuine gap; and the pipeline you have working already is impressive for such an early stage.

I have spent some time reading through the README, todo.md, process.lua, run_all.sh, and the golftiles.org site, and I have put together a suggested contribution roadmap. I want to be clear that this is offered in the spirit of helping, not criticism; please feel free to take, leave, or reshape any of it as you see fit.

The roadmap is organised into five phases:

Phase 0 — Code health and immediate technical debt

  • process.lua TODOs: There are a number of inline TODO comments in process.lua that could each become a dedicated GitHub issue, keeping the code free of stale annotations. The most actionable is the trio of -- TODO log to some file to process comments in set_AttributeInteger_and_log() — completing this would produce a bad_tags.csv on each run, directly enabling the todo.md item about uploading a fixable dataset for the OSM community.
  • run_all.sh: The TODO at line 9 could become an issue. The script would also benefit from set -e and set -o pipefail to prevent silent failures mid-pipeline.
  • golftiles.org: The GitHub link on the homepage appears to be broken (it resolves to golftiles.org/github.com/... rather than https://github.com/...). A basic MapLibre GL JS embed showing one of the existing sample PMtiles would make the project immediately tangible to new visitors.
  • todo.md: Would it be worth converting the items in todo.md and the README's next-steps checklist into GitHub Issues, so contributors can pick things up without having to read across multiple files?

Phase 1 — Data quality pipeline

The tilemaker output already produces a large number of Invalid integer warnings from malformed OSM tags (e.g. hole_number=7 & 16, par=4/5, dist=332 yd). Two improvements here:

  • Structured export: Complete the logging stub to write a bad_tags.csv per run (columns: osm_type, osm_id, key, value). This could seed a MapRoulette challenge or Overpass query for community-led OSM data cleanup.
  • Graceful parsing: Harden the Lua to handle the most common real-world patterns — stripping unit suffixes from dist, extracting integers from X/Y or X & Y formats in hole_number and par, treating named hole variants (e.g. hole_number=Becton 1) as strings rather than attempted integers.

Phase 2 — Schema documentation

  • A SCHEMA.md documenting the three layers (facilities, golf, other), their zoom ranges, all attributes, and the rationale for key decisions — following the shortbread-docs model already mentioned in the README.
  • A configuration doc explaining the osmium and tilemaker parameters and their memory/performance trade-offs.
  • Wiki contributions covering penalty area tagging (water_hazard, lateral_water_hazard, surface variants) and the architect tag — both noted as open items in todo.md.
  • Implementing name:<CODE> multi-language subtag support, currently noted as a TODO in general_attributes().

Phase 3 — Testing and CI

  • Lua unit tests (e.g. using busted) covering the integer-parsing logic, with test cases drawn from the known-bad tag values in the UK extract output.
  • GitHub Actions CI running the full pipeline on a small extract, validating that the output PMtiles file exists and contains the expected layers. The README already lists this as a next step.

Phase 4 — route=golf relation support

This is the highest-impact item: reading hole order from route=golf relations and assigning values to golf_hole= tags, enabling correct multi-course facilities and the animated hole viewer. The current while true do loop in way_function() has an inline comment noting it needs reworking to handle multiple relations. Would it be worth resolving the design question (namespace prefix vs. separate geometry per route) with input from FairwayMapper and the OSM golf tagging community before implementation begins?

Phase 5 — Community and visibility

  • A CONTRIBUTING.md covering environment setup, how to run a test tile generation, and coding conventions.
  • Coordinating with FairwayMapper on the route=golf schema, given the shared goals.
  • A follow-up OSM diary post or forum thread sharing the bad_tags output and Overpass queries, once the export is working.

I am happy to contribute to any of the above, particularly the data quality work and documentation, where my OSM background is most relevant. Would any of this be useful? And are there areas you would rather keep focused on for now?

Thanks,

Chris

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions