ระบบ build ใหม่สำหรับโปรเจกต์ C และ C++ ได้เกิดขึ้น โดยมีเป้าหมายเพื่อทำให้กระบวนการพัฒนาง่ายขึ้นด้วยเครื่องมือที่ทันสมัย อย่างไรก็ตาม โปรเจกต์นี้ได้เผชิญกับปัญหาการตั้งชื่อที่สำคัญอย่างรวดเร็ว ซึ่งเน้นย้ำถึงความท้าทายในการสร้างเครื่องมือใหม่ในระบบนิเวศที่มีความแออัดอยู่แล้ว
สถานะ Roadmap ปัจจุบัน:
- ✅ การคอมไพล์และลิงก์พื้นฐานกับไฟล์หลายไฟล์
- 🔄 วางแผนไว้: การสร้างแบบเพิ่มเติม, การคอมไพล์แบบขนาน
- 🔄 วางแผนไว้: รองรับภาษา C++, Rust
- 🔄 วางแผนไว้: การสร้างเทมเพลตและตัวจัดการแพ็กเกจแบบรวม
การชนกันของชื่อสร้างวิกฤตเอกลักษณ์
โปรเจกต์นี้ซึ่งปัจจุบันเรียกว่า Seastar มีชื่อซ้ำกับ C++ framework ที่มีอยู่แล้วซึ่งใช้โดย ScyllaDB สำหรับแอปพลิเคชันเซิร์ฟเวอร์ประสิทธิภาพสูง สมาชิกชุมชนรีบชี้ให้เห็นความขัดแย้งนี้ โดยสังเกตว่า Seastar framework ที่มีอยู่แล้วที่ seastar.io ได้อยู่มาหลายปีแล้ว สถานการณ์กลายเป็นเรื่องซับซ้อนมากขึ้นเมื่อผู้ใช้ค้นพบโปรเจกต์ที่มีอยู่หลายโปรเจกต์ที่มีชื่อคล้ายกัน รวมถึงเครื่องมือต่างๆ ที่เกี่ยวข้องกับ C และฐานข้อมูล
นักพัฒนายอมรับความผิดพลาดนี้ โดยยอมรับว่าพวกเขาได้เลือก Seastar เป็นชื่อชั่วคราวและเพียงแค่ลืมที่จะเปลี่ยนมัน สิ่งนี้ได้จุดประกายการอภิปรายที่กว้างขึ้นเกี่ยวกับความยากลำบากในการตั้งชื่อโปรเจกต์ใหม่ในโลกของเครื่องมือพัฒนาที่อิ่มตัว
ความขัดแย้งของชื่อที่มีอยู่:
- Seastar C++ framework (seastar.io) - SDK เซิร์ฟเวอร์แบบ event-driven ของ ScyllaDB
- โปรเจกต์ต่างๆ ที่เกี่ยวข้องกับ C* และ Seestar
- เครื่องมือฐานข้อมูลและเซิร์ฟเวอร์หลายตัวที่มีชื่อคล้ายกัน
ปัญหาไก่กับไข่เกี่ยวกับ Dependencies
หนึ่งในการอภิปรายที่น่าสนใจที่สุดมุ่งเน้นไปที่การพึ่งพาของเครื่องมือนี้กับ Rust และ Cargo สำหรับกระบวนการ build ของตัวมันเอง นักวิจารณ์โต้แย้งว่าสิ่งนี้สร้างอุปสรรคสำหรับการยอมรับ โดยนักพัฒนาบางคนแสดงความลังเลที่จะติดตั้งเครื่องมือ Rust เพียงเพื่อ build ตัวจัดการโปรเจกต์ C/C++ ผู้สร้างปกป้องทางเลือกนี้ โดยอธิบายว่าเป็นการแลกเปลี่ยนที่จำเป็นเพื่อสร้างสภาพแวดล้อมการพัฒนาที่ดีกว่าโดยใช้เครื่องมือที่ทันสมัย
มันเป็นเหมือนสถานการณ์ไก่กับไข่ ผมต้องการสภาพแวดล้อมการพัฒนาที่เป็นมิตรเพื่อสร้างสภาพแวดล้อมการพัฒนาที่เป็นมิตร
คำถามเรื่อง dependency นี้สัมผัสกับความท้าทายพื้นฐานในการพัฒนาเครื่องมือ: จะ bootstrap เครื่องมือที่ดีกว่าได้อย่างไรโดยไม่ต้องให้ผู้ใช้ยอมรับระบบนิเวศใหม่ทั้งหมด
การวางตำแหน่งเทียบกับโซลูชันที่มีอยู่แล้ว
โปรเจกต์นี้เข้าสู่สนามที่ถูกครอบงำโดยเครื่องมือที่เป็นผู้ใหญ่เช่น CMake พร้อมกับ package managers เช่น Conan และ vcpkg การอภิปรายของชุมชนเปิดเผยความคิดเห็นที่หลากหลายเกี่ยวกับว่าจำเป็นต้องมีระบบ build อีกตัวหนึ่งหรือไม่ บางคนตั้งคำถามถึงความจำเป็น โดยชี้ให้เห็นว่า system package managers ได้ให้บริการนักพัฒนา C/C++ มาหลายทศวรรษแล้ว คนอื่นๆ ต้อนรับความพยายามที่จะนำความเรียบง่ายของเครื่องมือแบบ Rust มาสู่การพัฒนา C/C++
นักพัฒนาเน้นย้ำว่าเป้าหมายของพวกเขาไม่ใช่การแทนที่เครื่องมือที่มีอยู่ แต่เพื่อเติมเต็มช่องว่างและรวมฟังก์ชันที่จำเป็นเข้าไว้ในระบบเดียวที่เข้าถึงได้ง่ายกว่า อย่างไรก็ตาม สถานะ alpha ในช่วงแรกของโปรเจกต์และชุดคุณสมบัติพื้นฐานบ่งบอกว่ามันมีงานสำคัญข้างหน้าที่จะแข่งขันกับทางเลือกที่มีอยู่แล้ว
ความขัดแย้งเรื่องการตั้งชื่อและการอภิปรายเรื่อง dependency เน้นย้ำถึงความท้าทายที่กว้างขึ้นที่เครื่องมือพัฒนาใหม่เผชิญ: การโดดเด่นในตลาดที่แออัดในขณะที่หลีกเลี่ยงความขัดแย้งกับโปรเจกต์ที่มีอยู่ และการสร้างสมดุลระหว่างแนวทางที่ทันสมัยกับอุปสรรคการยอมรับในทางปฏิบัติ
อ้างอิง: Seastar