if there's one thing i've learned from the past few years of being in the cool, queer part of the internet, it's that identity cannot and should not be a fixed concept.
that said, identity being a fixed concept lies at the core of many services, given the need for accountability (in a professional environment, the absolute last thing you want is to bounce sensitive information around to the wrong person because you were unaware of their recent name or address change)
i think generated UUIDs get us a good part of the way there. give an account this one, traceable ID that rules over all, but is buried so far beneath the surface that no end user would ever need to notice. this allows users to change their identity as they please, without heavily disrupting the information associated with them. by making your UUID the only strict component, everything else can be more free and flexible.
the question "what's in a name" is so deeply rooted in such diverse human culture; we should absolutely never be restricted to two boxes for a "first" and "last" name. display names and handles are a great solution here, too; the handle as a simple, often shorthand string that can uniquely identify a user, and the display name as the open canvas where the user may dub themselves however they wish. often you need only develop software to work with the former (under the hood, the handle should always resolve to the UUID, never replacing it. discord mentions handle this quite well by secretly masking mentions as username tags, when in reality they are direct references to a UUID)
it's unfortunate that old, outdated systems (many of which being government systems rooted in the analogue era where """data centres""" were big filing cabinets) don't implement this stuff more, but we can at least strive as developers to make this a standard going forward. we can make better decisions for future solutions to deliver where our outdated predecessors have previously failed.