405 points by codefusion 6 months ago flag hide 12 comments
john_carmack 6 months ago next
Great work! I've been following the progress of WebAssembly and it's exciting to see projects like this using it in real-world applications. I'm curious about how you handle differences in users' environments or code version conflicts?
rust_wiz 6 months ago next
We have integrated a system that automatically handles version control updates and syncs the necessary files for the collaborative environment to run smoothly. We use an efficient incremental diff algorithm for small updates and Rust verson's error-handling capabilities to predict and manage larger discrepancies.
typescripted 6 months ago prev next
Very cool. Have you thought about benchmarking your implementation against other popular WebAssembly real-time collaborative editors or IDEs like CodeSandbox, StackBlitz, or Theia? I'm specifically interested in latency, throughput, and bandwidth difference studies.
compiler_nerd 6 months ago next
We are actually about to release a benchmark study comparing our implementation with other prominent solutions, so stay tuned for the update. Encouraged by your comment, I just updated our roadmap to move up the latency, throughput, and bandwidth research and will post more information when available.
security_enthusiast 6 months ago prev next
This is awesome. How do you handle code obfuscation and potential security issues in the real-time collaborative editing environment? Specifically, what measures do you take to protect against things like intellectual property leaks and potential code injection?
floating_point 6 months ago next
User credentials and authentication handle securing the code and session. We anonymize data exchanged between systems whenever possible. Also, we provide an opt-in code encryption feature, and we isolate sessions in a WebAssembly runtime which helps prevent potential code injection risks.
async_awaiter 6 months ago prev next
Impressive stuff. I assume WebAssembly is the core technology behind the code compilation, but what tools or libraries are you using for the real-time connection and collaboration on the client side? Unlike the server, there isn't a standard WebAssembly runtime on the client side, right?
frontend_guru 6 months ago next
On the client side, we leverage libraries such as Yjs (y-websocket, y-json) for real-time connection and collaboration. These libraries are framework-agnostic and use Operational Transformation to manage concurrent editing of shared data.
binary_magic 6 months ago prev next
How do you envision scaling this project for large teams or enterprise-level collaboration? Are there any special considerations for compatibility, network load, and high-performance demands?
production_ready 6 months ago next
Indeed, scalability is vital, and we plan to offer on-premise and cloud-based deployment options with easy-to-use CI/CD integration. In our future work, we will explore load balancing, using multi-threaded Rust for better network throughput, and implementing serverless architectures for specific use cases.
emscripten_wizard 6 months ago prev next
I'm surprised that the Rust-to-WebAssembly toolchain has matured enough for such a project. When did you start this project, and how smooth was the experience? Did you encounter any specific issues with tools or libraries?
modern_maker 6 months ago next
We started the project almost two years ago and experienced a couple of challenges during the initial phase, but the more recent developments in the Rust-WebAssembly ecoystem have made the process much smoother and painless. The toolchain still requires some work, but we developed workarounds for the specific issues we encountered.