(home)

⚛️
names are for human display/discovery, computer links should be by hash or UUID


  • Common systems like Unix filesystems, the 🌐 World Wide Web, and textual codebases link to objects by name instead of a non-human meaningful identifier
    • This means renaming things results in either:
      • a) A huge diff, perhaps across multiple systems, where every linking object changes as well
      • b) Broken links
  • The solution is to use a non-human meaningful ID for the link instead of a name
    • This allows the name to be stored in one place, following the single source of truth principle
      • It can be changed as many times as the user likes without breaking any links
    • This a ridiculously well proven practice
      • relational databases, key-value stores, webapps etc.
        • imagine if every time you renamed a GitHub issue you had to update every reference to it
  • For the argument for hashes or UUIDs see this post
  • This strategy does introduce new questions
    • Should the display name in a particular document change if the name of the object being linked to changes?
      • For some uses this is the desired behavior, eg probably for source code
      • But for other cases it's definitely the wrong thing
        • For example, consider a document with a excerpt in it, where the document creator has hyperlinked some of the words in the excerpt
        • Need a way to specify that a particular display name in a document is "frozen" and shouldn't change even if the target name changes
  • note to self: could discuss redirect systems as another option besides diffs and broken links

Backlinks