Published on

Collaborating with Archi

Authors
archi-model

Overview

A post on team collaboration using the Archi® open source modelling toolkit with the coArchi plugin.

Background

Archi® is an open-source modelling tool for Enterprise Architecture based on the ArchiMate® language. Archi® is well established as a fantastic modelling tool for single-user purposes but hasn't been useful for team collaboration without some serious and inconvenient workarounds. The problem is that Archi® saves the model to a single opaque file making collaboration near impossible for all but the smallest of teams.

The Archi® contributors have addressed this shortcoming with an integrated plug-in called coArchi that offers full git integration. The compelling aspect here is that coArchi explodes the single Archi® file into a full folder and file hierarchy where all of the model assets can be version controlled properly.

Sample Model

If we take the following model snippet as an example.

archi-model

With coArchi installed and configured for this model, Archi® will store the data locally in the following file structure, as opposed to a single file.

.
├── images
└── model
    ├── application
    │   ├── ApplicationFunction_id-1c5bc64e92ad4241aaaa0818a26202a8.xml
    │   ├── ApplicationService_id-963f7d96846d4e499582be327b7d999f.xml
    │   ├── ApplicationService_id-9c3bf748c73c461d8ec9c815723ba885.xml
    │   ├── DataObject_id-250a15b63e1e4f4aa9d40bbe9d86a14a.xml
    │   └── folder.xml
    ├── business
    │   └── folder.xml
    ├── diagrams
    │   ├── ArchimateDiagramModel_id-d427fb7788b045858755929ff2a27be1.xml
    │   └── folder.xml
    ├── folder.xml
    ├── implementation_migration
    │   └── folder.xml
    ├── motivation
    │   └── folder.xml
    ├── other
    │   └── folder.xml
    ├── relations
    │   ├── AccessRelationship_id-695df8b8ac8445cab9859eeb3892981f.xml
    │   ├── RealizationRelationship_id-b5541053de3f487a9bd39af231a1685f.xml
    │   ├── ServingRelationship_id-53977bfde6894612b713059e13732c18.xml
    │   ├── ServingRelationship_id-ef4d85897da843cd8674fafd02c69c82.xml
    │   └── folder.xml
    ├── strategy
    │   └── folder.xml
    └── technology
        └── folder.xml

While the file names themselves don't mean much, we can see that individual model assets are represented by a single file which is the key to better collaboration and version control. Not only that, but the files representing each asset are readable XML, so you have half a chance at merging conflicts on a single asset.

Git Repository

The above files have also been pushed to the empty repository of your choosing, giving you full version control. You can find this particular sample on GitHub. Other Archi® users can now import the remote repository into their workspace.

That's it, no more single opaque file, just your local exploded file structure and the git repository.

Branching

coArchi now supports git branching directly in the UI. This opens up the possibility for even more advanced team collaborations, you'll need some team policies around how to use branching to its best effect.

There's no support for pull requests, but this is probably best managed in external tooling anyway (Jira with Bitbucket, Github, etc). Just as with software development teams, using tightly controlled repository permissions with a branching and pull request strategy creates a strong and proven foundation for collaboration.

Downsides

It seems mean to talk about any downsides in such a fantastic open-source project, but there's always something.

  • The git repository operations are all controlled through the Archi® UI, which feels a little clunky if you're already familiar with git
  • The file names don't include the internal asset names which can make browsing the git repository difficulty

Summary

Archi® combined with coArchi is an absolute powerhouse for architecture teams of all sizes, full kudos to the contributors.

You can find more information on coArchi here.