[ https://issues.apache.org/jira/browse/UNOMI-882?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Serge Huber updated UNOMI-882: ------------------------------ Description: h2. Rationale Our current documentation faces several challenges: h3. Current Pain Points * *Documentation Maintenance*: ** Diagrams are maintained separately from documentation ** Binary image files in version control ** Manual updates required when architecture changes ** Inconsistent diagram styles and formats h3. Development Impact * Documentation becomes outdated quickly * High overhead in maintaining technical diagrams * Difficulty in reviewing diagram changes * Inconsistent representation of system architecture h3. User Experience * Outdated visual documentation * Inconsistent representation across documents * Difficulty understanding complex interactions * Limited visualization of system architecture h2. Proposed Solution Integrate automated diagram generation directly within our AsciiDoc documentation using a combination of PlantUML and GraphViz. h3. Technical Components * *PlantUML Integration*: ** C4 model support for architecture diagrams ** Sequence diagrams for interactions ** Component diagrams for services * *GraphViz Support*: ** Dependency graphs ** Flow diagrams ** State machines h3. Implementation Requirements * GraphViz 2.40+ * PlantUML integration * AsciiDoctor Diagram extensions * Build system integration h3. Build Integration {noformat:xml} <plugin> <groupId>org.asciidoctor</groupId> <artifactId>asciidoctor-maven-plugin</artifactId> <configuration> <requires> <require>asciidoctor-diagram</require> </requires> <attributes> <graphvizdot>${graphvizdot}</graphvizdot> </attributes> </configuration> </plugin> {noformat} h2. Current Implementation Status h3. Completed Work * *Architecture Documentation*: ** High-level system architecture using C4 model ** Service interaction diagrams ** Data flow representations ** Component relationship diagrams h3. Implemented Diagrams * *High-Level Architecture*: {noformat} [plantuml] ---- @startuml !include C4_Component.puml Container(webApp, "Web Application") Container(unomi, "Apache Unomi") Container(elastic, "Search Engine") @enduml ---- {noformat} * *Service Architecture*: {noformat} [plantuml] ---- @startuml package "Core Services" { [Profile Service] [Event Service] [Rules Service] } @enduml ---- {noformat} * *Data Flow*: {noformat} [plantuml] ---- @startuml |Client| start :Send Request; |REST API| :Process; stop @enduml ---- {noformat} h3. Build System Integration * *Automated Requirement Checking*: ** PowerShell build script (`build.ps1`) now includes: *** Automatic detection of GraphViz installation *** Clear installation instructions if missing *** System requirement validation *** Colorized output for better visibility ** Shell script (`build.sh`) includes: *** GraphViz dependency checking *** Platform-specific installation guidance *** Enhanced error reporting *** Progress tracking for long operations h3. Build Script Features * *Requirement Validation*: ** Checks for Java, Maven, and GraphViz installations ** Validates system resources ** Verifies tool versions * *User Experience*: ** Clear error messages ** Installation guidance ** Progress indicators ** Colorized output (when supported) * *Error Handling*: ** Detailed error reporting ** Recovery suggestions ** Platform-specific guidance h3. Installation Support * *Automated Installation Instructions*: {noformat} # When GraphViz is missing, the build script provides platform-specific guidance: # macOS brew install graphviz # Ubuntu/Debian apt-get install graphviz # Windows choco install graphviz {noformat} * *Version Validation*: ** Checks GraphViz version compatibility ** Verifies dot command availability ** Ensures proper PATH configuration h3. Technical Achievement * Successfully integrated PlantUML * Established consistent styling * Version-controlled diagram sources * Build process integration h2. Benefits Realized h3. For Developers * *Maintenance*: ** Source-controlled diagrams ** Easy updates with code changes ** Consistent styling ** Integrated review process h3. For Documentation * *Quality*: ** Always up-to-date diagrams ** Consistent visual language ** Professional presentation ** Better system representation h3. For Users * *Understanding*: ** Clear system architecture ** Better workflow visualization ** Consistent documentation ** Improved learning experience h2. Next Steps h3. Phase 1: Enhance Current Implementation * Add GraphViz support * Create additional diagram templates * Document creation guidelines * Expand diagram coverage h3. Phase 2: Advanced Features * Automated diagram generation * Interactive HTML elements * Dynamic diagram updates * Extended diagram types h2. Success Metrics h3. Quantitative * 50% reduction in diagram maintenance time * 100% of diagrams in source control * Zero outdated diagrams * 30% increase in documentation clarity h3. Qualitative * Improved documentation accuracy * Better system understanding * Enhanced collaboration * Increased developer satisfaction h2. Required Actions h3. Development Team 1. Install required tools: {noformat} # macOS brew install graphviz # Ubuntu/Debian apt-get install graphviz # Windows choco install graphviz {noformat} 2. Update build configurations 3. Review existing diagrams 4. Plan new diagram additions h3. Documentation Team 1. Review diagram guidelines 2. Identify documentation gaps 3. Plan diagram integration 4. Update style guide was: h2. Rationale Our current documentation faces several challenges: h3. Current Pain Points * *Documentation Maintenance*: ** Diagrams are maintained separately from documentation ** Binary image files in version control ** Manual updates required when architecture changes ** Inconsistent diagram styles and formats h3. Development Impact * Documentation becomes outdated quickly * High overhead in maintaining technical diagrams * Difficulty in reviewing diagram changes * Inconsistent representation of system architecture h3. User Experience * Outdated visual documentation * Inconsistent representation across documents * Difficulty understanding complex interactions * Limited visualization of system architecture h2. Proposed Solution Integrate automated diagram generation directly within our AsciiDoc documentation using a combination of PlantUML and GraphViz. h3. Technical Components * *PlantUML Integration*: ** C4 model support for architecture diagrams ** Sequence diagrams for interactions ** Component diagrams for services * *GraphViz Support*: ** Dependency graphs ** Flow diagrams ** State machines h3. Implementation Requirements * GraphViz 2.40+ * PlantUML integration * AsciiDoctor Diagram extensions * Build system integration h3. Build Integration {noformat:xml} <plugin> <groupId>org.asciidoctor</groupId> <artifactId>asciidoctor-maven-plugin</artifactId> <configuration> <requires> <require>asciidoctor-diagram</require> </requires> <attributes> <graphvizdot>${graphvizdot}</graphvizdot> </attributes> </configuration> </plugin> {noformat} h2. Current Implementation Status h3. Completed Work * *Architecture Documentation*: ** High-level system architecture using C4 model ** Service interaction diagrams ** Data flow representations ** Component relationship diagrams h3. Implemented Diagrams * *High-Level Architecture*: {noformat} [plantuml] ---- @startuml !include C4_Component.puml Container(webApp, "Web Application") Container(unomi, "Apache Unomi") Container(elastic, "Search Engine") @enduml ---- {noformat} * *Service Architecture*: {noformat} [plantuml] ---- @startuml package "Core Services" { [Profile Service] [Event Service] [Rules Service] } @enduml ---- {noformat} * *Data Flow*: {noformat} [plantuml] ---- @startuml |Client| start :Send Request; |REST API| :Process; stop @enduml ---- {noformat} h3. Technical Achievement * Successfully integrated PlantUML * Established consistent styling * Version-controlled diagram sources * Build process integration h2. Benefits Realized h3. For Developers * *Maintenance*: ** Source-controlled diagrams ** Easy updates with code changes ** Consistent styling ** Integrated review process h3. For Documentation * *Quality*: ** Always up-to-date diagrams ** Consistent visual language ** Professional presentation ** Better system representation h3. For Users * *Understanding*: ** Clear system architecture ** Better workflow visualization ** Consistent documentation ** Improved learning experience h2. Next Steps h3. Phase 1: Enhance Current Implementation * Add GraphViz support * Create additional diagram templates * Document creation guidelines * Expand diagram coverage h3. Phase 2: Advanced Features * Automated diagram generation * Interactive HTML elements * Dynamic diagram updates * Extended diagram types h2. Success Metrics h3. Quantitative * 50% reduction in diagram maintenance time * 100% of diagrams in source control * Zero outdated diagrams * 30% increase in documentation clarity h3. Qualitative * Improved documentation accuracy * Better system understanding * Enhanced collaboration * Increased developer satisfaction h2. Required Actions h3. Development Team 1. Install required tools: {noformat} # macOS brew install graphviz # Ubuntu/Debian apt-get install graphviz # Windows choco install graphviz {noformat} 2. Update build configurations 3. Review existing diagrams 4. Plan new diagram additions h3. Documentation Team 1. Review diagram guidelines 2. Identify documentation gaps 3. Plan diagram integration 4. Update style guide > Enhanced Technical Documentation with Integrated Diagrams > --------------------------------------------------------- > > Key: UNOMI-882 > URL: https://issues.apache.org/jira/browse/UNOMI-882 > Project: Apache Unomi > Issue Type: Sub-task > Components: unomi(-core) > Affects Versions: unomi-3.0.0 > Reporter: Serge Huber > Assignee: Serge Huber > Priority: Major > Fix For: unomi-3.0.0 > > > h2. Rationale > Our current documentation faces several challenges: > h3. Current Pain Points > * *Documentation Maintenance*: > ** Diagrams are maintained separately from documentation > ** Binary image files in version control > ** Manual updates required when architecture changes > ** Inconsistent diagram styles and formats > h3. Development Impact > * Documentation becomes outdated quickly > * High overhead in maintaining technical diagrams > * Difficulty in reviewing diagram changes > * Inconsistent representation of system architecture > h3. User Experience > * Outdated visual documentation > * Inconsistent representation across documents > * Difficulty understanding complex interactions > * Limited visualization of system architecture > h2. Proposed Solution > Integrate automated diagram generation directly within our AsciiDoc > documentation using a combination of PlantUML and GraphViz. > h3. Technical Components > * *PlantUML Integration*: > ** C4 model support for architecture diagrams > ** Sequence diagrams for interactions > ** Component diagrams for services > * *GraphViz Support*: > ** Dependency graphs > ** Flow diagrams > ** State machines > h3. Implementation Requirements > * GraphViz 2.40+ > * PlantUML integration > * AsciiDoctor Diagram extensions > * Build system integration > h3. Build Integration > {noformat:xml} > <plugin> > <groupId>org.asciidoctor</groupId> > <artifactId>asciidoctor-maven-plugin</artifactId> > <configuration> > <requires> > <require>asciidoctor-diagram</require> > </requires> > <attributes> > <graphvizdot>${graphvizdot}</graphvizdot> > </attributes> > </configuration> > </plugin> > {noformat} > h2. Current Implementation Status > h3. Completed Work > * *Architecture Documentation*: > ** High-level system architecture using C4 model > ** Service interaction diagrams > ** Data flow representations > ** Component relationship diagrams > h3. Implemented Diagrams > * *High-Level Architecture*: > {noformat} > [plantuml] > ---- > @startuml > !include C4_Component.puml > Container(webApp, "Web Application") > Container(unomi, "Apache Unomi") > Container(elastic, "Search Engine") > @enduml > ---- > {noformat} > * *Service Architecture*: > {noformat} > [plantuml] > ---- > @startuml > package "Core Services" { > [Profile Service] > [Event Service] > [Rules Service] > } > @enduml > ---- > {noformat} > * *Data Flow*: > {noformat} > [plantuml] > ---- > @startuml > |Client| > start > :Send Request; > |REST API| > :Process; > stop > @enduml > ---- > {noformat} > h3. Build System Integration > * *Automated Requirement Checking*: > ** PowerShell build script (`build.ps1`) now includes: > *** Automatic detection of GraphViz installation > *** Clear installation instructions if missing > *** System requirement validation > *** Colorized output for better visibility > ** Shell script (`build.sh`) includes: > *** GraphViz dependency checking > *** Platform-specific installation guidance > *** Enhanced error reporting > *** Progress tracking for long operations > h3. Build Script Features > * *Requirement Validation*: > ** Checks for Java, Maven, and GraphViz installations > ** Validates system resources > ** Verifies tool versions > * *User Experience*: > ** Clear error messages > ** Installation guidance > ** Progress indicators > ** Colorized output (when supported) > * *Error Handling*: > ** Detailed error reporting > ** Recovery suggestions > ** Platform-specific guidance > h3. Installation Support > * *Automated Installation Instructions*: > {noformat} > # When GraphViz is missing, the build script provides platform-specific > guidance: > # macOS > brew install graphviz > # Ubuntu/Debian > apt-get install graphviz > # Windows > choco install graphviz > {noformat} > * *Version Validation*: > ** Checks GraphViz version compatibility > ** Verifies dot command availability > ** Ensures proper PATH configuration > h3. Technical Achievement > * Successfully integrated PlantUML > * Established consistent styling > * Version-controlled diagram sources > * Build process integration > h2. Benefits Realized > h3. For Developers > * *Maintenance*: > ** Source-controlled diagrams > ** Easy updates with code changes > ** Consistent styling > ** Integrated review process > h3. For Documentation > * *Quality*: > ** Always up-to-date diagrams > ** Consistent visual language > ** Professional presentation > ** Better system representation > h3. For Users > * *Understanding*: > ** Clear system architecture > ** Better workflow visualization > ** Consistent documentation > ** Improved learning experience > h2. Next Steps > h3. Phase 1: Enhance Current Implementation > * Add GraphViz support > * Create additional diagram templates > * Document creation guidelines > * Expand diagram coverage > h3. Phase 2: Advanced Features > * Automated diagram generation > * Interactive HTML elements > * Dynamic diagram updates > * Extended diagram types > h2. Success Metrics > h3. Quantitative > * 50% reduction in diagram maintenance time > * 100% of diagrams in source control > * Zero outdated diagrams > * 30% increase in documentation clarity > h3. Qualitative > * Improved documentation accuracy > * Better system understanding > * Enhanced collaboration > * Increased developer satisfaction > h2. Required Actions > h3. Development Team > 1. Install required tools: > {noformat} > # macOS > brew install graphviz > # Ubuntu/Debian > apt-get install graphviz > # Windows > choco install graphviz > {noformat} > 2. Update build configurations > 3. Review existing diagrams > 4. Plan new diagram additions > h3. Documentation Team > 1. Review diagram guidelines > 2. Identify documentation gaps > 3. Plan diagram integration > 4. Update style guide -- This message was sent by Atlassian Jira (v8.20.10#820010)