Improving Taxonomy - codewars/content-issues GitHub Wiki

Background

The kata library is difficult to browse because it's huge (9.3K+ kata!) and lacks structure. We'd like to improve the browsing experience by providing convenient ways to access interesting topics, and allowing users to drill down from broader concepts based on their interest.

The current tag system allows users to find kata based on keywords, but it's difficult to use because the list is large and unstructured. We also need to improve tagging in general.

Things to keep in mind:

  • We need to have a good balance between breadth and depth in the taxonomy for good user experience. Too many initial items like the current tags will overwhelm users. Reducing it too much and nesting too deep will be annoying to use.
  • We also don't want this metadata to be a spoiler, especially for more difficult kata. Figuring out what can be applied is often the most important.

Implementation

The initial implementation will use the existing tag system, and introduce (internal) "tag types" to categorize them to utilize the subsets separately. This allows incremental adaption with minimal change to how search works.

Example tag types:

  • keyword: General keywords related to the kata ("normal" tag, default)
  • topic: Tags with wider scope than keyword tags (e.g., data-structures, math).
  • style: Tags describing kata style (e.g., debugging, refactoring, restricted, puzzles)
  • domain: Similar to topic, but specifically for career paths/domain (e.g., backend, frontend, data-science)
  • package: Tags for libraries, frameworks, packages, etc. (e.g., numpy, flask, react)

These tag types allow using subsets of tags to provide more focused navigation.

Example of making some topics more accessible:

TODO

  • Improve tagging (HELP WANTED)
  • Improve tags: deduplicate, rename, document (HELP WANTED)
  • Add navigation based on topics similar to the above example

Current Tags

https://github.com/codewars/tags/blob/main/tags.yml