Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🙌 Community feedback needed 🙌 Roadmap planning #1429

Open
pblachut opened this issue Feb 4, 2022 · 18 comments
Open

🙌 Community feedback needed 🙌 Roadmap planning #1429

pblachut opened this issue Feb 4, 2022 · 18 comments

Comments

@pblachut
Copy link
Contributor

pblachut commented Feb 4, 2022

We are focusing our efforts on stability around the project and the API so we would like to adjust how new features are developed and to add more planning regarding introducing new features in the next coming releases.

The idea is to create a plan for one, two next releases OR for some fixed period of time, e.g. month or two. It all may depend on community engagement. The roadmap plan should contain a list of issues/features that are going to be released in the next versions.

To prepare such a plan it is needed to get as much feedback from the community and the existing Proto.Actor users as possible. Such a list might be prioritized then and put into our roadmap plan.

If you need some features in Proto.Actor or any enhancement or you see places that might improve it please add it in this issue.

@seungyongshim
Copy link

  • Persistence for MySQL
  • Documents for Virtual Actor Lifecycle

@marcinbudny
Copy link
Contributor

Hey @seungyongshim I assume by MySQL persistence you mean the event-sourced implementation? Can you explain what your use case for event sourcing with actors is? Could it be replaced with simply storing actor state as-is in the database?

@rogeralsing
Copy link
Contributor

Regarding persistence, we should aim to replace the SQL based providers with an abstraction using https://linq2db.github.io/
Which allows a unified way of interacting with most relational DBs out there

@mtsikevich
Copy link

Add rust support

@wldevries
Copy link

  • Increase API coverage of documentation
  • Include intellisense documentation or source link in nuget package

@alexeyzimarev
Copy link
Member

@wldevries SourceLink is included since a couple of years back

<PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0" PrivateAssets="All"/>

@wldevries
Copy link

👍 mistake on my side. I expected the "Go to definition" feature in Visual Studio to use Source Link. Unfortunately it does not.

dotnet/roslyn#24349

@seungyongshim
Copy link

seungyongshim commented Feb 4, 2022

@marcinbudny
Grain persistence case

@juliolitwin
Copy link

Could MagicOnion and MsgPack be a possibility? Mainly MessagePack, since it is faster serialization than protobuf, could increase more messages per second.

@DenizPiri
Copy link
Contributor

@juliolitwin We are using MessagePack together with Proto.Actor for quite a while, it works really well. We wrote a serializer, and instead of using typename, we use integer ids for each type we define. This allows multiple versions of the app to work together even after refactoring class names. Default protobuf serializer of Proto.Remote uses class name as the identifier, so it wouldn't support renaming structs.
However, MessagePack is slower than protobuf generator (if I remember correctly, it was about 30% slower when I benchmarked it a long time ago). On MessagePack repo, it states that it is faster than protobuf-net, which is a reflection-based protobuf serialization library, very different than what Proto.Remote uses.

If you are interested, we can open-source our MessagePack serializer. We added some nice things on top, such as:

  • Being able to serialize certain structs via NeftonsoftJson, or System.Text.Json
  • Automatically serializing Protobuf structs
  • Automatically serializing Apache Thrift structs
  • Serializing PID and ClusterIdentity types.

@DenizPiri
Copy link
Contributor

  • A much better reviewed+tested Proto.Cluster and Proto.Remote libs. I have been having issues with it for quite a while, unfortunately, when there are issues, there is very little I can do to get any meaningful data to diagnose the issue. Maybe a function like "string DumpInternalState()" could be nice, if it would dump all internal cluster/partitionIdentity states. That would at least allow us to create a Github issue with that data. Maybe that data could include historical changes too? Later, https://github.com/asynkron/protoactor-cluster-dashboard would be amazing, especially if it was made in a way that we can embed it into our process, rather than using it as a separate app.
  • Documentation on all public APIs. This is severely lacking. Code has little to no comments. Ideally, I would like to see a lot more internal comments in the critical and complicated sections of the code.
  • Meaningful commit messages. I assume using empty commit messages in work branches should be fine, but before merging, it would be great to rebase, and squash those together.

Collecting community feedback to determine the roadmap is super great! Big thanks to all the contributors of the project!

@seungyongshim
Copy link

@juliolitwin
Copy link

juliolitwin commented Feb 6, 2022

@DenizPiri

It will be awesome if you can opensrc MsgPack extensions, and thanks for sharing the information with us! :]

Now a question, I was worried when you said that you are having problems with Proto.Cluster and Proto.Remote. In your opinion and experiences, do you think the ProtoActor is not ready for production yet?

Anyway, thanks to the whole team @rogeralsing for being so active on the project, and I'm looking forward to the dashboard project. :)

I am very curious to know if anyone is already using ProActor in production and especially for GameServer.

Cheers!

@DenizPiri
Copy link
Contributor

@juliolitwin Just done: https://github.com/AhoyGames/Ahoy.Proto.MessagePack
Published it to nuget too. https://www.nuget.org/packages/Ahoy.Proto.MessagePack/
I will try to maintain it and make sure it follows the new Proto.Actor releases.
Ahoy.MessagePack.NewtonsoftJson, Ahoy.MessagePack.Protobuf, Ahoy.MessagePack.Thrift and Ahoy.MessagePack.SystemJson can be used without any Proto.Actor dependency.

As for Proto.Cluster and Remote. I believe Remote is very solid, had no issues with it so far. In terms of Proto.Cluster, had many issues before 0.27, at 0.27 it seems pretty solid so far. Only had one strange actor imbalance issue few days ago. Outside of that, no issues to speak of. However, overall I believe it would help the project a lot if those 2 projects and of course the core Proto.Actor lib would be a lot better tested overall.

We do use Actors for games in our game servers, but not Proto.Actor, our own in-process implementation. However, we recently started utilizing Proto.Actor for main services such as matchmaking, etc... We also utilize Proto.Actor for all network communication with game clients in each of our projects for quite a while.

Also big thanks from me to @rogeralsing, @mhelleborg, and all the other contributors. Looking forward to seeing how this project evolves and looking forward to utilizing it more and more! I believe there is a big potential! 💯

@JesOb
Copy link

JesOb commented Feb 7, 2022

Please create samples of simple systems (Hello World) that actually ready to work in Cloud with clustering not on local developer machine.

For .Net it is ASP Net Core Generic Host version sample that work alongside ASP itself and can work on Cloud infrastructure of few main Cloud Providers with at least 2 cluster nodes communicating:

  • Microsoft Azure
  • Google App Engine
  • Amazon AWS

It is really hard to make clustering work on real production environment (not on local production sandbox)

Actually few months trying to make clustering work on Google App Engine with no luck.
Nodes just can not see each other.

I believe it is not rare for developers to try move from pure ASP Net Core to Actor model on already working servers in some environment.

@rogeralsing rogeralsing pinned this issue Feb 7, 2022
@sudsy
Copy link
Contributor

sudsy commented Feb 9, 2022

I'd like to see more error details in the terminated message #535 to avoid duplication in code for error management.

I would second the need for "A much better reviewed+tested Proto.Cluster and Proto.Remote libs". It's happened several times that after an upgrade to the latest version of proto.actor I have to spend a fair bit of time working out why things are working differently. Expected in a pre 1.0 solution, but long term this needs to be addressed.

@volkanalkilic
Copy link

  • Increase the API coverage of documentation.
  • Provide more sample applications.
  • Add MemoryPack support.

@rogeralsing rogeralsing unpinned this issue Apr 28, 2023
@Pushcin
Copy link

Pushcin commented Jul 7, 2023

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests