Unix – Tinh thần bất tử

Chưa có bình luận

Hôm nay là ngày Lập trình viên (ngày thứ 256 của năm), từ năm nay mỗi ngày này tôi sẽ đăng một bài về những tượng đài của ngành.

Bài cũng được đăng trên facebook cá nhân của tôi ở ĐÂY.

SINH RA TỪ TRO TÀN

Cuối những năm 1960, nhu cầu đa nhiệm và chia sẻ tính toán bắt đầu xuất hiện trên các hệ thống máy tính lớn, trong đó tiên phong là dự án Multics – một siêu hệ điều hành với paging + segmentation, protection rings, dynamic linking, hierarchical filesystem, multiprocessing, multiprogramming, access control,… điều mà mãi nhiều năm sau mới xuất hiện trên các OS hiện đại.

Năm 1969, Bell Labs đã rút khỏi dự án Multics do họ nhận thấy tham vọng về The Perfect System là bất khả thi (nhưng MIT và GE vẫn tiếp tục, kết quả là Multics đã hoạt động và sống tốt cho tới hàng chục năm sau). Từ tàn dư của Multics, Unix đã âm thầm phát triển như một dự án cá nhân của Ken Tompson – một nhà nghiên cứu của Multics. Ken đã thiết kế nguyên mẫu đầu tiên của Unix vào năm 1969. Ban đầu, Unix được viết bằng hợp ngữ và B.

Một thời gian sau, Dennis Ritchie tham gia dự án, ông là tác giả tiên phong của ngôn ngữ lập trình C, bộ đôi huyền thoại của Unix hình thành và họ đã viết lại Unix bằng C. Một mã hệ thống dễ đọc, có khả năng mở rộng cao hỗ trợ chia sẻ thời gian, được viết bằng ngôn ngữ cấp cao, đã nhanh chóng trở nên phổ biến và được công nhận rộng rãi trong giới hacker hàng đầu thế giới. Triết lý của Unix hoàn toàn trái ngược với Multics: “Keep it simple”.

Năm 1974, Tomson và Ritchie công bố bài báo của họ tại CACM (Đại hội Truyền thông Máy tính), trình diễn Unix và hàng trăm ứng dụng của nó, các phòng nghiên cứu và trường đại học trên toàn thế giới đã rất hào hứng và yêu cầu được tiếp cận hệ thống Unix để nghiên cứu. AT&T cũng háo hức tham gia, vì Unix rõ ràng là một thành công và một cơ hội lớn. Tuy nhiên, AT&T đã bị cấm kinh doanh liên quan đến máy tính vào năm 1958 (một thỏa thuận đạt được để giải quyết một vụ kiện chống độc quyền), vì vậy họ không thể hưởng lợi từ Unix.

CHÂN MỆNH THIÊN TỬ

Thỏa thuận chống độc quyền của AT&T còn ràng buộc Bell Labs phải phân phối hệ thống Unix cho những người yêu cầu. Do đó, Ken Thompson bắt đầu gửi băng và đĩa chứa mã nguồn Unix cho nhiều người quan tâm. Điều này đã khơi mào một làn sóng phát triển Unix, với nhiều hacker nghiệp dư và công khai tranh giành để mở rộng hệ thống Unix, đáng chú ý nhất là Đại học California, Berkeley. Unix đã đạt được thành công và sự phát triển chưa từng có, với phiên bản V7, phát hành năm 1979, được coi là hệ thống Unix thực sự hoàn chỉnh đầu tiên. Các chú thích mã nguồn cho phiên bản V6 đã trở thành tài liệu Unix chính thức nhất, vẫn được sử dụng cho đến ngày nay. Vào thời điểm đó, nếu bạn không phải là người làm việc trong ngành máy tính, bạn thậm chí không thể tự gọi mình là hacker nếu không có bản sao mã nguồn V6 có chú thích.

Năm 1978, công ty Unix đầu tiên, SCO, được thành lập, đánh dấu sự khởi đầu của ngành công nghiệp Unix. Microsoft cũng tham gia phong trào Unix vào thời điểm đó, chuyển phiên bản AT&T sang máy vi tính và bán dưới tên XENIX (mặc dù sau đó họ đã theo đuổi những hướng đi khác).

Berkeley là một trường đại học quan trọng trong lịch sử phát triển Unix. Những đóng góp của họ cho Unix là vô cùng to lớn. Một phần vì Ken Thompson đã giảng dạy ở đó và đã gắn kết sâu sắc nghiên cứu Unix với trường. Ngay cả sau khi ông rời đi, các giảng viên và sinh viên vẫn tiếp tục nghiên cứu chuyên sâu của mình. Năm 1977, phiên bản BSD đầu tiên được phát hành, và Berkeley nhanh chóng trở thành một trung tâm phát triển cốt lõi, với nhiều ý tưởng được phản hồi về Bell Labs.

Năm 1980, DARPA (Cơ quan Dự án Nghiên cứu Tiên tiến Quốc phòng) muốn triển khai một giao thức TCP/IP hoàn toàn mới. Phiên bản BSD của Unix là lựa chọn đầu tiên vì mã nguồn của nó dễ tiếp cận và dễ lấy nhất. DARPA đã chọn hợp tác với Berkeley trong quá trình phát triển.

Sau đó, vào năm 1983, TCP/IP được phát hành cùng với BSD phiên bản 4.2, một khoảnh khắc lịch sử khiến các phiên bản BSD của Unix trở nên cực kỳ phổ biến. Cùng năm đó, DEC đã hủy bỏ các kế hoạch phát triển tiếp theo cho PDP-10 và văn hóa hacker tập trung xung quanh PDP-10 tại Phòng thí nghiệm Trí tuệ Nhân tạo của MIT đã chết. Điều này đã thúc đẩy Richard Stallman cân nhắc việc tạo ra GNU , một bản sao hoàn toàn miễn phí của Unix.

TỰ DO & LỢI ÍCH

Cũng trong năm 1983, Bộ Tư pháp Hoa Kỳ đã giải thể Bell Labs. Động thái này đã giải phóng AT&T khỏi thỏa thuận cấm thương mại hóa Unix. AT&T, vốn đã háo hức thương mại hóa Unix, ngay lập tức bắt đầu thương mại hóa Unix System V. Thực sự thì hành động này đã dẫn đến sự suy tàn dần dần của Unix.

Sau khi Unix được thương mại hóa, bầu không khí trao đổi tự do ban đầu đã biến mất. AT&T đã hưởng lợi từ phần mềm thông qua các thỏa thuận bảo mật, kiểm soát chặt chẽ việc phân phối mã nguồn và cũng kiểm soát chặt chẽ các sản phẩm của các nhà phát triển. Điều này khiến Unix mất đi phần lớn những người đóng góp, vì việc lấy và phân phối mã nguồn Unix trở thành một giao dịch bất hợp pháp. Tệ hơn nữa, khi nguồn đóng góp cạn kiệt, nhiều nhà cung cấp bắt đầu tìm cách phân biệt sản phẩm, về cơ bản biến Unix thành tiêu chuẩn riêng của họ để cạnh tranh giành thị phần. Thực tế này đã gây tổn hại nghiêm trọng đến khả năng tương thích đa nền tảng của Unix, giáng một đòn tàn khốc vào Unix. Unix được thương mại hóa bắt đầu có những bất đồng ngày càng tăng với BSD Unix, từ khác biệt về kỹ thuật đến văn hóa, gần như đến mức xung đột không thể hòa giải. Mọi người bắt đầu chia thành các phe phái, với nhân viên kỹ thuật thường đứng về phía BSD, trong khi những người bị thúc đẩy bởi lợi nhuận lại đứng về phía System V của AT&T.

Cũng năm 1983, Larry Wall đã tạo ra một ứng dụng có tên là Patch. Sự kiện này nhỏ bé này lại rất quan trọng, vì nó đã cải thiện hiệu quả và phương pháp trao đổi mã nguồn của lập trình viên. Nó cho phép các nhà phát triển cộng tác bằng cách gửi các bản vá. Nó cho phép việc phát triển dựa trên các cơ sở mã dùng chung được thực hiện riêng biệt, song song, và cuối cùng là hợp nhất. Nó tiên phong cho những phương thức phát triển cộng tác mới, mở đường cho sự ra đời của các bản Unix sau này.

Năm 1985, chip 386 của Intel được phát hành. Vào thời điểm đó, nó không có gì nổi bật, vì mọi người đều tập trung vào các máy trạm của Sun. Cùng năm đó, Richard Stallman công bố Tuyên ngôn GNU và thành lập Quỹ Phần mềm Tự do. Nhưng vào thời điểm đó, không ai coi trọng ông và tổ chức của ông.

Năm 1986, IBM bắt đầu mất thị phần trên thị trường máy tính lớn, trong khi máy tính cá nhân dựa trên Intel 386 và chạy Unix bắt đầu tràn vào thị trường. Thực tế, vào thời điểm đó, nếu ai đó sử dụng dự án GNU của Stallman với 386 để tạo ra một máy trạm Unix, thì đó sẽ là giải pháp rẻ hơn đáng kể so với mọi đối thủ cạnh tranh.

Cuộc chiến Unix ngày càng leo thang, và sau nhiều vòng xung đột, giấc mơ của cộng đồng Unix bắt đầu tan vỡ. Unix không đạt được thành công thương mại, trở thành một thứ gì đó bị lãng quên. Trong khi các công ty Unix đang đấu đá lẫn nhau, Microsoft nhanh chóng chiếm lĩnh thị trường máy tính PC bị bỏ quên, thu về lợi nhuận khổng lồ và củng cố vị thế thống trị. Giấc mơ “tự do” dường như đang đi đến hồi kết.

Nhưng một tia hy vọng le lói đã lóe lên vào đúng lúc đó. Năm 1988, Keith Bostic, một hacker tại UC Berkeley, chịu ảnh hưởng của Stallman (người được cho là đã “vận động hành lang” vị lãnh đạo BSD lúc bấy giờ, thúc giục ông xóa bỏ và viết lại các phần mã thương mại Unix liên quan đến BSD), bắt đầu nỗ lực xóa bỏ mã độc quyền của AT&T khỏi BSD. Sau đó, vào năm 1990, William Jolitz đã chuyển BSD sang máy 386. Tin tức này ngay lập tức gây xôn xao dư luận, nhưng vào cuối năm 1991 hoặc đầu năm 1992, Jolitz đột ngột rút khỏi dự án và hủy bỏ công trình của mình. Lý do được cho là do nhà tài trợ của dự án đã chọn mô hình cấp phép độc quyền và không đồng ý với mong muốn phát hành mã nguồn vô điều kiện và không hạn chế của ông, điều này đã khiến lập trình viên này tức giận.

LINUX

Vào tháng 8 năm 1991, Linus Torvalds, một sinh viên đại học vô danh, đã công bố dự án Linux và tham gia theo giấy phép GPL. Vì dự án chuyển đổi BSD sang 386 chưa kết thúc vào năm 1992, Torvalds không hề hay biết về điều này. Cá nhân ông đã nói rằng nếu biết sớm hơn, ông chắc chắn đã tham gia dự án chuyển đổi BSD sang 386. Tuy nhiên, ngay cả khi Torvalds công bố dự án Linux, hạt nhân nguồn mở vẫn quá yếu, và GNU không phát triển mạnh mẽ. Mọi người vẫn tập trung vào việc làm thế nào để hồi sinh Unix.

Hai năm nữa trôi qua, và vào năm 1993-1994, internet đã bùng nổ! Với sự ra đời của internet, GNU, Linux và dự án BSD nguồn mở thực sự đã trở nên nổi tiếng trong thế giới Unix. Thật không may, đối với những người ủng hộ BSD, vụ kiện của AT&T chống lại BSDI (công ty khởi nghiệp tài trợ cho việc chuyển BSD của Jolitz) đã tiêu tốn một lượng thời gian đáng kể (một lượng thời gian đáng kể và việc phá hủy BSD của họ là một thảm họa; ngay cả nhóm nghiên cứu khoa học máy tính của Berkeley cũng đã bị đóng cửa trong khoảng thời gian từ năm 1992 đến năm 1994), khiến các nhà phát triển chính của BSD chuyển sang Linux và hầu hết các hacker trước đây đã đóng góp cho Unix cũng bắt đầu chuyển sang Linux. Điều này chắc chắn là một luồng sinh khí quan trọng vào quá trình phát triển Linux. Những nhà phát triển chuyển sang Linux này tiên tiến hơn nhiều về mặt kỹ thuật so với Torvalds vào thời điểm đó. Không ngoa khi nói rằng bất cứ nơi nào họ đến, một hệ điều hành sẽ xuất hiện; ràng buộc duy nhất mà họ phải đối mặt là các thỏa thuận thương mại.

Sự phản đối chính đối với GNU trong lịch sử không phải đến từ các hệ thống phần mềm thương mại như Microsoft, mà từ những người ủng hộ các giấy phép nguồn mở khác như BSD. Họ không tán thành, và thậm chí còn phản đối, giấy phép GPL. BSD lập luận rằng giấy phép của họ mang tính tự do hơn GPL, coi GPL như một căn bệnh ung thư lây lan. Stallman, một người ủng hộ mạnh mẽ cho “tự do”, phản đối tất cả các phần mềm độc quyền, tin rằng hệ thống của ông chỉ nên chứa phần mềm “miễn phí”, chứ không phải “ký sinh trùng” vi phạm GPL. Quan điểm này phần lớn không được ủng hộ bởi những người chịu ảnh hưởng của văn hóa Unix truyền thống, những người có xu hướng ưa chuộng các phương pháp tiếp cận giống BSD. Torvalds khéo léo điều hướng giữa GPL và các quan điểm chống GPL. Ông đã xây dựng hạt nhân Linux bằng phần mềm GNU, bảo vệ công trình của mình với GPL, nhưng từ chối tuân theo hệ tư tưởng của Stallman. Ông đã nhiều lần tuyên bố rằng mặc dù ông coi trọng phần mềm miễn phí, nhưng ông cũng sử dụng phần mềm độc quyền, hướng đến một hạt nhân có thể chạy cả hai, cho phép người dùng lựa chọn. Cách tiếp cận này cân bằng lợi ích của cả hai bên, khuyến khích đóng góp cho sự phát triển của Linux.

Sau đó, Linux hợp tác với máy chủ Apache và bắt đầu quá trình phát triển không ngừng nghỉ. Nó nhanh chóng phát triển thành một giải pháp thay thế khả thi cho Unix, nhận được sự ủng hộ từ các nhà sản xuất, nhà phát triển và người dùng lớn.

CÁI KẾT

Trên thực tế, văn hóa Unix chưa bao giờ thực sự rời xa chúng ta. Nó chỉ đơn giản là quay trở lại, lụi tàn trên con đường thương mại hóa trước khi xuất hiện trở lại dưới dạng mã nguồn mở với sự trỗi dậy của Internet. Xung quanh nó vẫn là những hacker cùng chia sẻ những lý tưởng. Đồng thời, sự suy tàn của Unix cũng dạy chúng ta rằng càng gần với mã nguồn mở, sự phát triển của chúng ta càng tốt hơn. Bất kỳ công ty nào cố gắng tư nhân hóa Unix đều dần lụi tàn. Sự trở lại với mã nguồn mở là động lực thúc đẩy sự phát triển liên tục của văn hóa Unix. Đây là kinh nghiệm tích lũy qua nhiều thập kỷ của những hacker kỳ cựu này và những người kế nhiệm sau khi vượt qua vô số trở ngại và thất bại, nhờ đó họ đã phát triển nhiều hệ thống triết lý khác nhau (giấy phép mã nguồn mở). Mặc dù các giấy phép và ý tưởng khác nhau, nhưng điểm chung vẫn là “mã nguồn mở”.

VĨ THANH

Khi mà văn hóa Unix được phục hồi với nguồn mở, có một nhóm cá nhân vẫn không tin vào nó, họ có cách duy trì bản sắc Unix của riêng họ, đó là Apple. Trong các hệ điều hành phổ biến hiện tại, Mac OS là Unix thực sự, nó sử dụng khá nhiều mã BSD trong hạt nhân. Hệ điều hành macOS Sequoia 15 thậm chí còn có chứng nhận và có trong danh sách UNIX® Certified Products.

Như vậy trong cuộc chiến hệ điều hành ngày nay, vẫn còn một kẻ kế thừa Unix thực sự (Mac OS), một kẻ tự nhận kế thừa linh hồn của Unix (Linux) và một kẻ phản diện nhưng lại sử dụng mã BSD trong điều khiển lượng tử thời gian cho các tiến trình (Windows).

Câu chuyện của Unix đem cho bạn bài học gì?

Bình luận: