18 điểm bởi GN⁺ 2025-02-25 | 2 bình luận | Chia sẻ qua WhatsApp

Triết lý (Philosophy)

  • Chúng tôi là một cộng đồng phát triển các phần mềm chất lượng cao như dwm, dmenu, st, với các giá trị cốt lõi là Simplicity, Clarity, Frugality
  • Chúng tôi phản đối thực trạng phần mềm đang tràn lan trong toàn ngành CNTT: phức tạp một cách không cần thiết, nhiều lỗi và chậm chạp
  • Dự án của chúng tôi hướng tới đi ngược lại xu hướng đó, giữ mọi thứ đơn giản, tối thiểu và dễ sử dụng
  • Đối tượng mà dự án của chúng tôi nhắm tới là người dùng máy tính thành thạo và các chuyên gia
    • Chúng tôi cho rằng phần lớn phần mềm thương mại và đa số dự án mã nguồn mở đều được phát triển cho người không chuyên và người dùng phổ thông, nên người dùng thành thạo bị bỏ qua
    • Ngược lại, chúng tôi tin rằng thị trường người dùng thành thạo đang tiếp tục tăng trưởng, và người dùng nâng cao có thể tìm được giải pháp tối ưu phù hợp với cách làm việc của mình
  • Thiết kế phần mềm đơn giản và thanh nhã khó hơn nhiều
    • Tuy nhiên, đó là cái giá phải trả cho độ tin cậy và khả năng bảo trì
    • Duy trì minimalism giúp chúng ta có những mục tiêu hợp lý và có thể đạt được
    • Chúng tôi nỗ lực duy trì chủ nghĩa tối giản và sự rõ ràng

Tuyên ngôn (Manifest)

  • Nhiều lập trình viên nhầm tưởng việc viết mã dài hơn là một thành tựu
    • Tuy nhiên, lượng mã nhiều hơn không nhất thiết đồng nghĩa với việc chất lượng phần mềm được cải thiện
    • Càng tiến thêm có vẻ như kỹ năng càng tăng, nhưng đó chỉ là ảo tưởng
  • Nhiều lập trình viên không quan tâm đến chất lượng mã, và hài lòng chỉ vì nó hoạt động như thể đã giải quyết được vấn đề
    • Nếu cách làm này tiếp diễn, theo thời gian sẽ chỉ còn lại một lượng mã khổng lồ, cấu trúc mã hoàn toàn đổ vỡ và thiết kế hệ thống đầy khiếm khuyết
    • Điều này là do thiếu sự rõ ràng về mặt khái niệm và tính toàn vẹn trong quy trình phát triển
  • Độ phức tạp của mã là nguyên nhân gốc rễ tạo ra phần mềm kém hiệu quả và thiếu nhất quán
    • Mã phức tạp dẫn đến suy giảm hiệu năng, lãng phí tài nguyên và lỗ hổng bảo mật
    • Giải pháp duy nhất là loại bỏ toàn bộ dự án và viết lại từ đầu
  • Vấn đề là việc viết lại mã với chất lượng cao hầu như không xảy ra
    • Nhiều lập trình viên tự hào về số lượng mã, nhầm tưởng rằng mình đã hiểu được sự phức tạp nên cho rằng không cần viết lại
    • Họ xem mình là thiên tài, và nhầm tưởng phần mềm phức tạp là mục tiêu lý tưởng
  • Ý tưởng xuất sắc là sự đơn giản. Phần mềm tuyệt vời cũng là sự đơn giản
    • Sự đơn giản là cốt lõi của triết lý Unix
    • Càng loại bỏ được nhiều dòng mã thì càng đạt được tiến bộ lớn; mã càng ít đi, lập trình viên càng thành thạo và phần mềm càng tốt hơn

2 bình luận

 
aer0700 2025-02-25

Đúng là một bản tuyên ngôn đầy khí thế luôn haha, rất ngầu.

 
GN⁺ 2025-02-25
Ý kiến trên Hacker News
  • FAQ của Stali Linux từ Suckless đã ảnh hưởng rất lớn đến tôi. Họ đã xây dựng một user space được liên kết tĩnh hoàn toàn cho Linux

    • Trước đây tôi mặc nhiên coi cách tiếp cận "thư viện dùng chung cho mọi thứ" của Linux là điều hiển nhiên
    • Khi tạo các công cụ CLI nhỏ, tôi sẽ tạo gói phân phối hoặc dùng tarball để thiết lập thư viện
    • Tôi nhận ra cách đó không nhất thiết là bắt buộc
    • Từ đó về sau tôi dùng liên kết tĩnh bất cứ khi nào có thể, nếu không thì dùng AppImages
    • Liên kết động cũng cần thiết, nhưng về cơ bản tôi không nghĩ việc phân phối phần mềm nhất thiết phải phức tạp
  • Nhờ dwm và dmenu mà desktop của tôi gần như không thay đổi suốt 10 năm. Tôi yêu sự ổn định mà chủ nghĩa tối giản mang lại

  • Tôi không hiểu việc bảo không dùng khai báo khởi tạo trong vòng lặp for. Chấp nhận variadic macro nhưng lại cho rằng for(int i = 0...) quá phức tạp thì thật khó hiểu

  • Tôi có thể chấp nhận chủ nghĩa tối giản, nhưng không phải mọi thứ đều cần như vậy

  • Triết lý lập trình của Suckless thật đẹp. Tôi ước mọi phần mềm đều được viết theo triết lý này. Nhưng trình quản lý cửa sổ và X-menu không phải là những ví dụ tốt nhất

  • Mấy màn kịch trong cộng đồng thật ngớ ngẩn. Tôi dùng các công cụ này vì yêu triết lý phần mềm của họ. Tôi không quan tâm đến niềm tin cá nhân hay xu hướng chính trị của tác giả

  • Sau khi đánh giá nhiều terminal khác nhau, tôi lại quay về với bản fork của st. Tôi đã dùng nó nhiều năm rồi, ổn định và không có lỗi

  • Triết lý này không hoàn hảo, nhưng là cách tiếp cận gần nhất để tạo ra phần mềm đáng tin cậy. Kiềm chế độ phức tạp là việc khó nhất và cũng quan trọng nhất

  • surf là một trình duyệt web đơn giản dựa trên WebKit2/GTK+. Nó có thể hiển thị website và theo các liên kết

  • dwm được tùy biến bằng cách chỉnh sửa mã nguồn, nên việc tạo gói nhị phân là vô nghĩa. Tệp người dùng của nó nhỏ và mang tính tinh hoa

  • Vừa Suckless nhưng vẫn muốn phần mềm bất đồng bộ và dùng cho mọi thứ. Tôi đang tìm các ứng dụng hoạt động theo cách nhiều app đơn luồng phối hợp với nhau

  • Thật tốt khi họ tồn tại. Tôi trân trọng những gì họ làm. Nhưng tôi thích phần mềm có thêm một chút tiện dụng. Cấu hình của BSPWM thì vừa phải, còn phải biên dịch lại mã C thì quá mức