-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
"Existing" vs "External" #127
Comments
Hi, with the last version you could simply solve it via an "existing" tag and then you can style it like below (or use the existing ..._Ext() elements as workaround).
BR Helmut |
Hi @kirchsth Thx a lot for the tip about the tag support. It looks very useful, and I will investigate it further. However, I still don't understand why C4-PlantUML doesn't support "existing systems" out of the box. If you go to https://c4model.com/#coreDiagrams and click on the first "See example diagram, key, and narrative" button (sorry, it is not possible to link directly to the diagram), you see the basic Internet Bank model along with a text describing the colouring of existing systems and a legend: If you instead go to the C4-PlantUML Core Diagrams page, you see the exact same diagram but with a different legend indicating that now two of the systems are external: I suggest adding support for existing systems (which is a very useful concept) to align C4-PlantUML with c4models.com. |
Hi Hildsholm, I think you are too strict. Even Structurizer ignores this detail and generate C4-Plantuml diagrams with this limitation. BR Helmut |
I'm not involved in the development of this library, but I would like to say that the C4 model doesn't prescribe any particular notation, and "existing system" isn't a part of the semantics - it's just something that I added to that particular example. "Internal" and "External" are also not a part of the C4 model, but it can certainly be useful to state which elements are "outside" a particular boundary (e.g. an organisation), which is why the Structurizr tooling natively supports internal/external. With the "Big Bank plc" example, all elements are marked as "internal", with the exception of the "Personal Banking Customer". That said though, the example diagrams on c4model.com don't differentiate that "external" person from a notation perspective, although the "Personal Banking Customer" is shown outside of the "enterprise" boundary. If you take a look at the Structurizr DSL - Big Bank plc example and view the C4-PlantUML export, you'll notice that particular export does style the external person differently. (screenshot below). It doesn't support "existing system" as a concept though. And I guess that's the real question here ... should C4-PlantUML support an "existing system" concept? I can't answer that, but if C4-PlantUML decides to support such a concept, what other concepts should it support natively, and what colours should be assigned to them? I went through the same line of thinking with the Structurizr tooling, which is how I ended up with the "tags and tagging" route (inspired by CSS) ... people can tag elements with their own custom semantics, and style them as desired. |
Hi @hindsholm,
|
Thank you @kirchsth and @simonbrowndotje for your helpful answers. I guess I may have been a bit too strict in my interpretation of c4model.com. It's just that we have been very happy using C4 in our company for the last couple of years, and it is really spreading now because everyone immediately "gets it". And through all this work we have used the notion of existing vs. new systems (and containers) which we find extremely useful because almost all enterprise development is about building new features that must interact with existing systems. So we basically use "existing" all the time while we use boundaries to show external systems. About a year ago I made a pull request to @adrianvlupu introducing "existing" elements. I was also unsuccessful at that time 🙂 so we ended up making our own fork of his fork of C4-PlantUML. In this fork we did a very crude search and replace from "external" to "existing", and it has been working fine for us. (We also changed the colors, but that is a minor issue). But of course we don't really want to have our own fork, we would much rather use - and contribute to - this common project. I by no means an expert in the PlantUML language, but I can see that with the new structure of the code in this library, introducing new elements has become easier. And your helpful example @kirchsth led my into trying this:
everything works. Of course it would be even better if the legend code allowed for customization, but I am not sure my PlantUML skills are sufficient for that 🙂 |
Hi @hindsholm,
|
Thank you @kirchsth for yet another helpful answer. |
Hi @hindsholm, |
Hi, I just discovered this project and I am very happy to see C4 support in PlantUML being alive again 🙂
![image](https://user-images.githubusercontent.com/1001136/109483415-7fe3c180-7a7f-11eb-889c-e4f398662b60.png)
But there is one thing which puzzles me, and that is the inconsistency with c4model.com with regards to existing vs external.
On the C4 website gray elements indicate existing model elements, while external elements are indicated by system boundaries. See e.g. this legend:
However, in this library (and the previous ones from @RicardoNiepel and @adrianvlupu) gray is used to indicate external elements while there is no notation for distinguishing between existing and new elements.
Because of this inconsistency, we have made our own fork, but I would love to get rid of it and use this standard library instead.
So I would suggest adding support for showing existing elements like in the C4 documentation.
The text was updated successfully, but these errors were encountered: