"Flags" appears to predate much of the current architecture.
Current implementation is as stand-alone objects that refer to other objects by phid.
The downside of current approach is that fetching the information requires a separate DB call (We don't allow cross-application table joins).
Reimplementing as Edges would allow integration with modern interfaces, including:
- Filtering objects in all search engines based on having flags
- Showing flags in search results and hovercards.
Caveats:
- Updating flags should not leave a trace in the target object - flags are private to the owner. So no transaction record.
Possible risks:
- This would be our first DB migration, and first time we actually change away from Phabricator's schemas.
- Anything else?