Bố già Richard :)))
Bố già Richard :)))

CÂU CHUYỆN ĐẰNG SAU SỰ VĨ ĐẠI CỦA GNU/LINUX

I. GNU

HỒI 1: LỊCH SỬ CƠ BẢN

GNU, viết tắt của GNU's Not Unix, đến cả cái tên cũng khiến cho mọi người nhức hết cả đầu. Nếu bạn nào là developer thì chắc chắn bạn hiểu ý định của Richard khi đặt tên như vậy để làm gì: Đây là một cách chơi chữ recursion khá ngầu của ông :)))
Richard, hay full name là Richard Stallman. Ông sinh vào ngày 16 tháng 3 năm 1953, là người thành lập nên cộng đồng FSF (Free Software Foundation) hùng mạnh, người đã khiến cho toàn bộ cộng đồng tech "3%" phải nháo nhào đứng ngồi không yên: Có hàng loạt các cuộc tranh luận về Richard Stallman, có những người không thích ông, có những người lại cực kì yêu quý ông và có những người xem ông là "Chúa Jesus trong công nghệ".
Nhưng tại sao ông lại có một ấn tượng sâu sắc trong cộng đồng tech đến như vậy? Hay nói đúng hơn, ông đã làm gì cho công nghệ hiện đại?

GNU: CÂU CHUYỆN CỦA MỘT TRONG NHỮNG FREE SOFTWARE THÀNH CÔNG NHẤT THẾ GIỚI

Vào năm 1983, chính xác là 12:35:59 AM ngày 27/9/1983, Richard Stallman đã công bố chính thức về ý định phát triển một project mới của mình, nó có tên là GNU Project trên net.unix-wizards. Richard Stallman lúc này đang làm việc tại Artificial Intelligence Laboratory ở MIT.
Đây là tin nhắn mà ông đã gửi vào thời điểm đó:
Vào ngày 5/1/1984, Stallman rời công việc ở Lab, bắt đầu cho công cuộc tạo nên GNU project, thứ mà sau này trở thành cuộc cách mạng lớn nhất trong lịch sử công nghệ hiện đại.
Vậy, GNU là gì?
GNU có thể coi là một "Free Unix". Mục tiêu của GNU chính là cung cấp cho chính người dùng một hệ điều hành hoàn toàn miễn phí, và điều đặc biệt là nó phải hoàn toàn open-source, tức là mã nguồn của những ứng dụng trong GNU luôn luôn có sẵn và ai cũng có thể nghiên cứu, chỉnh sửa, chia sẻ và thậm chí là tạo một phiên bản mới dựa trên mã nguồn của nó. Ý tưởng này của GNU sau này được gọi là GNU Manifesto vào tháng 3 năm 1985.
Ý tưởng này nghe có vẻ cũng bình thường, tuy vậy thật ra đây là một ý tưởng khá mới lạ và độc đáo vào thời điểm đó, thực tế là tới tận bây giờ cũng vậy. Bởi vì, hãy thử xem xét kĩ chiếc máy tính mà bạn đang dùng hiện tại: bạn đang xài hệ điều hành Windows, và, Windows lại là một hệ điều hành không hề miễn phí! Tương tự, Microsoft 365 không miễn phí, các software khác của Microsoft cũng có thể miễn phí, nhưng chắc chắn rằng bạn cũng cần phải nạp tiền để xài vài bản "Premium" mạnh hơn thôi, hoặc source code (mã nguồn) của nó cũng không hề có thể truy cập được trên internet. Hoặc là bộ Adobe, hoàn toàn không miễn phí. Games trên Steam, cũng không hoàn toàn miễn phí, và chắc chắn source code của các games đó cũng không public cho bạn xem được, tức là không open-source. Hay thậm chí cả Google, thứ công cụ mà bạn đang sử dụng hằng ngày cũng không hề open-source, dù rằng nó miễn phí để sử dụng. Và còn rất nhiều những ví dụ khác trong công nghệ hoàn toàn phản ý tưởng này nhưng lại được sử dụng rất rộng rãi trong cuộc sống của chúng ta. Tất cả bọn chúng thường được gọi chung là các phần mềm độc quyền, hay nói chuẩn hơn, là proprietary software. Còn các phần mềm tuân theo ý tưởng của GNU thì thường được gọi với một cái tên dân dã hơn chắc ai cũng quen thuộc, đó là FOSS (Free Open-Source Software).
Để nói sâu hơn về chủ đề này thì mình sẽ viết thêm một bài phần 3 nữa nói về Free Software Movement. Còn bây giờ mình chỉ viết sơ lược như vậy thôi.
GNU Project đã được rất nhiều người ủng hộ và hỗ trợ. Các developers, contributors trong project này đã bắt đầu viết lại những phần mềm cần thiết trong UNIX cho GNU, và kết quả của sự hợp tác này là một thành công cực lớn. Tính đến tháng 1/2022, GNU đã có 383 packages và tất cả đủ để bơm máu cho một hệ điều hành chạy mượt mà trên những cỗ máy từ PC đến mấy con servers cực khủng! GNU vào thời điểm mới ra mắt đã trở thành cơn địa chất của thời đại UNIX war, bước đầu cho một hệ tư tưởng, hoặc thậm chí, một chủ nghĩa hoàn toàn mới mà ảnh hưởng của nó có lẽ là không hề nhỏ cho công nghệ hiện đại đến tận bây giờ.
Vậy, bên trong GNU có gì?

HỒI 2: BÊN TRONG GNU

GNU logo là đầu con bò gnu khá ngầu. Đây là GNU logo mà Aurelio Heckert vẽ ra và đã được mọi người chấp nhận rộng rãi và ưa thích sử dụng hơn.
GNU logo là đầu con bò gnu khá ngầu. Đây là GNU logo mà Aurelio Heckert vẽ ra và đã được mọi người chấp nhận rộng rãi và ưa thích sử dụng hơn.
GNU về cơ bản chính là một tập hợp những packages khác nhau, mà nguồn gốc ban đầu của nó chính là UNIX. Tức là nói một cách nôm na, GNU chính là UNIX.
GNU có những package chính sau: GCC (GNU Compiler Collection) - đây là một package rất nổi tiếng và chắc dev C nào cũng sử dụng (hoặc đã từng sử dụng) đến compiler này; GNU C library (glibc), và GNU Core Utils (coreutils). Ngoài ra còn có GDB (GNU Debugger), GNU Binary Utils (binutils), và cả GNU Bash shell.
*Góc note nhỏ: các packages này vốn dĩ là của GNU, nhưng sau đó vì sức mạnh và sự tiện dụng của bọn chúng cho nên nhiều hệ điều hành như macOS, Solaris, các phiên bản BSD và thậm chí là cả Microsoft Windows nữa đã sử dụng chúng cho riêng mình. Có thể thấy rằng chất lượng của GNU là không hề tệ đâu các bạn ạ :)))
Kernel của GNU chính là một con microkernel tên là GNU Hurd, vốn dựa trên GNU Mach trước đó. GNU Hurd ban đầu chính là project trọng tâm nhất của FSF, và từ sau phiên bản Debian GNU/Hurd vào ngày 30/4/2015 thì GNU đã hoàn toàn có đầy đủ các components để trở thành một hệ điều hành hoàn chỉnh. Nhưng hiện tại thì GNU Hurd vẫn chưa được sử dụng rộng rãi và toàn diện mà chỉ là cơ sở để tiếp tục phát triển thêm mà thôi. Cá nhân mình thì đây cũng là một project khá ấn tượng mặc dù mình chưa bao giờ sử dụng đến chúng cả :))) Mình biết có một vài người bạn của mình cũng đã thử sử dụng GNU Hurd rồi và trải nghiệm của nó cũng khá tốt.
Còn một loại kernel khác đã chấp nhận là một phần của GNU Project luôn, đó chính là Linux-libre. Nghe thì chắc các bạn biết rồi, kernel này lấy base chính là từ Linux kernel. Nhưng điểm đặc biệt là ở chữ "libre", tức là tất cả các proprietary components hoàn toàn bị loại bỏ. Hệ điều hành chạy trên kernel này nổi tiếng nhất có lẽ là GNUGuix, mà đối với mình thì trải nghiệm sử dụng nó lần đầu là không hề dễ chịu gì mặc dù nó tuân theo rất nghiêm túc Free Software Movement nhưng loại bỏ hết các components này đồng nghĩa với việc bạn sẽ không hề có các drivers cần thiết và hàng tá các vấn đề khác xảy đến nữa. Tuy vậy, đối với mình, đây cũng là một bước tiến lớn trong công cuộc libre cả thế giới của Stallman.
Giao diện của Parabola GNU/Linux-libre
Giao diện của Parabola GNU/Linux-libre

HỒI 3: CÁCH MÀ GNU ĐẶT TÊN CHO CÁC HỆ ĐIỀU HÀNH DỰA TRÊN MÌNH

GNU là một gói các packages khác nhau mà chúng lại cực kì cần thiết để cho một cỗ máy có thể chạy ổn thỏa được. Tuy vậy, GNU Hurd của GNU thì lại không có tính ưu việt quá cao, vậy nên GNU thường được sử dụng cùng với các kernel khác để tạo thành một hệ điều hành hoàn chỉnh, ví dụ như Linux mà chúng ta sắp nói tới đây, phần lớn các phần mềm đều được dựa trên GNU.
Từ đây, tranh cãi bắt đầu nổ ra. Bạn thấy đó, các kernel này hoàn toàn có thể chạy độc lập mà không cần thiết phải sử dụng GNU, tuy vậy nếu thiếu GNU thì hệ thống lại không thể có các tính năng hữu dụng để tạo thành một hệ điều hành hoàn chỉnh được. Vậy nên đã chia ra hai trường phái hiểu khác nhau:
1. Trường phái này nói rằng các packages của GNU kết hợp với một kernel thì mới tạo thành một hệ điều hành hoàn chỉnh gồm có GNU là chủ đạo và chính kernel đó (hay GNU/<kernel>)
2. Trường pháp khác thì lại nói các kernel chạy độc lập và sau dó được phủ thêm một lớp GNU lên trên để trở nên hoàn thiện hơn (hay <kernel>/GNU)
FSF, thẩm phán cuối cùng, đã đưa ra một nhận định như thế này: tất cả các hệ điều hành được xây dựng trên kernel Linux có sự hỗ trợ của GNU thì được xem là một biến thể của GNU, và nên được gọi là GNU/Linux. Cách gọi này mặc dù còn vướng phải khá nhiều tranh cãi tuy vậy nó đã được chấp nhận khá rộng rãi, và không chỉ riêng kernel Linux mà còn các kernel khác nữa, ví dụ như GNU/Linux-libre chẳng hạn.
Vậy nên mới có đoạn text khá meme được gọi là GNU copypasta như sau:
Khá meme đấy :)))
Khá meme đấy :)))

HỒI 4: ỦNG HỘ HAY KHÔNG?

Rất nhiều người ủng hộ GNU, rất nhiều người không. Phần lớn là vì các chính sách của FSF nói chung là không bắt buộc mọi người phải tuân theo GNU vậy cho nên số người không sử dụng GNU cũng không hề ít.
Một số người nói rằng GNU là một project khá tệ, vì nếu như bạn thử sử dụng một vài hệ điều hành Linux thì trải nghiệm của chúng cũng khiến cho không ít người trở nên đau đầu, nhất là phải set up lằng nhằng và nếu như vậy cũng được đi, nhưng bug thì luôn luôn còn tồn đọng. Và còn hàng tá lý do nữa mà mình cũng không biết tại sao họ lại nghĩ ra được.
Vậy nên, những người này đã cố gắng tạo ra một hệ thống mới mà không sử dụng các GNU packages, mà họ cũng tạo ra những chuẩn mới thường gọi chung là non-GNU standards. Đối với mình thì mình cũng không biết quá rõ về những standards hoặc các non-GNU projects, ngoại trừ một project mà mình cũng thấy khá quan tâm, đó chính là iglunix, một Linux distro không dựa trên bất kì packages của GNU nào cả. Hiện tại thì mình vẫn chưa có ý định sẽ test thử project này, nhưng có lẽ một ngày nào đó, chắc vậy.
Qua bài viết này bạn đã thấy được một điều khá ảo thế này: cộng đồng mà mình gọi nôm na là "tự do trong công nghệ" thật ra không hề đơn giản như các bạn vẫn thường hay thấy những bài viết khác đề cập đến đâu. Có rất nhiều bài viết mà mình thấy họ không đề cập rõ đến một vài thứ mà có lẽ họ cho là "không cần thiết", nhưng đó mới là cái thể hiện rất rõ được cộng đồng GNU/Linux rộng lớn và phức tạp, đó mới chính là cái khiến cho mình tự hào vì cũng là một phần tử nhỏ trong cộng đồng này các bạn ạ.
Phần tiếp theo mình cũng sẽ nói kỹ về Linux, và đến phần 3 mình sẽ bắt đầu chuyên về Free Software Movement, một trong những thứ đã tạo nên cốt lõi và là phương châm sống của rất nhiều người sử dụng Linux trên thế giới này.
À mà khoan, mình nên gọi là GNU/Linux nhỉ?