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
: อินเตอร์เฟซคอมมานด์ไลน์ที่ห่อหุ้มไลบรารีหลัก
แผนการพัฒนา
- คำสั่ง
Upgrade
สำหรับอัปเดตแพ็คเกจที่ติดตั้งแล้ว Cleanup
สำหรับดาวน์โหลด เวอร์ชัน และแคชเก่า- คำสั่ง
Reinstall
สำหรับการเทใหม่อย่างรวดเร็ว - การแยก Prefix: รองรับ
/opt/sapphire
เป็นโครงสร้างแบบสแตนด์อโลน - ตัวช่วย
sapphire init
สำหรับการเริ่มต้นสภาพแวดล้อม - การแก้ไขบั๊กและการปรับปรุงความเสถียรอย่างต่อเนื่อง
บริบทที่กว้างขึ้นของการจัดการแพ็คเกจ
การอภิปรายเกี่ยวกับ Sapphire เน้นย้ำถึงวิวัฒนาการอย่างต่อเนื่องของการจัดการแพ็คเกจบน macOS Homebrew เองก็แทนที่โซลูชันก่อนหน้านี้เช่น MacPorts และ Fink โดยนำเสนอสิ่งที่หลายคนมองว่าเป็นประสบการณ์ผู้ใช้ที่ดีกว่า แม้จะมีการแลกเปลี่ยนทางเทคนิคก็ตาม
ผู้แสดงความคิดเห็นหลายคนสังเกตว่าโปรแกรมจัดการแพ็คเกจในอุดมคติจะรวมประโยชน์ด้านประสิทธิภาพของภาษาที่คอมไพล์เช่น Rust กับความยืดหยุ่นและความง่ายในการมีส่วนร่วมที่ระบบสูตรที่ใช้ Ruby ของ Homebrew มอบให้ คนอื่น ๆ ชี้ไปที่แนวทางทางเลือกเช่น Nix หรือ pkgx (โปรแกรมจัดการแพ็คเกจอีกตัวที่ใช้ Rust ที่กำลังพัฒนาโดยผู้สร้าง Homebrew คนเดิม)
เมื่อ macOS ยังคงพัฒนาต่อไป โดยเฉพาะอย่างยิ่งกับการเปลี่ยนผ่านไปสู่ Apple Silicon มีความต้องการอย่างชัดเจนสำหรับโซลูชันการจัดการแพ็คเกจที่สามารถปรับตัวให้เข้ากับการเปลี่ยนแปลงเหล่านี้ ในขณะที่แก้ไขจุดที่เป็นปัญหามานาน
ในขณะที่ Sapphire ยังอยู่ในช่วงเริ่มต้นและเผชิญกับความท้าทายที่สำคัญก่อนที่จะสามารถแทนที่ Homebrew ได้อย่างแท้จริง การพัฒนาของมันแสดงถึงระบบนิเวศของนวัตกรรมที่ดีซึ่งทำให้เครื่องมือนักพัฒนาพัฒนาต่อไป ไม่ว่าจะประสบความสำเร็จในฐานะตัวแทน Homebrew หรือเพียงแค่แนะนำแนวคิดที่ปรับปรุงภูมิทัศน์การจัดการแพ็คเกจที่กว้างขึ้น โครงการเช่น Sapphire มีบทบาทสำคัญในการผลักดันสถานะของศิลปะให้ก้าวหน้า
อ้างอิง: Sapphire