1 คะแนน โดย GN⁺ 2024-01-23 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Diversion คือระบบควบคุมเวอร์ชันที่มุ่งเป้าไปยังรีโพซิทอรีขนาดใหญ่และการทำงานร่วมกันในยุคคลาวด์ โดยผู้ใช้กลุ่มแรกคือผู้พัฒนาเกมที่ต้องการความเรียบง่ายและความสามารถในการขยายระบบ
  • Git ถูกสร้างขึ้นในปี 2005 ภายใต้สภาพแวดล้อมที่เครือข่ายช้า โปรเจ็กต์มีขนาดเล็ก และยังไม่มีคลาวด์ จึงมองว่ามีข้อจำกัดเมื่อเทียบกับ ขนาดของรีโพซิทอรี ไฟล์ และจำนวนผู้ใช้พร้อมกัน ในปัจจุบัน
  • ระบบควบคุมเวอร์ชันภายในของ Google และ Meta รวมถึงการที่บริษัทบางแห่งในอุตสาหกรรมพัฒนาเกม เซมิคอนดักเตอร์ และบริการการเงินยังใช้ SVN และ Perforce ถูกยกเป็นหลักฐานว่า Git ไม่ได้เหมาะกับทุกองค์กร
  • Diversion ทำงานบนสตอเรจแบบกระจาย ฐานข้อมูล, REST API และโครงสร้างพื้นฐานคลาวด์แบบ serverless โดยจัดการงานของรีโพซิทอรี เช่น commit, branch, merge ผ่านการเรียก API
  • ขณะนี้ให้บริการแบบ โอเพนเบต้า ทีมขนาดเล็กสามารถเริ่มใช้งานได้ฟรี และกำลังปรับปรุงด้านความเร็ว การผสานกับ CI ปลั๊กอินสำหรับ IDE และเกมเอนจิน รวมถึงการใช้งานให้ดีขึ้น

ข้อจำกัดของ Git ที่ Diversion มุ่งแก้

  • Diversion คือ ระบบควบคุมเวอร์ชันแบบคลาวด์เนทีฟ ที่ให้บริการบน diversion.dev
    • เดโมแบบรวดเร็วมีให้ดูใน วิดีโอ YouTube
    • ผู้ใช้กลุ่มแรกคือผู้พัฒนาเกม และมองว่าจุดแข็งคือความเรียบง่ายและความสามารถในการขยายระบบ
  • Git มีบทบาทสำคัญต่อวิวัฒนาการของการพัฒนาซอฟต์แวร์ตลอด 18 ปีที่ผ่านมา แต่ถูกสร้างขึ้นให้เหมาะกับสภาพแวดล้อมในปี 2005 จึงไม่ใช่เครื่องมือที่สมบูรณ์แบบสำหรับผู้ใช้ทุกคน
  • ข้อเสียใหญ่ที่สุดปรากฏในรูปของ ความสามารถในการขยายที่จำกัด ในด้านขนาดรีโพซิทอรี ขนาดไฟล์ และจำนวนผู้ใช้พร้อมกัน
    • Google และ Meta จึงสร้างระบบควบคุมเวอร์ชันของตนเอง
    • บริษัทขนาดใหญ่บางแห่งในวงการพัฒนาเกม เซมิคอนดักเตอร์ และบริการการเงินยังคงใช้เครื่องมือรุ่นเก่าอย่าง SVN และ Perforce
  • ความซับซ้อนของ Git ยังอาจนำไปสู่การสูญเสียงานจริงได้
    • มีกรณีในสตาร์ทอัพก่อนหน้า ที่นักวิทยาศาสตร์ข้อมูลใช้คำสั่ง Git ผิด ทำให้งานของทีมตลอดหนึ่งเดือนหายไป
    • หลังจากนั้นไม่กี่ชั่วโมงจึงกู้คืนได้จากโคลนของรีโพซิทอรีที่ยังไม่ได้อัปเดต
  • อย่างไรก็ตาม ฟีเจอร์ branch และ merge ของ Git มีส่วนอย่างมากต่อแนวทางการพัฒนาสมัยใหม่ เช่น feature branch และ CI/CD รวมถึงการเพิ่มความเร็วของนักพัฒนา

วิธีทำงานบนคลาวด์

  • Diversion มุ่งเป็นระบบควบคุมเวอร์ชันที่ยังคงฟีเจอร์ branch ของ Git ไว้ แต่ใช้งานง่ายกว่า เร็วกว่า และขยายได้มากกว่า
  • นำแนวคิด การทำงานร่วมกันแบบเรียลไทม์ ของเครื่องมือคลาวด์สมัยใหม่มาปรับใช้กับการควบคุมเวอร์ชัน
    • สามารถแชร์สถานะระหว่างทำงานได้เหมือน Google Docs และ Figma
    • แม้นักพัฒนาไม่ได้อยากเปิดเผยสิ่งที่กำลังทำอยู่เสมอไป แต่ก็อาจมีประโยชน์ในการรับฟีดแบ็กก่อน commit ตรวจจับและป้องกัน merge conflict หรือดูว่าคนอื่นกำลังแก้ส่วนใดของโค้ดเบส
  • โครงสร้างภายในอิงกับสตอเรจแบบกระจาย ฐานข้อมูล, REST API และโครงสร้างพื้นฐานคลาวด์แบบ serverless
    • งานทั้งหมดของรีโพซิทอรี เช่น commit, branch, merge ถูกจัดการผ่าน การเรียก API
    • เดสก์ท็อปไคลเอนต์ซิงก์สถานะระหว่างทำงานก่อน commit ขึ้นคลาวด์แบบเรียลไทม์ด้วย
    • ผู้ใช้เข้าถึงได้ผ่าน CLI แบบโต้ตอบ, Web UI และปลั๊กอิน IDE
    • ปลั๊กอิน IDE ปัจจุบันรองรับ JetBrains และจะมีการเพิ่มเพิ่มเติมในอนาคต
    • Web UI สามารถทำงานพื้นฐานส่วนใหญ่ได้โดยไม่ต้องติดตั้งเดสก์ท็อปไคลเอนต์
  • เข้ากันได้กับ Git และสามารถซิงก์กับรีโพซิทอรี Git ที่มีอยู่ได้
    • commit ใหม่ของ Diversion จะเข้าไปใน Git และ commit ใหม่ของ Git ก็จะเข้าไปใน Diversion ด้วย

แผนการเปิดเผยและเงื่อนไขการใช้เบต้า

  • มีแผนจะเปิดเป็นโอเพนซอร์สเมื่อโค้ดเบสมีความสมบูรณ์มากขึ้น และมีการสร้างไดเรกทอรีรีโพซิทอรีโอเพนซอร์สบนเว็บไซต์แล้ว
    • โค้ดของ Diversion เองก็จัดการอยู่บน Diversion
  • ขณะนี้สามารถใช้งานได้ในรูปแบบ โอเพนเบต้า และเริ่มใช้งานแบบ self-service ได้โดยกด Get Started
    • ใช้งานได้โดยไม่ต้องคุยกับใคร
    • ฟรีสำหรับทีมขนาดเล็ก และมีข้อมูลราคาอยู่ที่ pricing
  • รายการปรับปรุงที่กำลังดำเนินอยู่คือ ความเร็ว, การผสานกับ CI, ปลั๊กอินสำหรับ IDE และเกมเอนจิน รวมถึงการปรับปรุงการใช้งานอื่น ๆ

1 ความคิดเห็น

 
GN⁺ 2024-01-23
ความคิดเห็นบน Hacker News
  • Cloud-Native Git Alternative

    • คำว่า cloud-native เป็นรายละเอียดด้านการนำไปใช้จริง และไม่สำคัญนัก เว้นแต่จะมีแผนขายระบบควบคุมเวอร์ชัน (VCS) แบบใหม่เป็นซอฟต์แวร์แพ็กเกจแทนที่จะเป็นบริการ
    • ยังไม่ชัดเจนว่า cloud-native จะแก้ปัญหาในชีวิตประจำวันของผู้ใช้ Git ได้อย่างไร
  • The biggest drawback of Git is its limited scalability

    • สงสัยว่าสัดส่วนของผู้ใช้ที่เจอปัญหาด้านการขยายตัวของ Git มีมากแค่ไหน
    • เคยทำงานในบริษัทที่มีวิศวกรตั้งแต่หลักร้อยถึงหลักหมื่นคน แต่โดยส่วนตัวไม่เคยเจอปัญหาด้านการขยายตัวของ Git
    • การใช้ monorepo อาจทำให้เกิดปัญหาด้านการขยายตัวได้ แต่ตัว monorepo เองก็ยังเป็นประเด็นถกเถียง
  • Diversion is built on top of distributed storage and databases, accessible via REST API, and runs on serverless cloud infrastructure. Every repository operation is an API call (commit, branch, merge etc.).

    • ในมุมผู้ใช้ แทบไม่ได้สนใจโปรโตคอลภายใน
    • เมื่อใช้ CLI หรือ UI โปรโตคอลภายในไม่ได้สำคัญ
    • สนใจแนวคิด VCS ที่อิงกับ abstract syntax tree (AST)
  • most notably in games development, semiconductors and financial services are still using legacy tools like SVN and Perforce

    • ควรโฟกัสไม่ใช่ความซับซ้อนของ Git แต่เป็นการที่ Git ไม่เหมาะกับการจัดการทรัพย์สินไบนารีขนาดใหญ่
    • ยกคำพูดของ Linus Torvalds ที่ว่า Git จัดการไฟล์ขนาดใหญ่ได้ไม่ดี
  • it was built for a very different world in 2005 (slow networks, much smaller projects, no cloud)

    • Git ถูกออกแบบมาในปี 2005 ซึ่งเป็นสภาพแวดล้อมที่ต่างจากปัจจุบัน ทั้งเครือข่ายช้า โปรเจ็กต์เล็กกว่า และยังไม่มีคลาวด์
    • Git เป็นแบบกระจายศูนย์ จึงควรทำงานได้ดีในสภาพแวดล้อมคลาวด์ด้วย
    • กรณีที่นักวิทยาศาสตร์ข้อมูลทำลายงานไปหนึ่งเดือนด้วยคำสั่ง Git ที่ผิด ดูเหมือนเป็นปัญหาด้านการตั้งค่ามากกว่า
  • In our previous startup, a data scientist accidentally destroyed a month’s work of his team by using the wrong Git command

    • ควรเน้นที่ผลิตภัณฑ์ของตัวเองมากกว่าการวิจารณ์ Git
    • Git เป็น VCS แบบกระจายศูนย์ และปัญหาอยู่ที่การพยายามใช้งานมันแบบรวมศูนย์โดยไม่มีระบบสำรอง
  • git is bad we're better

    • ในฐานะนักพัฒนาเกม ยังไม่รู้สึกสนใจกับข้อเสนอที่นำเสนอมา
    • เวิร์กโฟลว์สมัยใหม่ที่ใช้ Git LFS ทำงานได้ราบรื่น
    • มีการนำเสนอ cloud-native เป็นฟีเจอร์ แต่ขาดรายละเอียดเรื่องการรองรับ on-premise และ private cloud แบบโฮสต์เอง
    • ศิลปินมักชอบฟีเจอร์ file locking แต่การใช้การล็อกกับ P4 streams และ branches ทำได้ยาก
  • File locking across branches - coming soon!

    • ฟีเจอร์ file locking กำลังจะมาเร็ว ๆ นี้ แต่ข้อเสนอโดยรวมยังต้องปรับปรุงอีกมาก
  • Git cli UX made be not great, but the git datastructure of representing commits, branches, trees and blobs as immutable pointers and merkle trees is a phenomenal invention.

    • โครงสร้างข้อมูลของ Git เป็นสิ่งประดิษฐ์ที่ยอดเยี่ยม แต่ไม่เห็นด้วยกับแนวคิดที่ให้ทุกคำสั่งทำงานผ่าน REST API
    • จุดแข็งของ Git คือสามารถทำงานแบบ partial clone ได้แม้ออฟไลน์ และค่อยซิงก์ commit เมื่อกลับมาออนไลน์
  • In our previous startup, a data scientist accidentally destroyed a month’s work of his team by using the wrong Git command.

    • ยอมรับว่าควรปรับปรุง usability ของ Git แต่ปัญหาที่เกิดขึ้นดูเหมือนเป็นความล้มเหลวด้านการปฏิบัติการพัฒนา
    • จำเป็นต้องมีเส้นทางการเรียนรู้ที่ง่ายขึ้นเพื่อแนะนำข้อดีของ source control ให้คนที่ไม่ใช่โค้ดเดอร์ โดยยังคงความสามารถขั้นสูงไว้ได้
  • The world needs a git alternative.

    • โลกต้องการทางเลือกแทน Git
    • Git มีข้อจำกัดเมื่อมีหลายคน commit ลง repository เดียวกันทุกวัน
    • ถ้า Git จัดการ rebase ได้ดีกว่านี้ คาดว่าความเร็วการทำงานของทีมพัฒนาซอฟต์แวร์จะเพิ่มขึ้น 20%
  • I get that enterprises will buy anything with "Cloud" or "AI" in the name, but VCS doesn't have anything to do with the cloud.

    • มีมุมมองว่าองค์กรจะซื้อทุกอย่างที่มีคำว่า "Cloud" หรือ "AI" อยู่ในชื่อ
    • สิ่งสำคัญคือการโฟกัสที่การแก้ปัญหา มากกว่าตัวเทคโนโลยี
    • ถ้าประสบการณ์ผู้ใช้ไม่ดี รายละเอียดทางเทคนิคก็ไม่มีความหมาย
    • จำเป็นต้องมีกลยุทธ์การขายสำหรับผลิตภัณฑ์ที่มอบประสบการณ์ซึ่งช่วยลดเวลาพัฒนา ลดข้อผิดพลาด และปรับปรุงการทำงานร่วมกัน