Toybox ซึ่งเป็น multicall binary ที่รวมยูทิลิตี้บรรทัดคำสั่ง Linux หลายสิบตัวเข้าไว้ในไฟล์เดียว กำลังได้รับการยอมรับมากขึ้นจากผู้ผลิตอุปกรณ์ที่ต้องการหลีกเลี่ยงความซับซ้อนด้านใบอนุญาตของ BusyBox โปรเจกต์นี้ซึ่งสร้างโดย Rob Landley มีฟังก์ชันการทำงานเหมือนกับ BusyBox แต่มาพร้อมกับใบอนุญาต 0BSD ที่เสรีกว่า ซึ่งดึงดูดบริษัทต่างๆ ที่ต้องการหลีกเลี่ยงปัญหาการบังคับใช้ GPL
เครื่องมือนี้ทำงานเหมือนมีดพับสวิสสำหรับระบบฝังตัว แทนที่จะมีไฟล์แยกต่างหากสำหรับคำสั่งทั่วไปอย่าง cp, mv และ cat, Toybox จะรวมทุกอย่างไว้ในไบนารีเดียวที่เปลี่ยนพฤติกรรมตามวิธีการเรียกใช้ วิธีการนี้ช่วยประหยัดพื้นที่จัดเก็บและลดโอเวอร์เฮด ซึ่งเป็นประโยชน์สำคัญสำหรับอุปกรณ์ที่มีข้อจำกัดด้านหน่วยความจำ
การเปรียบเทียบ Toybox กับ BusyBox
คุณสมบัติ | Toybox | BusyBox |
---|---|---|
ใบอนุญาต | 0BSD (Public Domain) | GPL v2 |
การใช้งานหลัก | Android, ระบบฝังตัว | ระบบ Embedded Linux |
สถาปัตยกรรม | Multicall binary | Multicall binary |
การยอมรับจากองค์กร | สูง (เนื่องจากใบอนุญาตที่เปิดกว้าง) | ปานกลาง (ข้อกังวลเรื่อง GPL) |
รูปแบบการพัฒนา | Mailing list, upstream-first | แบบ open source ดั้งเดิม |
ใบอนุญาตขับเคลื่อนการยอมรับจากองค์กร
แรงจูงใจหลักในการสร้าง Toybox คือการแก้ไขข้อกังวลเรื่องใบอนุญาตของ BusyBox ที่ใช้ใบอนุญาต GPL บริษัทหลายแห่ง โดยเฉพาะในระบบนิเวศ Android ชอบใบอนุญาตแบบเสรีของ Toybox เพื่อหลีกเลี่ยงการบังคับใช้ GPL ที่อาจเกิดขึ้น สิ่งนี้ทำให้เกิดการยอมรับอย่างแพร่หลายในอุปกรณ์อิเล็กทรอนิกส์สำหรับผู้บริโภค โดยอุปกรณ์ Android ปัจจุบันใช้ Toybox เป็นชุดเครื่องมือบรรทัดคำสั่งมาตรฐาน
การอพิพากษ์เผยให้เห็นว่าการพิจารณาใบอนุญาตส่งผลกระทบอย่างมีนัยสำคัญต่อการเลือกใช้เทคโนโลยีในผลิตภัณฑ์เชิงพาณิชย์ แม้ว่านักพัฒนาบางคนในตอนแรกจะมองการเปลี่ยนแปลงจากใบอนุญาต copyleft ด้วยความสงสัย แต่หลายคนปัจจุบันยอมรับว่าเป็นทางออกที่ปฏิบัติได้สำหรับการนำเครื่องมือที่ดีกว่าเข้ามาใช้ในระบบที่เป็นกรรมสิทธิ์
การใช้งานในสมาร์ททีวีแตกต่างกันตามผู้ผลิต
สมาชิกชุมชนได้ค้นพบรูปแบบที่น่าสนใจในการที่ผู้ผลิตสมาร์ททีวีต่างๆ จัดการกับยูทิลิตี้บรรทัดคำสั่ง ในขณะที่สมาร์ททีวีที่ใช้ Android หลายรุ่นใช้ Toybox โดยค่าเริ่มต้น แพลตฟอร์มอื่นๆ แสดงการยอมรับแบบผสมผสาน ระบบปฏิบัติการ Tizen ของ Samsung ดูเหมือนจะใช้ Toybox แต่ webOS ของ LG ยังคงพึ่งพาการใช้งาน BusyBox แบบดั้งเดิม
การแยกส่วนนี้สะท้อนถึงภูมิทัศน์ embedded Linux ที่กว้างขึ้น ซึ่งผู้ผลิตทำการแลกเปลี่ยนที่แตกต่างกันระหว่างข้อกังวลด้านใบอนุญาต ความต้องการคุณสมบัติ และทรัพยากรการพัฒนา
เครื่องมือ Command-Line ของระบบปฏิบัติการ Smart TV
- Android TV: ใช้ Toybox (การใช้งานมาตรฐานของ Android)
- Samsung Tizen: ใช้ Toybox
- LG webOS: ใช้ BusyBox
- ระบบอื่นๆ ที่ใช้ Linux: การใช้งานแบบผสมผสานขึ้นอยู่กับความต้องการของผู้ผลิต
ความท้าทายด้านประสบการณ์ผู้ใช้และเอกสาร
แม้จะมีข้อดีทางเทคนิค แต่ Toybox ก็ยังถูกวิพากษ์วิจารณ์เรื่องวิธีการจัดทำเอกสาร ความคิดเห็นจากชุมชนชี้ให้เห็นว่าไฟล์ README ของโปรเจกต์ฝังคำอธิบายสำคัญว่า สิ่งนี้คืออะไร? ไว้ใต้คำแนะนำการสร้างที่ครอบคลุม ผู้ใช้มักจะมีปัญหาในการเข้าใจวัตถุประสงค์ของเครื่องมือโดยไม่ต้องอ่านหลายส่วนหรือพึ่งพาความคิดเห็นจากชุมชนเพื่อชี้แจง
Some nerds did it because top 3 scrolls on the link there is no description what is that thing.
โปรเจกต์ยังคงใช้สถาปัตยกรรม multicall binary เหมือนกับ BusyBox ซึ่ง symbolic links หรือชื่อโปรแกรมจะกำหนดว่ายูทิลิตี้ใดจะทำงาน รูปแบบการออกแบบนี้ซึ่งคุ้นเคยกับนักพัฒนา embedded ยังคงพิสูจน์ได้ว่ามีประสิทธิภาพสำหรับสภาพแวดล้อมที่มีข้อจำกัดด้านพื้นที่
การพัฒนาในอนาคตและการมีส่วนร่วมของชุมชน
การพัฒนา Toybox ปฏิบัติตามแบบจำลองโอเพนซอร์สแบบดั้งเดิมด้วยการอภิปรายใน mailing list และการส่งแพตช์ ผู้ดูแลส่งเสริมการพัฒนาแบบ upstream-first โดยเฉพาะสำหรับการเปลี่ยนแปลงที่เกี่ยวข้องกับ Android เพื่อให้มั่นใจว่าการปรับปรุงจะเป็นประโยชน์ต่อชุมชนที่กว้างขึ้นก่อนที่จะรวมเข้ากับการใช้งานของผู้จำหน่ายเฉพาะ
โค้ดเบสที่สะอาดและใบอนุญาตที่เสรีของโปรเจกต์ทำให้มีตำแหน่งที่ดีสำหรับการเติบโตอย่างต่อเนื่อง โดยเฉพาะเมื่อผู้ผลิตมากขึ้นแสวงหาทางเลือกอื่นแทนเครื่องมือที่มีใบอนุญาต GPL อย่างไรก็ตาม การบรรลุความเท่าเทียมกันของคุณสมบัติอย่างสมบูรณ์กับ BusyBox ยังคงเป็นความท้าทายที่ดำเนินต่อไป โดยสมาชิกชุมชนบางคนสังเกตว่าการอัปเดตเวอร์ชันช้ากว่าที่ต้องการ
อ้างอิง: toybox