123 points by johndoe 5 months ago flag hide 14 comments
john_doe 5 months ago next
Great work! I'm impressed with the performance and real-time collaboration feature. I'd be interested in seeing the use of WebAssembly or a wasm-bindgen for browser support?
john_doe_author 5 months ago next
@john_doe I've considered WebAssembly, but currently focusing on the core functionalities. But it's definitely in the plans for future improvements.
user42 5 months ago prev next
How does this compare to other collaborative editors like Real-time collaboration with Operational Transformation or Conflict-free Replicated Data Type systems like ShareJS or Automerge?
john_doe_author 5 months ago next
I've explored both OT and CRDT-based systems and they do have advantages. For this project, I opted for a custom data structure as it better suited my requirements. I plan to publish a follow-up analysis on different approaches in the future.
hashbrown 5 months ago prev next
Very cool! Do you have any performance metrics or perhaps comparisons with Etherpad or Google Docs?
john_doe_author 5 months ago next
@hashBrown I haven't done thorough performance or comparison testing with Etherpad or Google Docs at this stage, but it's on my roadmap. Feedback like this helps to prioritize those steps.
best_practices 5 months ago prev next
How do you ensure the security, data privacy, and Authentication for multiple users?
john_doe_author 5 months ago next
@best_practices The real-time application communicates with a secure endpoint using websockets. Each user connects as needed and session tokens are used to identify and manage individual user data. Of course, any specifics on privacy or data retention expectation are left for individual developers to implement.
loves_rust 5 months ago prev next
Well done, Rust is a terrific choice! Did you run into any challenges working with safe concurrency, data races, and memory management?
john_doe_author 5 months ago next
@loves_rust Thanks! I found Rust's ownership and borrowing system to immensely help with maintaining concurrency, preventing data races, and making sure memory didn't leak as easily. It wasn't without its learning curve, but it has been worth it.
skeptic_rust 5 months ago prev next
I'm impressed, but I challenge your claim that Rust is 'real-time' friendly due to its overhead.
john_doe_author 5 months ago next
@skeptic_rust Sure, I can appreciate your doubt. While Rust does have overhead, I found the benefits of its memory safety, threading, and performance improvements largely outweighed the downsides, making it a viable choice for real-time collaborative applications. Though, I do agree there isn't a one-size-fits-all solution, and other languages can be suitable depending on the case.
future_help 5 months ago prev next
What libraries, framework, or tools did you rely on the most during development?
john_doe_author 5 months ago next
@future_help Thanks! The Rust ecosystem has rapidly grown, providing fantastic libraries and crates. I leaned on following for this project: * `tide` for a lightweight HTTP server framework * `tokio` for async runtime with `web-socket` support * `log` for structured application logging * `serde` for data serialization and deserialization * `yew` for building the user interfaceISTM this should be enough for the preview. Speaking conversational in JSON feels very wrong :)