Toybox ได้รับความนิยมเพิ่มขึ้นในฐานะทางเลือกที่มีใบอนุญาตแบบเสรีกว่า BusyBox ในสมาร์ททีวีและอุปกรณ์ Android

ทีมชุมชน BigGo
Toybox ได้รับความนิยมเพิ่มขึ้นในฐานะทางเลือกที่มีใบอนุญาตแบบเสรีกว่า BusyBox ในสมาร์ททีวีและอุปกรณ์ Android

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