- พัฒนาขึ้นเพื่อแก้ข้อจำกัดของเครื่องมือทำงานร่วมกันแบบเอกสารเดิม ๆ ที่ไม่เหมาะกับการเรียนการสอนหรือ pair programming โดยเป็น สภาพแวดล้อมพัฒนาแบบทำงานร่วมกันเรียลไทม์บนเบราว์เซอร์
- ออกแบบมาเพื่อทำลายภาพจำว่า “การเขียนโค้ดร่วมกันแบบเรียลไทม์นั้นซับซ้อน” ด้วย Zero Setup, ความเรียลไทม์อย่างแท้จริง, และ UI ที่ใช้งานง่าย ทำให้ใครก็เริ่มเขียนโค้ดร่วมกันได้ทันที
- รองรับ พรีวิวแบบเรียลไทม์ที่แม่นยำระดับพิกเซล: ทันทีที่เขียนโค้ด HTML/CSS/JS ก็สะท้อนบน WebView ทันที
- ฟีเจอร์การทำงานร่วมกัน: ใช้ Operational Transformation ทำให้ ผู้ใช้หลายคนพิมพ์พร้อมกันได้โดยไม่เกิดการชนกัน
- ตัวแก้ไขสไตล์ VS Code: ใช้ Monaco Editor มอบอินเทอร์เฟซที่คุ้นเคย พร้อมระบบเติมคำอัตโนมัติ การไฮไลต์ไวยากรณ์ และการแสดงข้อผิดพลาด
- มี เทอร์มินัล บนเบราว์เซอร์ที่สร้างด้วย Xterm.js เพื่อให้ตรวจสอบอินพุตและเอาต์พุตได้
- ใช้งานได้โดยไม่ต้องติดตั้ง: แค่มีเบราว์เซอร์ก็ใช้งานได้ทันที
- ไลเซนส์ GNU AGPL 3.0
สแตกเทคโนโลยี
- ฟรอนต์เอนด์: React, TypeScript, Tailwind CSS, Zustand, Xterm.js, Monaco Editor
- แบ็กเอนด์: Java Spring Boot, WebSocket, Jackson
- การซิงก์แบบเรียลไทม์: อัลกอริทึม Operational Transformation แบบคัสตอม
- การประมวลผลข้อความ: การประมวลผลข้อมูลแบบอะตอมมิกผ่าน Redis + Lua script
- โฮสติ้ง: ฝั่งฟรอนต์ใช้ Vercel, แบ็กเอนด์ใช้ AWS EC2, Redis ใช้ ElastiCache
Operational Transformation (OT)
- OT คือ เทคโนโลยีแกนหลักที่ทำให้สามารถแก้ไขเอกสารพร้อมกันแบบเรียลไทม์ได้ และ Google Docs ก็อาศัยแนวทางนี้
- CodeCafé ลงมือพัฒนา OT ด้วยตนเองเพื่อรองรับสิ่งต่อไปนี้:
- ตรวจจับและแปลงการป้อนข้อมูลพร้อมกัน
- คงเจตนาของผู้ใช้และแก้ไขความขัดแย้ง
- รักษาการซิงก์สถานะระหว่างไคลเอนต์
- ส่งผลให้ในสภาพแวดล้อมการทำงานร่วมกันแบบเรียลไทม์ มอบประสบการณ์ผู้ใช้ที่เป็นธรรมชาติและลื่นไหล
แผนในอนาคต
- ระบบยืนยันตัวตนผู้ใช้และฟังก์ชันบันทึกโปรเจกต์
- การรวมแชตเสียง/ข้อความ
- ฟังก์ชันเล่นซ้ำประวัติการเขียนโค้ด
- ขยายการรองรับภาษาให้หลากหลายยิ่งขึ้น
3 ความคิดเห็น
มี
code serverอยู่แล้ว เลยยังไม่ค่อยเห็นความแตกต่างชัดเจนนักแต่ถ้ามีเพิ่มแชตกับการเล่นย้อนประวัติการเขียนโค้ดได้ ก็น่าจะดีครับ
ทำให้นึกถึงฟีเจอร์ live share ของ vscode นะครับ
เมื่อก่อนก็มีทั้งแชตแบบเรียลไทม์ วางโค้ดแล้วแก้ไขพร้อมกันได้ด้วย
เอาไปใช้เมนเทอร์รุ่นจูเนียร์ ทำคอร์สออนไลน์ หรือแนะนำให้คนอื่นใช้ก็ได้ แต่ดูเหมือนสุดท้ายทุกคนก็ไม่ได้ใช้กันมากนัก
Zed ก็เช่นกัน ผมยังไม่แน่ใจว่าจะมีความต้องการเรื่องการทำงานพร้อมกันแบบเรียลไทม์มากแค่ไหนนะครับ ดูเหมือนว่าจะมีปัญหาตรงที่ทุกคนที่ทำงานร่วมกันต้องใช้เอดิเตอร์ตัวเดียวกันด้วย อีกทั้งซอฟต์แวร์ประเภทนี้ยังเป็นซอฟต์แวร์ที่ประสิทธิภาพและประสบการณ์ผู้ใช้สำคัญมากจริง ๆ ด้วย..