cosmonic-labs / concordance

Opinionated Event Sourcing Framework based on wasmCloud
Apache License 2.0
60 stars 6 forks source link

Positioning of Concordance? #13

Closed aschrijver closed 1 year ago

aschrijver commented 1 year ago

Background: I'm involved with SocialHub developer community and the Fediverse Enhancement Proposal process. I find Concordance (plus wasmCloud) to be very interesting for possible use in a non-commercial Free Software project (AGPL) that aims to investigate various mechanics for the evolution of the Fediverse - based on W3C ActivityPub protocol (actor-based, email-like messaging).

Concordance is "based on" wasmCloud, says the repo description. It provides "opinionated" Event Sourcing (CQRS/ES). I am a strong believer in the merits of these architecture patterns, in combination with others like, DDD and BDD.

But where should I place Concordance, if I'd want to use it? Concordance it says is "under active development", it exists in the 'Cosmonic space' and the Capability that Cosmonic lists is called cosmonic:event-sourcing. There's reference to Cosmonic Managed Event Sourcing.

I reckon you have commercial plans for Concordance, or other event sourcing services. Imho there'd be value to have "event sourcing" capability be part somehow of the wasmCloud project, so that it helps community uptake of wasmCloud and subsequent conversion of prospects to the commercial Cosmonic PaaS.

What can you tell about future plans wrt Concordance / Event Sourcing?

autodidaddict commented 1 year ago

Thanks for the questions, glad to see you're looking into Concordance (I'm also a fan of ActivityPub 😄 ).

When we say that Concordance is "based on" wasmCloud, what we mean is that Concordance is the combination of an interface definition and a capability provider. This provider is launched on a wasmCloud lattice (run by wasmCloud hosts) and the components you create (aggregates, projectors, process managers, etc) are all WebAssembly modules that utilize those interfaces. To use Concordance, you just need to write your components as WebAssembly modules that make use of the Concordance interface, and deploy a/the Concordance capability provider.

Concordance is, and always will be, open source. The open source implementation, which is what's under early and active development, relies on NATS messaging and NATS persistent streams and distributed consumers to make the event sourcing plumbing. We didn't make it part of the wasmCloud core project because we're essentially a commercial enterprise creating and contributing to a community addition to the wasmCloud ecosystem.

Cosmonic will eventually have a built-in event sourcing capability provider that Cosmonic customers will be able to use (so you don't have to deploy your own). This provider will use the same interface as concordance, even if our implementation is different. This means that anything you do with open source Concordance should be automatically transferrable to being hosted in Cosmonic once we enable that feature.

We have lots of exciting plans for Concordance! Probably one of the imminent changes is we're hoping to move the interface definition from the use of Smithy to using wit and the component model, making it easier for you to generate your own strongly-typed domain models on top of your event sourcing components. We also have internal, experimental tooling (soon to be open sourced) that will let you generate SVG diagrams and markdown documentation to make your event-sourced domain model highly discoverable.

The ever-present nemesis here is time. As we get time enough to work on it, we will be pushing Concordance forward. Concordance is also being used as part of the foundational framework that makes Cosmonic itself run, as our backend is event-sourced. This means that we're "drinking our own champagne" (more fun than eating our own dog food!) and so Concordance will always be an open source project that is being exercised and tested and proven out within a company.

aschrijver commented 1 year ago

Thank you very much for this elaborate response :pray: Very encouraging! Love the term "drinking own champagne" too :smiley:

The answer satisfies my curiosity. Now I wonder if I should close the issue, or leave it open for a bit for more others to see (closed issues tend to be overlooked by the proverbial "newcomer"). Time is terrible, esp. the available parts. Maybe your answer might be a quick copy/paste to a blog post or FAQ Q&A? :thinking:

(OT: I read your 'Can we Game in the Fediverse?" and that's a question that often pops up in fedi discussion. Spritely Fantasary vision by ActivityPub co-author Christine Lemmer Webber is an exciting vision in that regard. Christine co-founded Spritely Institute non-profit with Randy Farmer, where they intend to bringing Goblins to Wasm)

autodidaddict commented 1 year ago

Last weekend's rabbit hole involved me looking into Spritely Goblins and Fantasary. I'll have to go back and re-read it because it was hard to tell where the soft and hard edges of the platform are.

Good thinking about the issue. I'll leave it open until we have a formal FAQ and then I'll move the content there and close this issue.