Problem/Motivation

First, go and read the issue summary of #3454669: Record Architecture Decisions — to scale to many people + many timezones.

Excerpt from there:

We need, at least:

  1. product requirements broken down into concrete issues (a graph of issues, with concrete Task issues that can be implemented in a single MR) to work towards that first concrete goal (#3454094), ⚠️ knowing full well that these will be incomplete: we're first working towards that first concrete goal, then expanding scope
  2. a record of decisions (and these decisions may need to be revisited too)
  3. a diagram tying the product requirements + decisions together

This issue is realize that third point.

3 days ago, I wrote in Drupal Slack:

Steps to reproduce

N/A

Proposed resolution

Following that, @ctrlADel messaged me:

c4 diagrams https://c4model.com/ would be great. I don't find the render one particularly easy to digest but then again it's a complicated area. Happy to help make a pretty/cleaned up version of the diagram as well

… which led me down the path of first starting to build a C4 diagram in OmniGraffle — the same tool I used to create that render pipeline diagram years ago. But this made me realize that ideally the diagram could be edited by anyone, and ideally would be versioned.

So I searched and found … https://structurizr.com/ — which:

While maybe imperfect, this is clearly far better than multiple paying for an OmniGraffle license just to be able to edit a diagram, and neither versioned, nor diffable, nor exportable, etc.

So: let's try it.

Remaining tasks

User interface changes

None.

API changes

None.

Data model changes

None.

Command icon Show commands

Start within a Git clone of the project using the version control instructions.

Or, if you do not have SSH keys set up on git.drupalcode.org:

Comments

Wim Leers created an issue. See original summary.

wim leers’s picture

Issue summary: View changes
  1. Mermaid diagram *.md files being out of sync are caught: https://git.drupalcode.org/project/experience_builder/-/jobs/1864229
  2. Syntax errors are caught: https://git.drupalcode.org/project/experience_builder/-/jobs/1864354
  3. That was for the single-diagram case, now it's been hardened to work for the multiple diagrams it'll generate.
  4. Copy/pasting that file into https://structurizr.com/dsl, editing+previewing it there and then copying it back is a pretty good experience — far less fiddly than using OmniGraffle! 😄

https://git.drupalcode.org/project/experience_builder/-/merge_requests/60 is ready.

Going ahead and merging this so that I can hit the ground running on Monday 🚢

  • Wim Leers committed 57092751 on 0.x
    Issue #3454677 by Wim Leers, ctrlADel: [PP-1] Diagram tying the product...
larowlan’s picture

I wonder if we need the overhead of the DSL?
Gitlab supports mermaid and we can edit them direct on mermaid.live

wim leers’s picture

StatusFileSize
new526.1 KB

FYI: initial diagram of the data model as currently partially implemented and the direction we’ve been going in: https://git.drupalcode.org/issue/experience_builder-3454677/-/blob/34546...

P.S.: that's a "direct" Mermaid diagram, which I think will please @larowlan 🤓

ctrladel’s picture

@larowlan one of the benefits of using structurizr's DSL from is that it's really easy to generate and keep in sync smaller diagrams that are easier to digest and if you put the code in the previewer at https://structurizr.com/dsl it's really easy to zoom in/out on specific areas. I'm not particularly attached to structurizr but am a fan of the concepts behind c4 that encourage diagramming systems at multiple levels of detail so people can more easily onboard.

@wimleers I know these diagrams are early drafts but it looks like XB.dsl is missing Senior Developers as a person and Code Defined components that live alongside Config Defined components.

wim leers’s picture

#9: Done.

wim leers’s picture

The current MR is a decent starting point for capturing both what already exists and what's being discussed in all other "early phase" Plan issues, except for:

In general, the docs in MR61 are focused on the server-side part of XB. The client-side part of XB will follow later and depends on strong design direction existing there first. Finally: the server side is also where most of the Drupal community's interests & concerns lie, so getting that off the ground first should happen first.

Going ahead and merging to allow referencing the diagrams in the various issues.

  • Wim Leers committed a6cd7c1d on 0.x
    Issue #3454677 by Wim Leers, ctrlADel: [PP-1] Diagram tying the product...

jessebaker made their first commit to this issue’s fork.

wim leers’s picture

Merging @jessebaker's diagram of the current state of the React front end/client — it's subject to change just like everything else, but it'll help onboard new contributors — and keep existing contributors on the same page.

Now I just need to win the fight with GitLab to actually merge this MR — it's refusing to merge for mysterious reasons …

  • Wim Leers committed a8fa36d9 on 0.x authored by jessebaker
    Issue #3454677 by Wim Leers, ctrlADel: [PP-1] Diagram tying the product...
wim leers’s picture

Title: [PP-1] Diagram tying the product requirements + decisions together » Diagram tying the product requirements + decisions together
Assigned: wim leers » Unassigned
Status: Postponed » Fixed

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.

wim leers’s picture