Fits on a Floppy - แถลงการณ์เพื่อซอฟต์แวร์ขนาดเล็ก
(fitsonafloppy.com)- ซอฟต์แวร์พองตัว คือการเปลี่ยนแปลงที่ทำให้แอปซึ่งครั้งหนึ่งเคยอยู่ในฟลอปปีดิสก์แผ่นเดียว กลับต้องการพื้นที่เก็บข้อมูลระดับกิกะไบต์และเวลารอนาน
- ฟลอปปีดิสก์ 1.44MB ไม่ใช่ข้อจำกัดแบบขำ ๆ แต่เป็นมาตรฐานของความยับยั้งชั่งใจ และเป็นสมมติฐานว่าเครื่องมือที่มีจุดประสงค์เดียวก็ทำให้เล็กพอได้
- ซอฟต์แวร์ขนาดเล็กมุ่งไปที่การดาวน์โหลดที่รวดเร็ว เปิดใช้งานได้ทันที การใช้ หน่วยความจำ·CPU ต่ำ อายุแบตเตอรี่ที่ยาวนาน และการรองรับระบบรุ่นเก่า
- เน้นหลักการ ใช้เฉพาะ native หลีกเลี่ยงการพองตัวของ dependency และโค้ดทุกส่วนต้องมีเหตุผลที่ต้องมีอยู่
- Floppy Badge จะติดให้กับแอปที่มีขนาดดาวน์โหลดรวมต่ำกว่า 1.44MB โดยหัวใจสำคัญไม่ใช่ความโหยหาอดีต แต่คือทัศนคติในการสร้างที่ให้ความสำคัญกับทุกไบต์
มาตรฐานของซอฟต์แวร์ขนาดเล็ก
- ด้วย ซอฟต์แวร์พองตัว แอปที่เคยบรรจุลงในฟลอปปีดิสก์แผ่นเดียวได้ ตอนนี้กลับต้องการพื้นที่เก็บข้อมูลระดับกิกะไบต์ เวลารอนาน และความอดทนเกินควร
- ฟลอปปีดิสก์ 1.44MB ถูกใช้ไม่ใช่ในฐานะข้อจำกัดขำ ๆ แต่เป็นมาตรฐานของความยับยั้งชั่งใจ
- หากซอฟต์แวร์ในอดีตที่ใช้บริหารทั้งธุรกิจยังใส่ในความจุเท่านี้ได้ เครื่องมือสมัยใหม่ที่โฟกัสงานเฉพาะอย่างก็ย่อมทำให้เล็กพอได้เช่นกัน
- ซอฟต์แวร์ขนาดเล็กตั้งเป้าให้ดาวน์โหลดได้รวดเร็ว เปิดแล้วใช้งานได้ทันที และลดการโหลดที่ไม่จำเป็น
- มันเคารพอุปกรณ์ของผู้ใช้ด้วยการใช้หน่วยความจำและ CPU ต่ำ ใช้แบตเตอรี่ได้นานขึ้น และรองรับระบบรุ่นเก่า
- ย้ำหลักการ ใช้เฉพาะ native หลีกเลี่ยงการพองตัวของ dependency และโค้ดทุกส่วนต้องมีเหตุผลที่ต้องมีอยู่
- ซอฟต์แวร์ที่ทำสิ่งเดียวได้ดีจะมีฟังก์ชันที่โฟกัสมากขึ้น บั๊กน้อยลง และอยู่ได้นานกว่า
วิธีวัดและเจตนา
- Floppy Badge จะติดให้กับแอปที่มีขนาดดาวน์โหลดรวมต่ำกว่าความจุของฟลอปปีดิสก์มาตรฐานขนาด 3.5 นิ้วที่ 1.44MB
- ขนาดที่แสดงบนดิสก์อ้างอิงจาก ขนาด universal binary ที่แพลตฟอร์มเผยแพร่ของนักพัฒนารายงาน
- ขนาดที่ดาวน์โหลดลงอุปกรณ์จริงอาจเล็กกว่าขนาดที่แสดง เพราะ platform thinning จะส่งเฉพาะส่วนที่จำเป็นต่อฮาร์ดแวร์นั้น ๆ
- แก่นสำคัญไม่ได้อยู่ที่ความโหยหาอดีตต่อฟลอปปีดิสก์ แต่คือ ทัศนคติในการสร้าง ที่เชื่อว่าทุกไบต์สำคัญ ข้อจำกัดก่อให้เกิดความคิดสร้างสรรค์ และซอฟต์แวร์ควรมีน้ำหนักเบา
- มีตัวอย่างที่เกี่ยวข้องคือเบื้องหลังการสร้างเกมเจ้าของรางวัลขนาด 39KB YOYOZO
1 ความคิดเห็น
ความคิดเห็นจาก Lobste.rs
ในทางกลับกัน ถ้าจะ static link เพื่อการพกพา หรือใช้ภาษาที่ runtime ไม่ได้มีอยู่ทั่วไปอย่าง Janet ก็จะเกินเกณฑ์นี้ไปไกล
โปรเจ็กต์ของฉัน Decker พยายามลด external dependency ให้มากที่สุด แต่เพื่อความพกพาจึงพึ่งพา SDL และ SDL_image และแจกมาพร้อมกัน ตอนนี้รีลีสสำหรับ Apple Silicon มีขนาด 6MB เมื่อบีบอัด โดยในนั้นประมาณ 4.6MB คือ dylib ของ SDL และ SDL_image ส่วนเว็บบิลด์เริ่มต้นที่ราว 0.5MB โดยอาศัยสมมติฐานว่าผู้ใช้มีเบราว์เซอร์ HTML5 ที่ค่อนข้างทันสมัยอยู่แล้ว แต่ถ้ารวมเบราว์เซอร์เข้าไปด้วย dependency ก็จะกลายเป็นหลายร้อย MB
ไฟล์ deck ดิบของแอปและไลบรารีที่ใช้งานได้จริงอาจมีขนาดแค่หลายสิบ KB ถ้ามี runtime อยู่แล้ว Love2d ก็อยู่ในสถานการณ์คล้ายกัน คือทำงานอยู่บน SDL และองค์ประกอบที่มีมาในตัวหลายอย่าง โดยมีขนาด 10MB เมื่อบีบอัด และ 25MB เมื่อแตกไฟล์ บน Love2d คุณสร้างแอปที่ใช้งานได้จริงขนาดหลายสิบ KB ได้ด้วย Lua script และ vector graphic ล้วน ๆ แต่ก็อีกนั่นแหละ ต้องมี runtime อยู่แล้ว
ถ้าทรัพยากรฝั่งพัฒนาไม่จำกัด การหลีกเลี่ยงการพึ่งพา SDL ก็คงเป็นเป้าหมายที่เท่มาก แต่สำหรับโปรเจ็กต์ส่วนใหญ่ที่อิงกับ SDL มีแนวโน้มสูงว่าจะต้องแลกการลดขนาดตัวติดตั้งไปไม่กี่ MB ด้วยการเลิกซัพพอร์ตระบบปฏิบัติการที่คนนิยมน้อยกว่าไปเลย จะมองว่านี่เป็น bloat หรือไม่ก็คงแล้วแต่มุมมอง
สมัยก่อนมีแค่ข้อความล้วนก็ถือว่าโอเคได้ แต่ตอนนี้หาได้ยาก ในรายการแรงจูงใจที่ยกมา มีเพียงข้อแรกเท่านั้นที่เชื่อมโยงตรงกับขนาดไบนารีดิบจริง ๆ ส่วนที่เหลือเป็นข้อดีแยกต่างหากแบบมีก็ดี
ยิ่งไปกว่านั้น ตัวเว็บไซต์เองก็ใช้ประมาณ 200,000 ไบต์ เพื่อส่ง manifesto ที่ยาว 1,600 ไบต์
https://cdn.fosstodon.org/media_attachments/files/…
ผู้ใช้ทุกวันนี้ไม่สังเกตหรอกว่าดาวน์โหลดมีขนาด 1.44MB, 2.88MB หรือใหญ่กว่านั้น และตอนรันไฟล์ปฏิบัติการก็ไม่รู้สึกถึงความต่างด้วย
แอปที่ใส่ฟลอปปีแผ่นเดียวได้ก็มีอยู่ แต่ซอฟต์แวร์จริงจังส่วนใหญ่ในยุค 80-90 ถูกแจกจ่ายมาเป็นหลายแผ่น เช่น Microsoft Word v2.0 on 7 disks with 2 supplemental disks, Lotus 1-2-3 on 13 floppy disks และแม้แต่ Doom ก็ยังใช้ 4 floppy disks
แนวคิดว่า ใส่ในฟลอปปีแผ่นเดียวได้ ไม่ได้เป็นเรื่องปกติแม้แต่ในยุคฟลอปปี และทุกคนก็รู้ว่าถ้าซอฟต์แวร์ใหญ่กว่านั้นก็แค่แจกหลายแผ่น