rails/rails — a map by here-be-dragons
activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb ⇄ activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb: changed together in 129 commits
activemodel/lib/active_model/validations/exclusion.rb ⇄ activemodel/lib/active_model/validations/inclusion.rb: changed together in 38 commits
activestorage/lib/active_storage.rb ⇄ activestorage/lib/active_storage/engine.rb: changed together in 40 commits
activerecord/lib/active_record/attribute_methods/read.rb ⇄ activerecord/lib/active_record/attribute_methods/write.rb: changed together in 48 commits
guides/bug_report_templates/action_controller.rb ⇄ guides/bug_report_templates/active_record.rb: changed together in 30 commits
activerecord/lib/active_record/associations/builder/has_many.rb ⇄ activerecord/lib/active_record/associations/builder/has_one.rb: changed together in 30 commits
actionpack/lib/action_controller.rb ⇄ actionpack/lib/action_controller/base.rb: changed together in 42 commits
actioncable/app/javascript/action_cable/connection.js ⇄ actioncable/app/javascript/action_cable/connection_monitor.js: changed together in 25 commits
activemodel/lib/active_model/validations/exclusion.rb ⇄ activemodel/lib/active_model/validations/format.rb: changed together in 24 commits
activestorage/lib/active_storage/attached/many.rb ⇄ activestorage/lib/active_storage/attached/one.rb: changed together in 18 commits
activemodel/lib/active_model/validations/format.rb ⇄ activemodel/lib/active_model/validations/inclusion.rb: changed together in 24 commits
activemodel/lib/active_model/validations/confirmation.rb ⇄ activemodel/lib/active_model/validations/presence.rb: changed together in 22 commits
activerecord/lib/active_record/associations/builder/belongs_to.rb ⇄ activerecord/lib/active_record/associations/builder/has_one.rb: changed together in 30 commits
activemodel/lib/active_model/validations/format.rb ⇄ activemodel/lib/active_model/validations/presence.rb: changed together in 21 commits
activemodel/lib/active_model/validations/acceptance.rb ⇄ activemodel/lib/active_model/validations/confirmation.rb: changed together in 23 commits
activemodel/lib/active_model/validations/acceptance.rb ⇄ activemodel/lib/active_model/validations/presence.rb: changed together in 21 commits
activerecord/lib/active_record/associations/builder/association.rb ⇄ activerecord/lib/active_record/associations/builder/has_one.rb: changed together in 28 commits
guides/bug_report_templates/action_controller.rb ⇄ guides/bug_report_templates/active_job.rb: changed together in 19 commits
guides/bug_report_templates/active_job.rb ⇄ guides/bug_report_templates/active_record.rb: changed together in 19 commits
activesupport/lib/active_support/message_encryptor.rb ⇄ activesupport/lib/active_support/message_verifier.rb: changed together in 29 commits
activerecord/lib/active_record/associations/belongs_to_association.rb ⇄ activerecord/lib/active_record/associations/belongs_to_polymorphic_association.rb: changed together in 27 commits
activerecord/lib/active_record/associations/builder/association.rb ⇄ activerecord/lib/active_record/associations/builder/collection_association.rb: changed together in 29 commits
actionview/lib/action_view/helpers/tags/collection_check_boxes.rb ⇄ actionview/lib/action_view/helpers/tags/collection_radio_buttons.rb: changed together in 17 commits
activemodel/lib/active_model/validations/acceptance.rb ⇄ activemodel/lib/active_model/validations/format.rb: changed together in 21 commits
activemodel/lib/active_model/validations/exclusion.rb ⇄ activemodel/lib/active_model/validations/presence.rb: changed together in 19 commits
actioncable/app/javascript/action_cable/connection.js ⇄ actioncable/app/javascript/action_cable/subscriptions.js: changed together in 20 commits
activemodel/lib/active_model/validations/format.rb ⇄ activemodel/lib/active_model/validations/length.rb: changed together in 23 commits
activerecord/lib/active_record/database_configurations/database_config.rb ⇄ activerecord/lib/active_record/database_configurations/hash_config.rb: changed together in 20 commits
Rhamir
the Restless
Vexthrax
the Tangled
Vexigoth
the Many-Handed
Oruthas
the Colossal
Thradrake
the Many-Handed
Xairion
the Entwined
Myremir
the Restless
Rhaugoth
the Colossal
Mormir
the Tangled
Vorunyx
the Tangled
ACTIVERECORD
GUIDES
ACTIONPACK
ACTIVESUPPORT
RAILTIES
ACTIONVIEW
ACTIVEMODEL
ACTIVESTORAGE
ACTIVEJOB
ACTIONCABLE
ACTIONTEXT
base.rb
action_cable.js
The Undefined Deep
Gulf of Deprecation
The Null Ocean
Bay of Breaking Changes
HERE BE DRAGONS
The Realm of rails
rails/rails · charted from 60,000 commits · 2009–2026
4,460 settlements · 574k lines · 6,053 souls · 10 dragons
GREAT HOUSES
House Xavier Noria
House Rafael Mendonça França
House Ryuta Kamizono
House Aaron Patterson
House Jon Leighton
House Jean Boussier
LEGEND
Dragon: complex code that keeps changing
Mountains: deeply nested code
Forest: untouched for 2+ years
Marsh: TODO & FIXME
Walls: has tests
Ruins: its keeper is away (6+ months)
Hatched: forged by AI agents
Road: files that change together
Border: top-level directory
N
+
−
⌂
☰
⤓
❦
Layers
Dragons
Great houses (ownership)
Forged by AI
Ruins (knowledge lost)
Roads (change together)
Mountains & forests
Borders
Names
Take the map with you
Map as SVG
Map as PNG
Survey data (JSON)