SOTER

ADR-003: Technology Stack: Python, Git, and Textual DSL

Status

Accepted

Context

The early design considered extending Java-based diagramming tools, including PlantUML, to support additional BPMN behavior.

That path would couple SOTER to a heavy diagramming stack and make the modeling language secondary to rendering.

Decision

SOTER uses a dedicated Python implementation for parsing, analysis, compilation, and projection.

The canonical source is a textual DSL stored in Git. Rendering is performed by separate projectors and browser-compatible visualization components.

Rationale

Python gives SOTER a practical implementation environment for parser work, static analysis, test automation, Django-based UI work, and local development.

Git makes the model reviewable and auditable. Textual source keeps SOTER closer to infrastructure-as-code and documentation-as-code practices than to manual diagram editing.

Consequences

Positive

  • CI/CD automation is straightforward.
  • Textual model changes can be reviewed and diffed.
  • Rendering engines can be swapped behind projector boundaries.

Negative

  • SOTER must own more graph-analysis and projection code.
  • The Python stack must be kept disciplined with typing and tests.

Neutral or Operational

  • PlantUML, D2, BPMN, Mermaid, and browser renderers remain projection targets, not the core modeling layer.

Alternatives Considered

Extend Java / PlantUML Directly

Rejected because it would make rendering infrastructure drive the modeling architecture.

Visual-First Modeling Tool

Rejected because it conflicts with Git-first model governance.

Migration or Adoption

Legacy prototype concepts should be reimplemented as Python modules and tested through the normal SOTER pipeline.

Related Documents

SOTER v1.12.0-beta