Categorize directories into bounded contexts
Background
As part of the first activity of the Bounded Contexts working group we need to categorize the files/directories in the codebase, that can contain domain code, into groups that later can be formalized into bounded contexts.
This is one of the goals in the larger effort to work towards a Modular Monolith: https://docs.gitlab.com/ee/architecture/blueprints/modular_monolith/#how-do-we-get-there
Activity
- Visit the export of directories: https://docs.google.com/spreadsheets/d/1S2PuuVJbPYmZEj2rqq9rKH7eiBprKJe49L7xphYEUOU/edit?usp=sharing. (Tip: use Data, Filter views)
- Categorize as many directories as you can with the related
feature category
andstage
. - If you think a directory can contain a mix of responsibilities (e.g.
app/models
) leave thefeature category
empty and add anote
. We can break down these directories further if needed. - You can reference https://handbook.gitlab.com/handbook/product/categories/features for how feature categories, stages and teams relate to each other.
Goals:
- Understand if feature categories are sufficient to identify bounded contexts.
- Understand if we are using multiple namespaces for code that should be under the same bounded context.
- Understand if a bounded context is too broad and needs to be broken down.
- Understand what potential bounded contexts we will end up having.
How is the list generated?
find app ee/app lib ee/lib -type d | \
grep -v -e 'app/components' -e 'app/serializers' -e 'app/controllers' \
-e 'app/views' -e 'app/assets' -e 'lib/tasks' -e 'lib/api' -e 'lib/ee/api' \
> domain-dirs.out
DRIs by stage
The DRIs are responsible for categorizing all the code owned by a specific stage. Each group in a stage owns multiple product categories. The DRI works with team members of their own stage to categorize their code or claim the ownership of specific directories. The DRI can in turn assign work to to other team members to parallelize the effort but they are ultimately the DRI for progress.
If anyone is familiar enough with feature categories of stages that currently don't have an assigned DRI, feel free to assign yourself to that stage. We will have to engage with the remaining stages in Slack to find at least 1 DRI.