Linux và phần mềm

20232312 #tech #philosophy #linux

Trong bài viết Tạm biệt Windows mình đã nói về lí do mình bỏ dùng Windows. Để tiếp tục kể về cuộc sống công nghệ của mình, mình sẽ nói về Linux.

Những cỗ máy

Mình có một máy bàn và một laptop. Máy bàn mình chạy Arch Linux, đang có dự định cài Debian để ổn định hơn. Laptop mình dùng Void Linux bản glibc.

Hầu hết thời gian mình sử dụng laptop vì nó tiện lợi hơn. Một lí do nữa là do màn hình nhỏ, lại có độ phân giải cao khiến mật độ điểm ảnh cao, nhìn khá là nét!


Tại sao lại là Linux?

Ngoài Windows thì có vài lựa chọn khác, mỗi lựa chọn có điểm mạnh và yếu riêng.

MacOS

MacOS rất xịn xò nhưng đối với mình là quá xa xỉ. Việc mọi thứ trở thành đăng ký (Subscription) thay vì mua một lần (One-Time Payment) sẽ làm chi phí duy trì hệ sinh thái đó cao hơn gấp bội. Chưa nói thiết bị của Apple cũng cao cấp về chất lượng lẫn giá tiền, mà mình thì đang có sẵn hai con máy vẫn đang còn chạy ổn.

Chrome OS

Hệ điều hành này tận dụng xu hướng Web Application, nhỏ gọn chỉ cần có kết nối Internet là làm đủ mọi trò. Tiếc là không có cái mình cần như chỉnh sửa video, thu âm, chỉnh âm.

Điểm yếu lớn nhất của Chrome OS không đâu khác là Google. Ông hoàng buôn bán dữ liệu, giúp các nhà quảng cáo tiếp cận người dùng. Việc bị thu thập dữ liệu là một trong những lí do khiến mình rời Windows, chẳng có lí gì lại đâm đầu vào một nơi tồi tệ hơn.

Hệ điều hành khác

Ngoài ra còn FreeBSD, OpenBSD, Haiku... nhưng hầu hết quá đặc thù về chức năng và ngoài nhu cầu của mình nên xin không có ý kiến.


Hiểu đúng về Linux

Công việc xử lý của máy tính được vận hành bởi cá thể nhỏ nhất là những bóng bán dẫn, chúng giữ những giá trị nhị phân gồm 0 và 1. Để giao tiếp với những chấm đen li ti này ta cần phải có một dạng phần mềm, đó là kernel. Đây là lúc Linux xuất hiện.

Linux, được công bố năm 1991, là kernel máy tính phát triển bởi Linus Torvalds. Ngoài ra còn có NT Kernel (1993) trên Windows, XNU Kernel (1996) của Apple trên các máy macOS.

Kernel là một dạng phần mềm có nhiệm vụ giao tiếp với phần cứng, bằng ngôn ngữ cung cấp bởi các nhà sản xuất phần cứng, ngôn ngữ này là các drivers.

Mình muốn nhấn mạnh rằng kernel và driver là hai phần riêng biệt, vì ban đầu tìm hiểu mình cứ nghĩ kernel là một gói những driver nhưng thực chất không phải vậy.

Nói đến đây có thể thấy việc chuyển sang dùng Linux về phần thô cũng không quá khác biệt. Linux chỉ là một kernel, một công cụ để ta tương tác với các máy móc của mình. Điểm khác biệt lớn nhất không nằm ở chức năng, mà là triết lý của những người đằng sau Linux.


FOSS

FOSS viết đầy đủ ra là Free and Open-Source Software. Chữ free ở đây không có nghĩa là miễn phí, mà là tự do. Mặc dù phần lớn các phần mềm gắn nhãn FOSS đều miễn phí.

Chữ open-source ở đây nghĩa là mã nguồn mở. Một thuật ngữ thường chỉ phổ biến với những lập trình viên. Đừng lo, mình sẽ cố giải thích nghĩa cũng như nguồn gốc của những khái niệm này.

Free - Tự do

Nếu như ở Windows, việc gỡ bỏ Edge là bất khả thi thì Linux là hoàn toàn trái ngược. Bạn có thể gỡ hay cài bất cứ thứ gì bạn muốn. Bạn có thể cài vài chục cái trình duyệt web, hoặc gỡ hết mọi thứ, không ai cấm bạn cả.

Việc quá tự do cũng có hai mặt. Đôi lúc bạn có thể vô tình gỡ phải những thứ thiết yếu của hệ điều hành chẳng hạn như kernel, bootloader, firmwares, display server... Những khái niệm xa lạ, vì ở những hệ điều hành kia, bạn không thể động đến chúng.

Đó là chỉ mới nói đến tự do trong việc sử dụng thôi. Ngoài ra bạn còn có thể tự do sao chép, phân phối, soi mói, sửa đổi những phần mềm.

Free Software Movement

Free software, là phong trào đấu tranh cho quyền lợi của người dùng trong việc sáng chế, sử dụng và kinh doanh phần mềm.

Richard Stallman, một trong những người tiên phong, quan niệm rằng phần mềm được viết ra để phục vụ con người. Đáng lo là hầu hết ta bị lệ thuộc vào chúng bởi chúng là công cụ kiếm tiền của các công ty công nghệ.

Nếu Microsoft Edge là một phần mềm FOSS, tùy vào loại giấy phép (license) Microsoft đăng ký mà bạn có thể chỉnh sửa mã nguồn của nó, lập trình thêm chức năng mà bạn muốn, cắt bỏ đi những chức năng bạn không cần.

Thậm chí có một số giấy phép còn cho phép bạn tải về, chỉnh sửa chút ít rồi bán ra ngoài thị trường với cái mác là phần mềm của bạn, hoàn toàn hợp pháp.

Hầu hết phần mềm của các ông trùm công nghệ có mã nguồn đóng (closed-source). Nghĩa là chỉ có họ biết và quản lý cách phần mềm thật sự hoạt động.

Open Source

Mọi phần mềm đều được lập trình từ những dòng mã, gọi là mã nguồn (source code).

Mã nguồn có thể được viết bởi nhiều ngôn ngữ lập trình (C, Java, Rust...). Nhưng để những dòng mã này có nghĩa với các bóng bán dẫn, ta cần biên dịch (compile) chúng thành thứ ngôn ngữ khó hiểu với ta, nhưng dễ hiểu với dòng điện.

Một phần mềm muốn tiện lợi trong việc tải về, phân bố nên được biên dịch thành những gói (packages) và những files thực thi (binaries) nhỏ gọn.

Phần mềm đã được biên dịch rất khó để dịch ngược lại về mã nguồn, từ chính xác là giải mã ngược (decompile). Nghĩa là cách hoạt động của một phần mềm đã được biên dịch chỉ có thể được biết chính xác bởi người nắm giữ mã nguồn thôi.

Linux là một kernel mã nguồn mở, nghĩa là mọi dòng mã của linux đều được công khai và minh bạch với mọi người. Quan trọng là tư tưởng minh bạch này thấm nhuần vào phần lớn những lập trình viên viết phần mềm để chạy trên Linux.

Càng sử dụng FOSS, bạn càng có thêm quyền kiểm soát những máy móc của mình. Bạn biết chúng đang và sẽ làm gì, bạn hiểu cách chúng vận hành. Lợi ích của FOSS còn rất nhiều, về bảo mật, tiềm năng phát triển, thiện ác... Hiện tại mình chỉ nói đến cách vận hành, cốt lõi của FOSS cho người dùng phổ thông như chúng ta thôi.


Bài viết liên quan