เครื่องมือ Build ใหม่สำหรับ C/C++ เผชิญปัญหาชื่อซ้ำกับ Framework ที่มีอยู่แล้ว

ทีมบรรณาธิการ BigGo
เครื่องมือ Build ใหม่สำหรับ C/C++ เผชิญปัญหาชื่อซ้ำกับ Framework ที่มีอยู่แล้ว

ระบบ 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