archimatetool / archi

Archi: ArchiMate Modelling Tool
https://www.archimatetool.com
MIT License
914 stars 267 forks source link

[Feature Request] Plugin - Live Collaboration #920

Open kirkpabk opened 1 year ago

kirkpabk commented 1 year ago

Was looking at the possibility of an approach at collaboration that supports teaming architects and non-architects within the Archi tool in a live way.

With a new Archi plugin and possibly a hub (potentially containerized as is with the Convergence project: https://convergence.io/ or something like Mirro), a Lead organizer would create a collaborative session and distribute a link. Collaborators would join and be able to interact with the Lead's Archi screen (with configurable limits, of course) in real-time.

Even with coArchi (which is great, by the way), this is still asynchronous. We don't have a real-time or near real-time way to collaborate with groups. In today's high-paced world, this sort of collaboration is becoming the norm.

Because of the jArchi strength to command nearly every feature of a model in a "live way," using something like Convergence SDK with JavaScript seems like a very natural fit and evolution. Additional benefits could be live chat capture for team discussions and such.

To me the simplest architecture model would be controller/worker wherein, the controller would be responsible for saving and publishing to GIT or a database. But depending upon the worker implementation, it could be local visual only canvas or a mirror copy of the xml. Just thinking out loud...

What are your thoughts?

Phillipus commented 1 year ago

What are your thoughts?

How long would such a thing take and who would develop it?

kirkpabk commented 1 year ago

Interesting question. I was planning on devoting a bit of time. But I haven't gathered all of the requirements or blockers. There are bound to be a few--but once the feasibility and interest are there, this would be a fun little project.

From a preliminary look, we would need some sort of event model from Archi to expose firing of (at a minimum) canvas events for elements/toolboxes and mouse interactivity within the scope of the canvas. Once those are exposed, hooking into those makes the rest fairly easy and "generic" in a sense.

The other aspects are just enabling the controller to admit, eject workers, enable/disable certain activities of workers, "summon" workers to a particular zoomed area of a canvas, and etc.

These are all fairly simple--once the event model is created...

Can you think of any other areas for the basic concept?