1 คะแนน โดย GN⁺ 2 시간 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ซอฟต์แวร์พองตัว คือการเปลี่ยนแปลงที่ทำให้แอปซึ่งครั้งหนึ่งเคยอยู่ในฟลอปปีดิสก์แผ่นเดียว กลับต้องการพื้นที่เก็บข้อมูลระดับกิกะไบต์และเวลารอนาน
  • ฟลอปปีดิสก์ 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 ความคิดเห็น

 
GN⁺ 2 시간 전
ความคิดเห็นจาก Lobste.rs
  • โดยรวมเห็นด้วย แต่ก็ขึ้นอยู่มากว่ามีอะไรติดตั้งอยู่ในระบบแล้วบ้าง ไบนารี dynamic link ที่เขียนด้วย C หรือสคริปต์ Python ใส่ได้ง่าย เพราะแทบทุกเครื่องมี runtime อยู่แล้ว
    ในทางกลับกัน ถ้าจะ static link เพื่อการพกพา หรือใช้ภาษาที่ runtime ไม่ได้มีอยู่ทั่วไปอย่าง Janet ก็จะเกินเกณฑ์นี้ไปไกล
    • ค่อนข้างเห็นด้วย ถ้าไม่ได้สร้าง native application บน dependency ที่สมเหตุสมผลซึ่งคาดได้ว่ามีอยู่แล้วในระบบปฏิบัติการเป้าหมาย เช่น UI toolkit ก็ยากจะทำให้ผ่านเกณฑ์ขนาดนี้ได้ แม้แต่ libc ที่ “เล็ก” ก็มักเกิน 0.5MB แล้ว และถ้าจะทำ network request ก็ต้องมี LibCURL อีกหลายร้อย KB ส่วน BearSSL ก็ดูจะพอ ๆ กัน
      โปรเจ็กต์ของฉัน 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 ไบต์
  • ฉันเคยเล่นเกมที่ออกมามากกว่า 4 แผ่นฟลอปปี และผ่านยุคที่ยังมีคู่มือกระดาษหนา 100 หน้าซึ่งบรรจุ บทสนทนา ทั้งหมดมาพร้อมกัน ดังนั้นในมุมนี้ ฉันไม่ได้รู้สึกเลยว่ารูปแบบนั้นจำเป็นต้องกลับมา
    • ฟังดูเท่เหมือนกันนะ ที่ต้องประกอบเกมในหัวจากสื่อสามแบบที่ต่างกัน :-) เกมโปรดของคุณในยุคนั้นคืออะไร?
  • ฟังดูคุ้น ๆ นะ https://fosstodon.org/@dillo/113913161923323567
    https://cdn.fosstodon.org/media_attachments/files/…
  • ในฐานะคนที่เคยใช้เวลาตอนเด็กติดตั้งเกมจากฟลอปปีดิสก์ ก็มีความคิดถึงอยู่บ้าง แต่สิ่งนี้มันก็แค่ ความโหยหาอดีตล้วน ๆ
    ผู้ใช้ทุกวันนี้ไม่สังเกตหรอกว่าดาวน์โหลดมีขนาด 1.44MB, 2.88MB หรือใหญ่กว่านั้น และตอนรันไฟล์ปฏิบัติการก็ไม่รู้สึกถึงความต่างด้วย
  • คำพูดที่ว่า “เมื่อก่อนแอปหนึ่งใส่ฟลอปปีแผ่นเดียวได้ แต่ตอนนี้กลับต้องใช้พื้นที่หลาย GB ใช้เวลาหลายนาที และต้องการความอดทนมากเกินไป” นั้นพูดเกินจริง
    แอปที่ใส่ฟลอปปีแผ่นเดียวได้ก็มีอยู่ แต่ซอฟต์แวร์จริงจังส่วนใหญ่ในยุค 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
    แนวคิดว่า ใส่ในฟลอปปีแผ่นเดียวได้ ไม่ได้เป็นเรื่องปกติแม้แต่ในยุคฟลอปปี และทุกคนก็รู้ว่าถ้าซอฟต์แวร์ใหญ่กว่านั้นก็แค่แจกหลายแผ่น
  • จำได้ว่าสมัยก่อนยังมีช่วงที่เอา Linux distribution ใส่ฟลอปปีแผ่นเดียวได้ Tom's RootBoot Disk เป็นระบบกู้คืนที่ยอดเยี่ยมมาก
  • เดี๋ยวก่อน นี่หมายความว่าห้ามใส่ ข้อความอ้างอิงจากเลิฟคราฟต์ 2KB ลงในทุกไบนารี แล้วเหรอ?
  • ฉันลองใช้ screensaver นี้อยู่ 1-2 สัปดาห์แล้ว สนุกมาก ครึ่งหนึ่งคือ toaster บินได้ อีกครึ่งคือความรู้สึกแบบ “โอ้ ฉันรู้จักดิสก์นั้น”
  • ไม่นานมานี้ครอบครัวฉันดูเกมโชว์กัน แล้วมีคำถามว่าฟลอปปีดิสก์มาตรฐานเก็บข้อมูลได้เท่าไร เด็กอายุ 23 ปีคนนั้นไม่เคยเห็นฟลอปปีดิสก์มาก่อนในชีวิต แต่ก็มี ความรู้คอมพิวเตอร์ มากกว่าคนวัยเดียวกันมาก