typelevel / governance

Typelevel governance
Creative Commons Attribution 4.0 International
8 stars 1 forks source link

Project Submission: cats-actors #144

Closed cloudmark closed 3 months ago

cloudmark commented 3 months ago

Project Name

cats-actors (https://github.com/suprnation/cats-actors/)

Project Short Description

Cats-Actors is a functional programming library that leverages Cats and Cats-Effect to provide a robust actor system. Combining the concurrency model of actors with functional programming principles, it enables high scalability and fault tolerance. Features include dynamic actor creation, context-based state management using become and unbecome, supervision strategies, and seamless integration with streaming libraries like fs2. This library is a comprehensive and efficient framework for building concurrent, distributed applications in a purely functional way, actively maintained and used in production by SuprNation.

Project Type

In accordance with the Typelevel Charter, I am proposing the project be a:

Project Management

All Typelevel projects follow the Typelevel Code of Conduct. Organization projects do not need a CODE_OF_CONDUCT.md file, as the Typelevel GitHub Organization one will automatically apply.

Affiliate Project Instructions

Affiliate projects should copy the following template into a `CODE_OF_CONDUCT.md` file in their repo: ``` # Code of Conduct Every member of our community has the right to have their identity respected. The Typelevel community is dedicated to providing a positive experience for everyone, regardless of age, gender identity and expression, sexual orientation, disability, neurodivergence, physical appearance, body size, ethnicity, nationality, race, or religion (or lack thereof), education, or socio-economic status. Everyone is expected to follow the [Typelevel Code of Conduct] when discussing the project on the available communication channels. ## Moderation If you have any questions, concerns, or moderation requests, please contact a member of the [Typelevel Code of Conduct Committee]. [Typelevel Code of Conduct]: https://typelevel.org/code-of-conduct [Typelevel Code of Conduct Committee]: https://typelevel.org/code-of-conduct#contact ``` If you would like to be an additionally point of contact for Code of Conduct reports, you can include your contact information in the Moderation section like so: ``` ## Moderation If you have any questions, concerns, or moderation requests, please contact a member of the [Typelevel Code of Conduct Committee] or reach out to a project moderator: - [Mark Galea](mailto:mark@suprnation.com) ``` In the event of a Code of Conduct report, affiliate projects should follow the instructions outlined in the [Enforcement Procedures Affiliate project processes][affiliate-processes] section.

Similarly, Typelevel projects must have an appropriate license, as specified in the Typelevel Charter. Please make sure that the project's license is on the approved list.

Additional Notes

Since Akka transitioned to a Business Source License, we sought alternatives but found none that met our needs. This led to the creation of Cats-Actors, which we now share with the functional programming community as a thank you for the projects that have contributed to our success. Cats-Actors is a functional implementation of the actor model using Cats-Effect and fibers, aligning with the actor specification commonly associated with Akka. This project is actively maintained and used in production by SuprNation. While Apache Pekko is another alternative, it does not approach the actor problem from a purely functional perspective, and we believe Cats-Actors fills this niche.

valencik commented 3 months ago

@typelevel/steering: please vote with reaction on the issue. 👍 for yes, 👎 for no, 👀 to abstain.

Voting open is open for five business days (through Friday, June 14th) and until quorum (6) is reached.

jducoeur commented 3 months ago

Very, very neat -- as the owner of a fairly antique Akka-based application that I have ambitions of eventually evolving towards cats-effect, I've been looking for a library like this for many years personally.

Does it handle cluster sharding? (If not, do you have ambitions to do so?) That has no bearing on bringing the project into TL, but I'm personally curious.

cloudmark commented 3 months ago

I appreciate your interest! Currently, Cats-Actors does not handle clustering, but the framework is designed to be extendable, with all actions managed via system mailbox messages (Create, Failure, etc.). At SuprNation, we manage sharding through an external upstream service, so clustering hasn't been a priority for us. However, if there is community interest, we are open to dedicating time and effort to implementing clustering features.

jducoeur commented 3 months ago

Makes sense! Personally, I tend to describe cluster sharding as the killer app of Akka -- the one thing that it unambiguously does better than any other alternative I've found. (I've managed event sourcing in other ways like Kafka, but they've all come out clumsier IMO.)

valencik commented 3 months ago

Thanks folks, the vote is approved!

Migration issue is here: https://github.com/typelevel/governance/issues/146