-
Notifications
You must be signed in to change notification settings - Fork 10
Description
we're creating more types of data structures that act as global identifiers across the project. ServiceId
, CommandId
, and others need to be globally unique, so we auto-prefix them with the module path in order to guarantee uniqueness and also give log messages useful metadata that shows authors the path to the definition of a given id.
Elon pointed out that using the full module path typically includes the private module file, which makes things fragile when we move the implementation across private files. We decided the prefix should probably be the path to the nearest public package where this id object is exposed. this allows us to move the class without breaking things like serialized json that might include these id objects. it's reasonable to expect things to break when we move an id class between public packages, but that matches the expectation of any other public api change.
so instead of ServiceId("rats.pipelines._something:some-service")
, we want the prefixing to be something along the lines of ServiceId("rats.pipelines:Something.some-service")
.