Design principles

Proto.Actor was born in the Go ecosystem, these design principles was set on day one to conform to the Go mindset.

Constraints

Minimalistic API

Don't bloat the API, avoid enterprisey JVM like containers and configurations. Offload features like logging, configuration, scheduling and dependency injection to 3rd party libraries. they are not part of the core problems solved by the framework. The API should be small and easy to use

Build on standards

Don't reinvent solved problems, build on proven tech and standards. Protobuf for serialization, gRPC Streams for network transport, Consul for cluster membership

Message passing, not object passing

Don't try to hide serialization. Serialization is an explicit concern, messages should be clearly defined contracts and not arbitrary platform specific objects.

Be fast

Don't trade performance for magic API trickery.

Outcome

By following the above constraints, we gain some very valuable properties.

Fast-paced development and Maintainable code

We are mostly gluing existing blocks together, this means that the code is easy to understand, maintain and extend.

Cross-platform

We build on standards, platform agnostic technologies and a minimalistic codebase, this means that we can port the framework to other platforms.