Commanded's latest release

Commanded v0.18 and EventStore v0.16 have both been published to Hex ready for you to enjoy.

  Elixir CQRS/ES Commanded

What’s in the latest releases?

Please refer to the CHANGELOG for Commanded v0.18 and EventStore v0.16 for all of the enhancements, bug fixes, breaking changes, and upgrade advice. The more significant changes are listed below.

  • Migrate from Poison to Jason for JSON serialization.
  • Support for latest Postgrex (v0.14) and Ecto (v3) libraries.
  • Migrate from uuid to elixir_uuid.
  • Allow event handlers to subscribe to individual streams (#203).
  • Process manager and event handler error & exception handling (#192).
  • Support for :any_version when appending events directly to the Commanded event store (#127).
  • Commanded.EventStore behaviour defines a child_spec/0 function to allow an event store adapter to start its own supervision tree. You no longer need to manually start the in-memory event store (e.g. in tests).
  • EventStore has added support for subscription concurrency (#134).

JSON Serialization

The most significant change is the migration from Poison to Jason for JSON serialization. This change was driven by the upgrade to Postgrex v0.14.x and to support Ecto v3. Jason is also now the default JSON serializer used by Phoenix (since v1.4).

This is a breaking change. Refer to the CHANGELOG for details.

Commanded’s future & the road to v1.0

The roadmap for v1 is to keep the API mostly fixed, but add performance improvements, such as allowing event handlers to run concurrently. EventStore’s latest release added support for subscription concurrency to support this feature in Commanded.

  • Event handler concurrency (#184)
  • Event sourced process managers (#137)
  • Make global $all stream building a separate task (#139). Will provide a significant performance improvement for appending events to a stream.

What’s the plan for the future?

Once Commanded v1.0 is feature complete and released, the next step is to tackle the desire to allow multiple Commanded apps to run within a single Elixir application. The approach will likely be similar to Ecto’s Repo module and will thus be a breaking change to be released as Commanded v2.0.

  • Concurrent, Isolated commanded apps (#117)

Can you help support Commanded?

I’d love to dedicate more time to improving Commanded and provide you with more support.

You can help out by:

  • Submitting feature requests, tracking bugs, and highlighting where documentation is lacking (submit an issue).
  • Pull requests are gladly accepted.
  • Write about your experience using Commanded and how you’ve implemented event sourcing in your own application.
  • Sponsor development or features (get in touch).

Need help with Commanded?

I can provide support, training, and consultancy for your company to become event-driven and succeed when building Elixir applications using CQRS and event sourcing.

Please get in touch if I can help you out.