y-crdt / ydotnet

.NET bindings for yrs.
MIT License
35 stars 9 forks source link

Planned features #35

Closed SebastianStehle closed 11 months ago

SebastianStehle commented 11 months ago

Nice project.

What is your planned scope? Are you also planning to publish ready to use packages for signalr or something that can easily be integrated into the server? Do you need help?

I am planning to integrate it into https://github.com/squidex/squidex

LSViana commented 11 months ago

Hi, @SebastianStehle!

Thanks for your interest in the project, it's nice to see that! First, I'd like to highlight that I'm working on this as a secondary project so the rhythm of development & maintenance is currently slower than I'd like it to be.

What is your planned scope?

The long-term plans for the project are to support all features exposed by Yrs and make them available on C#. Currently, only the "core" features of the library have been implemented.

I'm currently working on:

The roadmap for this project is available in the YDotNet Implementation board. If you're interested in something specific that's not been added there, please let me know.


Are you also planning to publish ready to use packages for signalr or something that can easily be integrated into the server?

Yes, definitely! I intend to publish NuGet packages to allow C# code to connect with other Yjs clients through networks. I can't tell you exactly right now but I believe the first network provider will be for WebSockets (so that web apps can use the y-websocket, for example). Would this fit for your use case?


Do you need help?

Yes! Right now it'd be nice to get some help for either one of these tasks:

If you're available to contribute, feel free to make a fork and submit a PR.

SebastianStehle commented 11 months ago

Yes, definitely! I intend to publish NuGet packages to allow C# code to connect with other Yjs clients through networks. I can't tell you exactly right now but I believe the first network provider will be for WebSockets (so that web apps can use the y-websocket, for example). Would this fit for your use case?

Yes, I am not biased here. But then you have to solve a few topics, that are already handled by signalr, such as scaling and a backplane. Should not be too complicated.

SebastianStehle commented 11 months ago

Would you explain me the motivation of this project versus ycs and why are you not creating a wrapper over yrs (https://github.com/y-crdt/y-crdt). Seems to have the best performance at the moment.

LSViana commented 11 months ago

Hi, @SebastianStehle!

Let me answer your questions in parts to explain each part clearly:

(...) why are you not creating a wrapper over yrs (...)

This project is a wrapper over Yrs. It exposes C# bindings that calls into Rust code.

Would you explain me the motivation of this project versus ycs (...)

The Ycs project original author no longer maintains it and the codebase is too large to be kept up-to-date.

Besides that, since there's a central Rust implementation now, it doesn't make sense to keep Ycs anymore because the effort to maintain two codebases with the same features over time would be too big.

Yes, I am not biased here. But then you have to solve a few topics, that are already handled by signalr, such as scaling and a backplane. Should not be too complicated.

Sure, this will all be taken into consideration when the time comes. I'll add it to the list of future plans for the project.


If you'd like to know anything else, please let me know.

LSViana commented 11 months ago

@SebastianStehle If there's nothing else to add here, feel free to close this thread or I'll close it myself within a couple of days.