Backend Spike For Work Item Widget Architecture / Work Item Descriptions
In order to deliver #334809 (closed), we need to implement Description as a widget for Tasks. I've opened this issue to track that work, as well as summarize the discussion that happened many months ago in #335110. Based on the discussion in this thread #335110 (comment 621789974) - it seems like there was a general consensus around the following architecture for widgets in the database. I think this diagram was created prior to actually writing any of the work items code so there may be some inconsistency, but we're not far off from what's represented here:
Spike
-
Determine appropriate implementation and architecture for widgets via writing a PoC that implements Description, Assignee, Weight, Milestone, and Date (maybe?) widgets. -
Update https://docs.gitlab.com/ee/development/work_items.html#widgets-metadata with the decided upon implementation path. -
Keep further out things in mind when deciding the path forward (ex: Widget implementation advanced topics (#354022))
Acceptance criteria:
- A Work Item (of type Task) can have a Description widget
- The description can be fetched via the WorkItem query in GraphQL
- The description can be updated via GraphQL
- Updates to the description can be subscribed to via GraphQL
- Redis counter
Trackers
-
name:
users_updating_work_item_description
-
category:
work_items
-
redis_slot:
users
-
include in the following aggregation counters:
-
xmau_plan
-
xmau_project_management
-
xmau_product_planning
-
xmau_certify
-
users_work_items
-
- documentation: Service Ping Implementation, Redis HLL Counters
Open Questions
- Are widgets editable via the WorkItemUpdate mutation or do they have their own mutations?
Edited by Gabe Weaver