Skip to content

Conversation

@chance-coleman
Copy link
Contributor

@chance-coleman chance-coleman commented Oct 3, 2025

Description

We recently decided to use diagrams as code for creating and maintaining our diagrams. This should reduce maintenance burden and speed up creation of new diagrams.

Because this is diagrams as code, we lose some ability to customize how the diagram is generated. There is the ability with likec4 to manually edit and arrange diagrams, however doing this has some big pitfalls:

  1. It causes headaches anytime we update the diagrams because the generator is not smart enough to take the customizations and add new things elegantly
  2. When exporting the manually created diagrams, the export functionality is not smart enough to figure out where the center of the diagram is, resulting in a very large capture space which is mostly just white space.

Currently created diagrams:

  • Overview Diagrams
    • Basic Overview
    • Namespace Overview
    • Ingress / Egress Overview
  • Functional Layers (each layer is it's own diagram)
  • Namespaces (each namespace is it's own diagram)
  • Ports and Protocols

Open Questions

  • How do we like the colors?
  • Do we want all these diagrams to be generated and stored in UDS Core right? Or do we only want a subset of them?
  • Does anyone have any experience with likec4 and how to make manually customized diagrams export the right size? Or some automated way of trimming whitespace from a png?

Related Issue

Fixes #1955

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Other (security config, docs update, etc)

Checklist before merging

@chance-coleman chance-coleman self-assigned this Oct 3, 2025
@chance-coleman chance-coleman linked an issue Oct 3, 2025 that may be closed by this pull request
@slaskawi
Copy link
Contributor

slaskawi commented Oct 6, 2025

The diagrams look better than I initially thought! :)

Could we update the colors (especially that red-ish one) to match the UDS Registry branding?

fix: ci task reference

fix: ci diagram check

fix: ci

update diagrams
@chance-coleman chance-coleman force-pushed the 1955-implementation-diagrams-to-likec4 branch from c1eee6c to 47aa132 Compare October 6, 2025 13:48
Copy link
Contributor

@slaskawi slaskawi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added one comment and wanted to suggest adding a short ADR with a compiled version of arguments why we switched to C4. Otherwise, LGTM

Copy link
Contributor

@joelmccoy joelmccoy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is looking awesome!

Haven't done an in depth review yet but a couple comments/questions at a first pass:

  1. If the image files are changing frequently, do you think it is worth starting to store these images in git lfs? (might save us some pain down the line as the git history of uds-core grows)
  2. I think we can get rid of the namespace views based on another comment (not providing too much value IMO)
  3. I think it is fine for the functional layer views to only contain the components delivered in that layer

Other than that, I think this is looking pretty solid

@chance-coleman chance-coleman marked this pull request as ready for review October 14, 2025 13:13
@chance-coleman chance-coleman requested a review from a team as a code owner October 14, 2025 13:13
Copy link
Contributor

@joelmccoy joelmccoy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Generally lgtm! Add a few comments for consideration

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implementation: Convert Current Arch Diagrams to LikeC4

4 participants