Page MenuHomePhabricator

Categorize/prioritize annotations fields
Closed, ResolvedPublic

Description

The question of field prioritization came up in the meeting today. With 20 fields we have a lot to cover, and some fields are likely to be more useful than others. But which ones?

Here are a list of the fields, their descriptions, their input types, and whether or not we're planning to implement them initially.

Field nameDescriptionInputImp
wikidata_qidWikidata item ID for the tool.stringY
audiencesWho is the intended user of the tool?enum arrayY
content_typesWith what type of content or data does the tool interact?enum arrayY
tasksWhat type of task does the tool help with?enum arrayY
subject_domainsIs the tool targeted at helping in a specific type of wiki project or topic area?enum arrayY
deprecatedIf true, the use of this tool is officially discouraged. The replaced_by parameter can be used to define a replacement.booleanN
replaced_byIf this tool is deprecated, this parameter should be used to link to the replacement toolstring(URL)Y
experimentalIf true, this tool is unstable and can change or go offline at any timebooleanN
for_wikisA string or array of strings describing the wiki(s) this tool can be used onstring/arrayN
iconA link to a Wikimedia Commons file description page for an icon that depicts the toolstring(URL)Y
available_ui_languagesThe language(s) the tool's interface has been translated intostring/arrayN
tool_typeThe manner in which the tool is used. Select one from the list of optionsenum valueY
repositoryA link to the repository where the tool code is hosted.string(URL)Y
api_urlA link to the tool's API, if availablestring(URL)Y
developer_docs_urlA link to the tool's developer documentation, if availablearrayN
user_docs_urlA link to the tool's user documentation, if availablearrayN
feedback_urlA link to location where the tool's user can leave feedbackarrayN
privacy_policy_urlA link to the tool's privacy policy, if availablearrayN
translate_urlA link to the tool's translation interfacestring(URL)Y
bugtracker_urlA link to the tool's bug tracker on GitHub, Bitbucket, Phabricator, etcstring(URL)Y

Event Timeline

Audiences, content_types, tasks, and subject_domains are the new fields introduced by https://meta.wikimedia.org/wiki/Toolhub/Data_model#Taxonomy_v2 which will be empty for nearly everything at this point.

The taxonomy v2 fields plus tool_type, for_wikis, and available_ui_languages are the most expected to be useful for tool discovery search facets.

Audiences, content_types, tasks, and subject_domains are the new fields introduced by https://meta.wikimedia.org/wiki/Toolhub/Data_model#Taxonomy_v2 which will be empty for nearly everything at this point.

The taxonomy v2 fields plus tool_type, for_wikis, and available_ui_languages are the most expected to be useful for tool discovery search facets.

Thank you for the input; that's very useful information. tool_type and for_wikis were on my high-priority list, and I'll add available_ui_languages as well.

I'm curious about the taxonomy v2 fields; they felt a little subjective to me, but since the field appears to accept multiple values the hypothetical person-making-an-update doesn't have to restrict their response to, say, a single audience type.

Here are my thoughts about the fields.

Given @bd808's input about their expected usefulness, I think we should certainly prioritize tool_type, for_wikis, available_ui_languages, and the v2 fields (audiences, content_types, tasks, and subject_domains).

I'm also in favor of prioritizing repository, as it seems like that's one field that can open up a lot of other fields: where we find the repository, we're likely to find documentation, a bugtracker, a location for feedback, etc.

The lowest-priority fields, IMO, would be wikidata_qid (it feels like locating wikidata_qids is something that could be automated) and icon.

Deprecated and replaced_by deserve special mention. What I would like/intend to do is check the value of deprecated on all incoming tools and prevent the creation of any tasks pertaining to a tool where deprecated == True unless the "replaced_by" field has no value, in which case that would be a high-priority task. If a tool should for some reason become deprecated, I'd like to either flag or remove other tasks for that tool so that they don't get sent out in the task bundles.


Something for the presentation layer:

The v2 fields and tool_type only allow for responses chosen from a list of possible responses (the v2 fields allow for multiple choices, whereas tool_type allows for only one).

It's worth considering how we want to represent this: a drop-down menu? Radio/checkbox inputs?

I'm curious about the taxonomy v2 fields; they felt a little subjective to me, but since the field appears to accept multiple values the hypothetical person-making-an-update doesn't have to restrict their response to, say, a single audience type.

These fields are a bit like categories and it is expected that tools may fit for multiple values at the same time, especially for audiences and tasks. There is some amount of subjectivity in these types of classification, but that I think is to be expected with categorization.

The v2 fields and tool_type only allow for responses chosen from a list of possible responses (the v2 fields allow for multiple choices, whereas tool_type allows for only one).

Toolhub itself could be updated to provide API endpoints for getting the lists of allowed values for these fields. The OpenAPI spec includes enums for them, but those enums are only for the "native" values that are stored in the database and do not include display values in the original English or any translations that we may have from the translatewiki.net community.

Further to today's discussion:

Fields we won't be implementing at start: (i.e., the ones that take arrays, or potentially take arrays)
developer_docs_url
user_docs_url
feedback_url
privacy_policy_url
deprecated
experimental
for_wikis
available_ui_languages

That leaves us with the following, sorted by input type:

String
wikidata_qid (requires pattern)

String(URL)
replaced_by
icon (requires pattern)
repository
api_url
translate_url
bugtracker_url

Enum array
audiences
content_types
tasks
subject_domains

Single enum value
tool_type

For icon & wikidata_qid I can pass the required pattern along with the other field-related data, or we can skip those as well if we want to wait on validation. Do we want to validate URLs? I can pass a regex pattern with those fields, too.

I'd be inclined to skip replaced_by – not sure how easy that info would be to find for someone unfamiliar with the tool, and also probably rare in general.

On the other hand, we had identified for_wikis and available_ui_languages as fields to prioritize earlier:

Here are my thoughts about the fields.

Given @bd808's input about their expected usefulness, I think we should certainly prioritize tool_type, for_wikis, available_ui_languages, and the v2 fields (audiences, content_types, tasks, and subject_domains).

I'd be inclined to skip replaced_by – not sure how easy that info would be to find for someone unfamiliar with the tool, and also probably rare in general.

On the other hand, we had identified for_wikis and available_ui_languages as fields to prioritize earlier:

replaced_by is a special case, for sure, and figuring out how to deal with it was fun. In terms of frontend implementation, it's easy to handle (just requires a URL) and the frontend's already handling a bunch of fields just like it, so I figured that there was no reason not to include it.

The trouble with for_wikis and available_ui_languages is that they both require special validation and can accept multiple inputs, so they're trickier to present on the frontend. There are ways, but it's a question of how much complexity we (or, more accurately, @Hannah_Njoroge and @Damilare) want to deal with right now.

Slst2020 triaged this task as Medium priority.Feb 23 2023, 8:54 AM

What is the status of this task? It's in the review column, but it's not clear to me whether any feedback or decision is needed at this time. Maybe we could summarize what fields we decided to include in the MVP and consider this done for now?

NicoleLBee claimed this task.

I think so. I was leaving a space open for feedback, but it looks like what we're going with for the MVP is pretty well established at this point.