We would like to be able to add data to a toolinfo record that is durable, versioned, and separate from the core toolinfo data. This will allow us to retain the "simple" functionality of a toolinfo record being solely controlled by it's originator (either a crawled toolinfo.json file or a Toolhub user via API) while also enabling both the Toolhub system and community members to add additional data about a given tool.
- We do not know the full extent of fields or data types that will be used across all annotations, so the design must anticipate schema changes.
- User facing search across annotations data when needed is expected to be done via Elasticsearch rather than sql queries. This in turn means that storage may use JSONSchemaField blob storage if desired for storing collections of data as an annotation data point.
- Adding/editing should generate new revisions of the (toolinfo, annotations) pair and be reflected in APIs for viewing history and diffs of toolinfo data.