Sapphire: โปรแกรมจัดการแพ็คเกจใหม่ที่ขับเคลื่อนด้วย Rust ท้าทายความเป็นผู้นำของ Homebrew บน macOS

BigGo Editorial Team
Sapphire: โปรแกรมจัดการแพ็คเกจใหม่ที่ขับเคลื่อนด้วย Rust ท้าทายความเป็นผู้นำของ Homebrew บน macOS

Sapphire ซึ่งเป็นโปรแกรมจัดการแพ็คเกจทดลองใหม่ที่เขียนด้วย Rust ได้ปรากฏตัวขึ้นในฐานะทางเลือกที่น่าสนใจสำหรับโปรแกรมจัดการแพ็คเกจยอดนิยม Homebrew สำหรับ macOS แม้ว่าจะยังอยู่ในขั้นตอนอัลฟ่า โครงการนี้ได้จุดประกายให้เกิดการถกเถียงอย่างมากในชุมชนนักพัฒนาเกี่ยวกับอนาคตของการจัดการแพ็คเกจบนแพลตฟอร์มของ Apple และข้อดีของการเขียนเครื่องมือที่มีอยู่แล้วใหม่ด้วยภาษาที่มีประสิทธิภาพมากขึ้น

แรงจูงใจเบื้องหลัง Sapphire

ผู้สร้าง Sapphire ที่ใช้ชื่อว่า alexykn ในการสนทนา เริ่มสร้างเครื่องมือนี้สำหรับการใช้งานส่วนตัว เป้าหมายหลักของพวกเขาไม่จำเป็นต้องแข่งขันกับ Homebrew แต่เพื่อสร้างพื้นฐานสำหรับโซลูชันการจัดการแพ็คเกจและระบบแบบประกาศสำหรับ macOS นักพัฒนาแสดงความไม่พอใจกับประสิทธิภาพของ Homebrew เมื่อห่อหุ้มคำสั่งของมัน ซึ่งนำไปสู่การสร้าง Sapphire จากศูนย์โดยใช้ Rust

ผมต้องการและยังคงต้องการสร้างโซลูชันการจัดการแพ็คเกจและระบบแบบประกาศบนพื้นฐานนี้ ความคิดคือการเรียนรู้ภาษา rust ไปด้วย การมีพื้นฐานที่เขียนด้วยภาษาเดียวกันแทนการห่อหุ้มคำสั่งยังให้ความยืดหยุ่นมากขึ้นด้วย

สิ่งนี้เน้นย้ำถึงรูปแบบทั่วไปในชุมชนโอเพ่นซอร์ส ที่นักพัฒนามักสร้างเครื่องมือเพื่อแก้ปัญหาความต้องการเฉพาะของตนก่อนที่เครื่องมือเหล่านั้นจะพัฒนาไปสู่โซลูชันที่กว้างขึ้น

การพิจารณาด้านประสิทธิภาพและแนวทางทางเทคนิค

ผู้แสดงความคิดเห็นหลายคนมุ่งเน้นไปที่การเปรียบเทียบประสิทธิภาพระหว่าง Sapphire และ Homebrew ในขณะที่การทำงานของ Homebrew บางครั้งอาจรู้สึกช้า ผู้ใช้หลายคนและแม้แต่ผู้ดูแล Homebrew ชี้ให้เห็นว่าคอขวดไม่จำเป็นต้องเกี่ยวข้องกับ Ruby ในฐานะภาษาที่ใช้ในการพัฒนา แต่มาจากการตัดสินใจด้านสถาปัตยกรรมและข้อจำกัดด้านมารยาท

ผู้ดูแล Homebrew คนหนึ่งอธิบายว่าการดาวน์โหลดแบบขนานไม่ได้ถูกนำมาใช้ใน Homebrew ไม่ใช่เพราะข้อจำกัดทางเทคนิค แต่เนื่องจากความกังวลเกี่ยวกับการทำให้แหล่งดาวน์โหลดถูกใช้งานมากเกินไปด้วยคำขอพร้อมกันมากเกินไป การพิจารณานี้ยิ่งมีความสำคัญมากขึ้นเมื่อฐานผู้ใช้ของโปรแกรมจัดการแพ็คเกจเติบโตขึ้น

ปัจจุบัน Sapphire ใช้การดาวน์โหลดและการติดตั้งแบบขนาน ซึ่งมีส่วนทำให้มีข้อได้เปรียบด้านความเร็วที่รับรู้ได้ โครงการนี้มุ่งเน้นไปที่การสนับสนุนการติดตั้งขวด (แพ็คเกจที่คอมไพล์ไว้ล่วงหน้า) และ casks (แอปพลิเคชัน) ซึ่งครอบคลุมกรณีการใช้งานส่วนใหญ่สำหรับผู้ใช้ macOS

การตอบรับจากชุมชนและคำขอคุณสมบัติ

การตอบสนองของชุมชนต่อ Sapphire เป็นการผสมผสานระหว่างความกระตือรือร้นและความสงสัย ผู้ใช้หลายคนแสดงความไม่พอใจกับคำศัพท์ของ Homebrew ซึ่งใช้คำที่เกี่ยวข้องกับการชงเบียร์เช่น casks, kegs และ cellars แทนที่จะเป็นคำศัพท์การจัดการแพ็คเกจมาตรฐาน ผู้แสดงความคิดเห็นหลายคนเรียกร้องให้นักพัฒนา Sapphire ใช้การตั้งชื่อที่ชัดเจนกว่า

ความยาวของชื่อคำสั่งเป็นอีกประเด็นที่มีการโต้แย้ง โดยผู้ใช้หลายคนแนะนำว่า sapphire นั้นยาวเกินไปเมื่อเทียบกับ brew และแนะนำทางเลือกที่สั้นกว่าเพื่อปรับปรุงประสบการณ์ผู้ใช้

ผู้ใช้บางรายยังขอคุณสมบัติที่ Homebrew ขาดไปในปัจจุบัน เช่น การสนับสนุนผู้ใช้หลายคนที่ดีขึ้น การติดตั้งต่อผู้ใช้ และวิธีการจัดการแพ็คเกจแบบประกาศที่ดีกว่า คำขอเหล่านี้เน้นย้ำถึงพื้นที่ที่โปรแกรมจัดการแพ็คเกจใหม่อาจแตกต่างจาก Homebrew

สถานะการพัฒนาและแผนงาน

Sapphire ถูกระบุอย่างชัดเจนว่าเป็นซอฟต์แวร์อัลฟ่า โดยนักพัฒนาเตือนว่าเป็นการทดลอง อยู่ระหว่างการพัฒนาอย่างหนัก และอาจไม่เสถียร ความสามารถปัจจุบันของโครงการรวมถึงการติดตั้งและถอนการติดตั้งขวด การจัดการ cask การดาวน์โหลดและติดตั้งแบบขนาน การแก้ไขการพึ่งพาโดยอัตโนมัติ และการใช้งานเริ่มต้นของการสร้างสูตรจากซอร์ส

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

ในขณะที่ Sapphire สามารถจัดการงานติดตั้งแพ็คเกจได้หลายอย่างในปัจจุบัน แต่ก็เผชิญกับความท้าทายที่สำคัญในการทำซ้ำฟังก์ชันการทำงานของ Homebrew อย่างสมบูรณ์ โดยเฉพาะอย่างยิ่งเกี่ยวกับการสร้างแพ็คเกจจากซอร์ส นักพัฒนายอมรับว่าตัวแปลง Ruby-to-Rust แบบเต็มรูปแบบจะอยู่นอกขอบเขต โดยแนะนำว่าพวกเขาอาจตกลงใจใช้การตรวจจับระบบการสร้างโดยอัตโนมัติตามโครงสร้างไฟล์แทน

สถานะปัจจุบันของ Sapphire

  • การติดตั้งและถอนการติดตั้ง Bottle
  • การติดตั้งและถอนการติดตั้ง Cask
  • การดาวน์โหลดและติดตั้งแบบขนานเพื่อความเร็ว
  • การแก้ไขและติดตั้งการพึ่งพาโดยอัตโนมัติ
  • การเริ่มต้นใช้งานการสร้างสูตรจากซอร์สโค้ด
  • รองรับเฉพาะ ARM (อาจมีการเพิ่มการรองรับ x86 ในอนาคต)

โครงสร้างโปรเจกต์

  • sapphire-core: ไลบรารีหลักสำหรับการดึงข้อมูล การแก้ไขการพึ่งพา การแตกไฟล์ และอื่นๆ
  • sapphire-cli: อินเตอร์เฟซคอมมานด์ไลน์ที่ห่อหุ้มไลบรารีหลัก

แผนการพัฒนา

  1. คำสั่ง Upgrade สำหรับอัปเดตแพ็คเกจที่ติดตั้งแล้ว
  2. Cleanup สำหรับดาวน์โหลด เวอร์ชัน และแคชเก่า
  3. คำสั่ง Reinstall สำหรับการเทใหม่อย่างรวดเร็ว
  4. การแยก Prefix: รองรับ /opt/sapphire เป็นโครงสร้างแบบสแตนด์อโลน
  5. ตัวช่วย sapphire init สำหรับการเริ่มต้นสภาพแวดล้อม
  6. การแก้ไขบั๊กและการปรับปรุงความเสถียรอย่างต่อเนื่อง

บริบทที่กว้างขึ้นของการจัดการแพ็คเกจ

การอภิปรายเกี่ยวกับ Sapphire เน้นย้ำถึงวิวัฒนาการอย่างต่อเนื่องของการจัดการแพ็คเกจบน macOS Homebrew เองก็แทนที่โซลูชันก่อนหน้านี้เช่น MacPorts และ Fink โดยนำเสนอสิ่งที่หลายคนมองว่าเป็นประสบการณ์ผู้ใช้ที่ดีกว่า แม้จะมีการแลกเปลี่ยนทางเทคนิคก็ตาม

ผู้แสดงความคิดเห็นหลายคนสังเกตว่าโปรแกรมจัดการแพ็คเกจในอุดมคติจะรวมประโยชน์ด้านประสิทธิภาพของภาษาที่คอมไพล์เช่น Rust กับความยืดหยุ่นและความง่ายในการมีส่วนร่วมที่ระบบสูตรที่ใช้ Ruby ของ Homebrew มอบให้ คนอื่น ๆ ชี้ไปที่แนวทางทางเลือกเช่น Nix หรือ pkgx (โปรแกรมจัดการแพ็คเกจอีกตัวที่ใช้ Rust ที่กำลังพัฒนาโดยผู้สร้าง Homebrew คนเดิม)

เมื่อ macOS ยังคงพัฒนาต่อไป โดยเฉพาะอย่างยิ่งกับการเปลี่ยนผ่านไปสู่ Apple Silicon มีความต้องการอย่างชัดเจนสำหรับโซลูชันการจัดการแพ็คเกจที่สามารถปรับตัวให้เข้ากับการเปลี่ยนแปลงเหล่านี้ ในขณะที่แก้ไขจุดที่เป็นปัญหามานาน

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

อ้างอิง: Sapphire