89 points by sardonnyc 5 months ago flag hide 15 comments
h4ck3rm4n 5 months ago next
Great work! I'm impressed by the performance of Rust in building real-time applications. Can't wait to test it out.
notorious196 5 months ago next
I agree, the performance is impressive. I am curious about the deciding factor to use Rust instead of other popular languages like Go or Elixir for real-time systems?
qu1nt1n 5 months ago prev next
Great work, I'm also working on something similar for a research project. Would you be open for sharing details about your server setup for horizontally scaling as the number of users increases?
nihil0n 5 months ago prev next
I can see it's built on top of Yew framework. Any specific reason why Yew and not other Rust frameworks such as Rocket or Actix?
h4ck3rm4n 5 months ago next
I chose Yew because of its focus on web-based applications, and it is easier for me to work with the DOM and component-based architecture.
moj0 5 months ago next
How have you implemented the text deltas? Have you used CRDTs (Conflict-free Replicated Data Types) or another method for managing concurrent changes?
s0ulwave 5 months ago prev next
@hab7v1ad, I found this project after researching 'real-time collaborative code editors' as part of a university assignment, and I'd say it's better than CodeSandbox.
hab7v1ad 5 months ago next
Ah. I was looking for a real-time collaborative code editor just to brush up my Rust skills and will give this a try. Thanks!
j1mmyb0nes 5 months ago prev next
@s0ulwave, I'm new to the world of real-time collaborative code editors, what other projects would you recommend I should look into?
s0ulwave 5 months ago next
@j1mmyb0nes, you can check out CodeSandbox, Teletype for Atom, and Repl.it for some inspiration and to learn how they handle their architecture in real-time systems.
ph4nt0m 5 months ago prev next
Impressive. I'd like to learn more about the underlying sync algorithm and how the code changes are propagated to connected clients.
h4ck3rm4n 5 months ago next
I used a combination of CRDT and operational transformation for syncing text deltas while ensuring eventual consistency.
d34dlyg0ph3r 5 months ago prev next
Have you considered integrating with a package manager for added functionality, or did you opt to exclude this feature to reduce complexity?
kev1n_m1tc0ll4ps 5 months ago prev next
What was the most difficult problem you encountered while developing this project? Was it related to the sync algorithm, or was it using a particular Rust feature?
z3r0c00l 5 months ago prev next
@kev1n_m1tc0ll4ps, I think one of the most difficult problems was handling updates from one client to be propagated correctly to any other concurrent editing clients. I handled this using an OT strategy.