// the find
openstreetmap/iD
🆔 The easy-to-use OpenStreetMap editor in JavaScript.
iD is the default web editor embedded on openstreetmap.org, built in JavaScript with D3 for rendering. It's the entry point for new OSM contributors — intentionally limited in scope so beginners can add a café or fix a road name without accidentally corrupting relation data. Not aimed at power mappers.
The architecture is well-thought-out: an immutable graph with a proper history/undo stack (modules/core/graph.ts, history.js) rather than the in-place mutation you'd expect from a 12-year-old JS project. Translation coverage is genuinely impressive — 100+ locales, managed through Transifex with automated CI sync. The validation system catches common tagging mistakes before upload, which matters when bad data affects millions of users. Mixed JS/TS migration is in progress and the TypeScript files (actions, geo, core) are clean.
Still carrying significant legacy JavaScript that hasn't been converted — context.js and history.js are the heart of the app and both are plain JS, making refactoring risky. The dist/ directory is committed to the repo, which is the old habit of treating git as a deployment mechanism; it creates noisy diffs and merge conflicts. For anyone wanting to embed iD in their own app, the public API surface (documented in API.md) is thin and the internal module boundaries aren't really designed for external consumption. Performance degrades noticeably when editing dense urban areas — D3 SVG rendering at scale is the fundamental bottleneck and there's no obvious path to a WebGL renderer without a near-rewrite.