Theory
Theory: Migration is Mapping Names, Then Objects, Then Metadata
Git history is the easy part (push --mirror). Users, PRs, CI, and packages are lossy maps. A decision framework is which losses you accept.
Invariants
- Object hashes can stay; URLs and issue numbers usually cannot.
- Interoperability is shared Git + webhooks, not identical UIs.
- AI features will attach to whatever forge has the social graph.
Git objects ── lossless ──► new forge
PRs/issues ── best effort ──► importer
Actions YAML ── rewrite ──► new CI
What can break
- Promising zero-loss PR comments without reading the importer docs.
How to read this chapter
Strategies, preserving history, interoperability, trends, decision, future.