Skip to content

JohnMurray/busan

Repository files navigation

busan (부산)

Crates.io Build Status GNU GPL v3 licensed Decision log Change Log

Busan is an actor implementation for Rust that is currently under heavy development and is experimental in nature. It is not yet ready for production use, although it usable to build hobby/personal projects on (with a lot of effort).

Documentation

The project lacks comprehensive documentation or getting started guides at this time. The best source of documentation will be found in the rustdocs at docs.rs and in the examples folder.

If you are interested in additional context behind the project or technical decisions, then the decision logs may be of particular interest.

Examples

You can run the examples by specifying the workspace (directory) name, prefixed with examples_.

# Run the current examples
$ cargo run -p examples_ping_pong
$ cargo run -p examples_hello_world

# Trick the cargo run command into listing our example workspaces
$ cargo run -p 2>&1 | grep 'examples_'

Roadmap

The roadmap is constantly evolving, so I don't expect plans to be super detailed outside the short-term milestones. I'm currently tracking my work in NOTES.md and is constantly evolving.

  • 0.2.0 - Spawn actors, send and receive messages (shipped)
  • 0.3.0 - Core features - lifecycle management, actor/work scheduler, etc.
  • 0.4.0 - Ergonomics & Utilities (routers, timers, behaviors, etc)
  • 0.4.0 - Observability, test support, docs

Beyond this, I don't have any defined plans. Things on my mind include:

  • Remote facilities - remote routing/messaging, clustering, remote actor spawning, etc.
  • gRPC bridging (exposing a gRPC interface to communicate with actors)
  • Network bridging - a generic take on gRPC bridging that allows for arbitrary network protocols
  • DSL for one-off actor systems
  • State snapshotting/journaling, actor migration
  • Async IO and/or async/await support and/or Tower integration

It's not clear how quickly progress will be made against these milestones and ideas as this is also a personal experiment in how I think about and manage my open-source projects.

Contributing

I'm not currently considering code contributions at the moment as the project is still in its infancy, and I'm still working out the design. However, I am open to suggestions and feedback. If you have any ideas or suggestions, please start a discussion. I'd also be interested in hearing about real-world use-cases that are not well-supported by other Rust-based actor implementations.

Licensing

The project is currently licensed under the GNU GPL v3 license. My intention is to ensure all early work and development on this project is kept open. I may revisit this if there is significant commercial interest.