1 điểm bởi GN⁺ 3 giờ trước | 1 bình luận | Chia sẻ qua WhatsApp
  • Phình to phần mềm là sự thay đổi khiến những ứng dụng từng nằm gọn trên một đĩa mềm nay lại đòi hỏi hàng gigabyte dung lượng lưu trữ và thời gian chờ đợi dài
  • Đĩa mềm 1.44MB không phải là một giới hạn mang tính đùa vui mà là thước đo của sự tiết chế, với tiền đề rằng ngay cả các công cụ đơn mục đích cũng có thể được làm đủ nhỏ gọn
  • Phần mềm nhỏ gọn hướng đến việc tải xuống nhanh, chạy ngay lập tức, mức sử dụng bộ nhớ·CPU thấp, thời lượng pin dài và hỗ trợ các hệ thống cũ
  • Nhấn mạnh nguyên tắc chỉ dùng native, tránh sự phình to từ phụ thuộc, và mọi dòng mã đều phải có lý do để tồn tại
  • Floppy badge được gắn cho các ứng dụng có tổng kích thước tải xuống dưới 1.44MB, và cốt lõi không phải là hoài niệm mà là thái độ làm ra sản phẩm coi trọng từng byte

Tiêu chuẩn của phần mềm nhỏ gọn

  • Do phình to phần mềm, các ứng dụng từng chứa vừa trên một đĩa mềm đơn lẻ nay đòi hỏi hàng gigabyte dung lượng lưu trữ, thời gian chờ lâu và sự kiên nhẫn quá mức
  • Đĩa mềm 1.44MB không phải là một giới hạn vui đùa mà được dùng như một chuẩn mực của sự tiết chế
  • Nếu phần mềm từng vận hành cả một doanh nghiệp có thể nằm trong mức dung lượng này, thì các công cụ hiện đại tập trung vào một mục đích duy nhất cũng hoàn toàn có thể nhỏ gọn như vậy
  • Phần mềm nhỏ gọn đặt mục tiêu tải xuống nhanh, khởi chạy ngay lập tức và giảm các bước tải không cần thiết
  • Nó tôn trọng thiết bị của người dùng bằng cách bao gồm mức sử dụng bộ nhớ và CPU thấp, thời lượng pin dài hơn, cùng khả năng hỗ trợ các hệ thống cũ
  • Chỉ dùng native, tránh sự phình to từ phụ thuộc, và mọi dòng mã đều phải có lý do để tồn tại
  • Phần mềm làm tốt một việc duy nhất sẽ có tính năng tập trung hơn, ít lỗi hơn và có thể tồn tại bền lâu hơn

Cách đo lường và chủ đích

  • Floppy badge được gắn cho các ứng dụng có tổng kích thước tải xuống dưới 1.44MB, tương ứng dung lượng của đĩa mềm 3.5 inch tiêu chuẩn
  • Kích thước hiển thị trên đĩa được tính dựa trên kích thước universal binary do nền tảng phân phối của nhà phát triển báo cáo
  • Kích thước thực tế tải về thiết bị có thể còn nhỏ hơn kích thước hiển thị, vì platform thinning chỉ phân phối những phần cần thiết cho phần cứng cụ thể
  • Trọng tâm không nằm ở sự hoài niệm với đĩa mềm, mà ở thái độ làm ra sản phẩm: từng byte đều quan trọng, ràng buộc tạo ra sáng tạo, và phần mềm nên nhẹ nhàng
  • Ví dụ liên quan có liên kết đến bài viết về quá trình tạo ra trò chơi đoạt giải chỉ nặng 39KB YOYOZO

1 bình luận

 
Ý kiến trên Lobste.rs
  • Nhìn chung là đồng ý, nhưng còn phụ thuộc rất nhiều vào việc hệ thống đã cài sẵn những gì. Binary liên kết động viết bằng C hay script Python thì dễ đáp ứng vì runtime có trên gần như mọi máy
    Ngược lại, nếu liên kết tĩnh để tăng tính di động hoặc dùng ngôn ngữ có runtime ít phổ biến hơn như Janet thì sẽ dễ dàng vượt xa ngưỡng này
    • Khá đồng ý. Trừ khi bạn đang xây dựng ứng dụng native trên các phụ thuộc hợp lý như UI toolkit có thể giả định là đã có sẵn trên hệ điều hành mục tiêu, còn không thì rất khó đáp ứng ngưỡng dung lượng này. Ngay cả libc “nhỏ” cũng thường từ 0.5MB trở lên, nếu cần gửi yêu cầu mạng thì LibCURL cũng vài trăm KB, BearSSL trông cũng tương tự
      Dự án Decker của tôi cố gắng giảm phụ thuộc bên ngoài, nhưng để đảm bảo tính di động thì vẫn phụ thuộc vào SDL và SDL_image và phát hành kèm theo. Bản phát hành Apple Silicon hiện tại là 6MB khi nén, trong đó khoảng 4.6MB là các dylib của SDL và SDL_image. Bản web bắt đầu ở khoảng 0.5MB nếu giả định người dùng đã có trình duyệt HTML5 tương đối mới, nhưng nếu tính cả trình duyệt thì phụ thuộc đã lên đến hàng trăm MB
      Các file deck thô của ứng dụng và thư viện hữu ích có thể chỉ ở mức vài chục KB nếu runtime đã có sẵn. Love2d cũng ở tình huống tương tự, chạy trên SDL và nhiều thành phần tích hợp khác, với kích thước 10MB khi nén và 25MB khi giải nén. Trên Love2d, bạn có thể làm ra ứng dụng hữu ích chỉ vài chục KB bằng script Lua và đồ họa vector, nhưng một lần nữa, đó là khi runtime đã có sẵn
      Nếu nguồn lực phát triển là vô hạn thì tránh phụ thuộc SDL là một mục tiêu hay, nhưng với đa số dự án dựa trên SDL, khả năng cao là thay vì tiết kiệm vài MB cho bộ cài, bạn sẽ phải từ bỏ hẳn hỗ trợ cho các hệ điều hành kém phổ biến hơn. Việc xem đó có phải là sự phình to hay không còn tùy góc nhìn
  • Tránh để phần mềm ngày càng to ra là điều tốt, nhưng đa số ứng dụng lớn lại lớn vì tệp tài nguyên hơn là vì bản thân phần mềm. Độ phân giải màn hình đã cao hơn, và chúng ta cũng quan tâm nhiều hơn đến trải nghiệm người dùng so với trước đây
    Ngày xưa chỉ có văn bản vẫn là hợp lý, nhưng bây giờ thì hiếm. Trong danh sách động cơ được nêu ra, chỉ điều đầu tiên thực sự liên quan trực tiếp đến kích thước binary thô, còn những điều còn lại giống các lợi ích tách biệt, có thì tốt hơn
    Thêm nữa, ngay chính website đó cũng dùng khoảng 200,000 byte để truyền tải một bản tuyên ngôn dài 1,600 byte
  • Tôi từng chơi game phát hành trên hơn 4 đĩa mềm, và từng sống trong thời mà còn đi kèm cả cuốn hướng dẫn giấy 100 trang chứa toàn bộ lời thoại, nên theo góc nhìn đó thì tôi hoàn toàn không muốn cách đó quay trở lại
    • Ý tưởng phải lắp ghép game trong đầu từ ba loại phương tiện khác nhau nghe cũng khá ngầu :-) Hồi đó game bạn thích nhất là gì?
  • Nghe quen lắm https://fosstodon.org/@dillo/113913161923323567
    https://cdn.fosstodon.org/media_attachments/files/…
  • Là người từng tốn thời gian thời nhỏ để cài game từ đĩa mềm, tôi cũng có chút hoài niệm, nhưng đây chỉ là hoài niệm thuần túy
    Người dùng ngày nay không nhận ra việc tải xuống là 1.44MB hay 2.88MB, hay lớn hơn thế, và cũng không cảm thấy khác biệt khi chạy file thực thi
  • Câu kiểu “ứng dụng ngày xưa vừa một đĩa mềm, còn giờ thì đòi vài GB dung lượng, vài phút thời gian và quá nhiều kiên nhẫn” là phóng đại
    Đúng là có những ứng dụng vừa một đĩa mềm, nhưng phần lớn phần mềm nghiêm túc trong thập niên 80~90 được phân phối trên nhiều đĩa. Ví dụ như Microsoft Word v2.0 trên 7 đĩa kèm 2 đĩa bổ sung, Lotus 1-2-3 trên 13 đĩa mềm, và ngay cả Doom cũng là 4 đĩa mềm
    Ý tưởng vừa trong một đĩa mềm vốn cũng không hề phổ biến ngay cả ở thời đĩa mềm, và ai cũng hiểu rằng phần mềm lớn hơn thì cứ phát hành trên nhiều đĩa là được
  • Tôi nhớ thời còn có thể nhét cả bản phân phối Linux vào một đĩa mềm. Tom's RootBoot Disk là một hệ thống khôi phục tuyệt vời
  • Khoan đã, ý là chúng ta không được nhét 2KB trích dẫn Lovecraft vào mọi binary à?
  • Tôi đã dùng trình bảo vệ màn hình này khoảng 1~2 tuần và thấy rất vui. Một nửa là máy nướng bánh mì bay, nửa còn lại là cảm giác “ồ, mình biết cái đĩa đó”
  • Gần đây gia đình tôi xem một gameshow có câu hỏi về việc một đĩa mềm tiêu chuẩn lưu được bao nhiêu dữ liệu. Đứa con 23 tuổi chưa từng nhìn thấy đĩa mềm trong đời, dù so với bạn cùng tuổi thì vẫn có kiến thức máy tính hơn rất nhiều