Sinh nhật thứ 50 của Unix: Hệ điều hành nền tảng cho điện thoại thông minh đã bắt đầu từ thất bại như thế nào?

Ngày nay, Unix là nền tảng của iOS và Android – huyền thoại của nó bắt đầu với ba nhà nghiên cứu và một … chú cá sấu con.

Ken Thompson (sitting) and Dennis Ritchie (standing) in front of a PDP-11. Ritchie annotated this press image for Bell Labs as <a href='https://www.bell-labs.com/usr/dmr/www/picture.html'>"an amusing photo,"</a> and he joked that he had much "more luxuriant and darker hair" at the time of the photo than when it appeared in magazines like the March 1999 Scientific American (which, unfortunately, incorrectly swapped IDs for the two).
Ken Thompson (ngồi) và Dennis Ritchie (đứng) trước một máy PDP-11. Ritchie đã chú thích cho tấm ảnh được xuất bản cho Bell Lab này là “một ảnh vui” và ông đã nói đùa rằng tóc của ông đen và tốt hơn nhiều khi tấm ảnh được chụp hơn là khi tấm ảnh được đăng trên số tháng 3 năm 1999 của tạp chí Scientific America (tạp chí đã chú thích nhầm tên của hai nhân vật trong ảnh khi xuất bản).

Có thể sự phổ biến đã làm phai mờ nguồn gốc của nó. Nhưng Unix, hệ điều hành với nhiều biến thể đang là nền tảng cho hầu hết các điện thoại thông minh được bán ra trên toàn cầu, đã được khai sinh 50 năm trước từ một dự án thất bại giữa của một liên minh gồm những tên tuổi khổng lồ như Bell Labs, GE và MIT. Được viết bởi một vài lập trình viên tại Bell Labs, câu chuyện lạ lùng về Unix bắt đầu từ một cuộc họp ở tầng trên cùng của một tòa nhà phụ tại trụ sở phức hợp của Bell Labs ở Muray Hill, New Jersay.

Một buổi sáng lạnh lẽo và quang đãng vào một ngày cuối tháng Ba năm 1969, khoa Khoa học máy tính đã tiếp đón một vài vị khách đặc biệt: Bill Baker, một phó giám đốc của Bell Labs và Ed Davis, giám đốc nghiên cứu. Baker đến đây với mục đích chấm dứt dự án Multics (viết tắt từ tên MULTiplexed Information and Computing Service), một dự án phần mềm được khoa Khoa học máy tính triển khai từ bốn năm trước. Multics đã quá hạn phát triển hai năm, vượt ngân sách và chỉ hoạt động một phần nhỏ theo thiết kế.

Trong một nỗ lực để giảm nhẹ một dự án đã thất bại thảm hại, Baker đã bắt đầu bài nói chuyện của mình và cho rằng Bell Lab đã đạt được kết quả mong muốn từ dự án Multics. Vì vậy, họ không cần tiếp tục dự án này. Berk Tague, một nhân viên có mặt tại buổi họp hôm đó, sau này đã nói tại đại học Princeton “Hệt như trường hợp của Việt nam, ông ấy đã tuyên bố thắng cuộc và rút ra khỏi dự án Multics”.

Tuy nhiên, lời tuyên bố này không phải là bất ngờ đối với các nhân viên trong khoa. Các lập trình viên đã đánh hơi được nhiều vấn đề cả về tầm cỡ của dự án cũng như hệ thống máy tính mà họ được yêu cầu phải xây dựng trong dự án.

Dù vậy đối với họ, có việc còn hơn không. Hơn nữa, làm việc với dự án Multics đồng nghĩa với việc họ sẽ được sử dụng một mainframe (máy tính trung ương) trị giá 7 triệu dollar trong thời gian rảnh rỗi. Một trong những lập trình viên làm việc trong dự án Multics là Dennis Ritchie về sau đã nói rằng tất cả mọi người đều quan tâm đến thành công của dự án, mặc dù họ biết rằng khả năng này rất thấp.

Việc hủy bỏ Multics đồng nghĩa với việc chấm dứt dự án duy nhất mà các lập trình viên tại khoa Khoa học máy tính đang làm việc. Nó cũng có nghĩa là khoa sẽ không còn giữ được máy tính duy nhất của mình. Sau khi mainframe GE 645 được tháo dỡ và chuyển đi, tất cả những gì còn lại trong khoa là các dụng cụ văn phòng và một vài terminal (trạm đầu cuối).

Hoàn cảnh lúc này được Ken Thompson, một lập trình viên khác trong dự án, mô tả lại với dự án Unix Oral sau này là: “Đời sống của chúng tôi trở nên tẻ nhạt như người Spartan”. Nhưng thật may cho những người say mê máy tính, hoàn cảnh khắc nghiệt có thể dẫn đến những sáng tạo nhảy vọt. Vì vậy, hệ điều hành có ảnh hưởng lớn nhất đã được ra đời mà không được sự tài trợ của các nhà đầu tư, và những người sáng tạo ra nó không trở thành những tỉ phú. Unix được khai sinh bởi vì Bell Labs đã thuê được những người rất thông minh và cho họ tự do để làm những gì họ thích và tin rằng các dự án của họ sẽ có ích. Trước Unix, các nhà nghiên cứu tại Bell Labs đã phát minh ra transistor và laser, và một số các phát kiến khác trong lĩnh vực đồ họa máy tính, tổng hợp và nhận dạng tiếng nói.

Mở đường cho Multics

Multics được bắt đầu với nhiều kỳ vọng, mặc dù thoạt nhìn thì mục tiêu của nó có vẻ không rõ ràng và có phần nào vô lý.

Với sự cộng tác giữa GE, MIT và Bell Labs, Multics được khởi xướng như là một dự án sẽ chuyển đổi các nguồn lực tính toán thành một thứ dễ sử dụng như là điện hay dịch vụ điện thoại. Các nhà nghiên cứu tại Bell Labs sẽ có một jack trong phòng làm việc để kết nối terminal của họ với mainframe Multics. Nhờ đó, họ có thể sử dụng tất cả tài nguyên của mainframe trong thời gian thực. Học cũng có thể lưu trữ và đọc file từ mainframe.

Nếu tất cả những điều này có vẻ dễ dàng ngày nay thì đó là bằng chứng cho thấy các chức năng này phát triển nhanh thế nào – ngay cả đối với các tác vụ tính toán đơn giản. Nhưng khi Multics còn trong giai đoạn phát triển vào đầu thập niên 60, việc lưu trữ file rất lạ thường. Và khả năng “time sharing” (chia xẻ thời gian – khả năng cho phép nhiều người sử dụng có thể cùng sử dụng một tài nguyên chung trên cùng một máy tính) vẫn còn trong quá trình thử nghiệm chứ không được sử dụng trong các môi trường chính thức với nhiều người dùng.

Các máy tính ở đầu thập niên 60 chỉ thực hiện một chương trình tại một thời điểm và xử lý các chương trình theo thứ tự. Một nhà nghiên cứu ở Bell Labs sẽ viết một chương trình, đổi nó thành dạng nhập theo chuẩn của máy tính (thẻ đục lỗ, băng giấy, hay là băng từ trên những máy cao cấp), và đưa đến trung tâm máy tính. Một người điều hành máy tính sẽ đặt chương trình này vào hàng đợi, chạy nó và gởi kết quả được in ra và chương trình ban đầu trở về cho nhà nghiên cứu.

Nếu mã chương trình có lỗi, cả một quá trình rắc rối để tạo ra thẻ đục lỗ, giao cho trung tâm máy tính để xử lý và đợi kết quả sẽ được tưởng thưởng bằng một bản in đại loại như “SYNTAX ERROR” (Sai ngữ pháp). Ngoài ra, có lẽ sẽ có thêm một vài dòng nữa để báo số dòng tham chiếu và một vài thông tin hữu ích.

Cùng với sự gia tăng trong mức độ phức tạp của các chương trình máy tính, cách dò lỗi này ngày càng trở nên khó chịu. Dù vậy, không có một công ty hay trường đại học nào, kể cả Bell Labs, có thể mua được một mainframe riêng cho mỗi nhà nghiên cứu – vào năm 1965, máy tính GE 645 mà Bell Labs đã sử dụng để phát triển Multics có giá bằng với một chiếc Boeing 737.

Vì thế, vấn đề time sharing để cho phép các nhà nghiên cứu thực thi chương trình cùng lúc trên mainframe và nhận được kết quả tức thời đã trở thành tiêu điểm của sự chú ý trong thời gian này. Với time sharing, các chương trình không cần được nhập trên thẻ đục lỗ mà được viết và lưu trữ trực tiếp trên mainframe. Theo lý thuyết, các nhà nghiên cứu có thể  viết, soạn thảo và chạy chương trình của họ trực tiếp trên mainframe (on the fly) mà không cần rời khỏi phòng làm việc của họ. Đó là mục tiêu của Multics khi nó được hình thành. Dự án được khởi sự năm 1964 và dự định sẽ hoàn thành vào năm 1967.

MIT, vốn đã phát triến và sử dụng một hệ thống time-sharing sơ khai gọi là CTSS, sẽ chịu trách nhiệm cung cấp các đặc tả, GE sẽ cung cấp thiết bị, và GE và Bell Labs sẽ cùng tham dự việc lập trình cho hệ thống.

Tập hợp đội ngũ Unix

Một trong những lập trình viên đầu tiên của dự án Multics là Rudd Canaday. Rudd được Bell Labs thuê vào năm 1964 và đã viết một hệ thống time-sharing đơn giản cho chương trình phòng thủ tên lửa Nike trước khi tham gia Multics vào năm 1966.

Trong năm tiếp theo, Bell Lab đã tìm đến Ritchie, một cựu sinh viên Havard và có cha là một cựu nhân viên của Bell Labs, và Ken Thompson,  một cựu quân nhân và là người đã tìm cách tránh mặt nhân viên tuyển dụng của Bell Labs tại trường Cal-Berkeley trong suốt một tháng. Canaday, Ritchie và Thompson khởi đầu khác nhau nhưng đều đến cùng một nơi: tầng thượng của khu phức hợp Bell Labs, và làm việc trong một khu vực chật hẹp. Nơi làm việc của họ không có điều hòa nhiệt độ, nhưng ít nhất họ có thể truy cập vào một mainframe nhiều triệu dollar mà không bị ai để ý.

Cả ba nhà nghiên cứu đều là MTS, hay là Members of the Technical Staff (thành viên của ban kỹ thuật) tại phòng thí nghiệm. Chức danh này cho phép họ tự do tìm và làm việc trong các dự án và nghiên cứu mà họ thích và có lợi cho công ty mẹ của Lab, AT&T.

Người tìm kiếm các thành viên cho nhóm và quản lý họ là Malcom Douglas Mcllroy. Doug là một cựu sinh viên MIT và làm việc tại Bell Labs từ năm 1958.

Thompson, Ritchie, Canaday và Mcllroy biết rõ các điểm yếu trong các đặc tả từ MIT – được viết trong các tài liệu lên đến vài nghìn trang. Và họ cũng biết một số khó khăn trong dự án liên quan đến kiến trúc khó nhằn của hệ thống GE 645. Nhưng dần dần, cả bốn người, đặc biệt là Thompson, tin rằng nếu họ được bắt đầu lại từ đầu, họ sẽ tạo được một hệ điều hành tốt hơn Multics.

Môi trường thích hợp

Không có nhân viên nào tại Bell Labs làm việc toàn thời gian trong dự án Multics và hệ thống GE 645 mà họ sử dụng có thể được dùng cho các dự án phụ. Một trong số đó là dự án hệ điều hành của Thompson. Ông đã làm việc trong dự án này vào mùa đông năm đó và tìm ra cách để in ra dòng chữ “HELLO” đồng thời trên tất cả các terminal kết nối vào mainframe. Nhưng trước khi ông có thể đi xa hơn, dự án Multics đã bị hủy bỏ và mainframe được đóng gói và đem đi khỏi khoa Khoa học máy tính.

Thoạt tiên, Baker và Davis đã kết thúc dự án Multics mà không cho đội ngũ của Mcllroy công việc nào tiếp theo. Điều này làm cho các lập trình viên trong nhóm của Mcllroy lo ngại. Họ sợ rằng họ sẽ bị mất việc tại Bell Labs sau khi Multics bị hủy bỏ.

Tuy nhiên, đội ngũ non trẻ này lại ở trong một môi trường thích hợp để Unix được đơm hoa kết quả. Bell Labs, vốn vẫn đang nhận được nguồn tài trợ từ một phần của các hóa đơn điện thoại trên toàn nước Mỹ và hoàn toàn không giống với với bất kỳ nơi làm việc nào khác. Việc trả lương cho một nhóm lập trình viên biệt lập trên tầng thượng của khu phức hợp Murray Hill không làm cho công ty bị phá sản. Thompson và các đồng sự cũng có một người quản lý tốt để theo đuổi đam mê của họ. Sam Morgan, người quản lý khoa Computing Science Research (Nghiên cứu về khoa học máy tính) – bao gồm các lập trình viên trong nhóm của Mcllroy và một số các nhà toán học – không phụ thuộc vào nhóm của Mcllroy khi họ không có công việc cụ thể nào để làm.

“Nguyên tắc quản lý ở đây là anh sẽ thuê những người sáng dạ nhất và giúp họ hòa nhập vào môi trường làm việc”. Morgan hồi tưởng trong dự án Unix Oral History. “Anh sẽ cho họ biết các chỉ dẫn tổng quát như là kết quả cần có là gì và để họ tự do làm việc”. Vì vậy, thay vì cung cấp các chỉ dẫn cụ thể, Morgan thích theo hướng mà ông gọi là “sự nhiệt tình có chọn lọc” để khuyến khích một dự án nghiên cứu nào đó, và chú thích thêm rằng “nếu anh nản lòng hoặc thất bại khi theo đuổi một điều gì đó mà sau này có kết quả tốt, nếu nó là một ý tưởng rất tốt, nó sẽ tự quay lại”.

“Ông ta để mọi người tự do làm công việc của họ và không khi nào nói họ phải làm gì”, Kernigan nhớ lại. Trong thời gian đó, Bell Labs cũng nhấn mạnh việc hợp tác giữa các bộ môn khác nhau. “Mọi người đều để ngõ cửa văn phòng của họ, và nếu anh có một vấn đề nào đó, lúc nào cũng sẵn có một chuyên gia gần đó và anh có thể vào văn phòng của họ và nhờ giúp đỡ,” đó là những gì Kernigan nhớ.

Tuy vậy, Thomson và các đồng sự vẫn còn một vấn đề nhỏ lúc đó – không ai có máy tính cả. Mặc dù ban quản lý không có vấn đề với các máy tính, các lập trình viên trong nhóm của Mcllroy không thể thuyết phục các nhà quản lý để dành một cái cho họ. Bị ám ảnh bởi thất bại của dự án Multics, Davis không muốn trang bị cho họ một máy tính mới để tiếp tục nghiên cứu và phát triển hệ điều hành. Theo quan điểm của các nhà quản lý phòng thí nghiệm, dường như Thompson và mọi người chỉ muốn tiếp tục làm việc với dự án Multics.

Chia xẻ sức mạnh tính toán

Cùng ở một tầng với Khoa khoa học máy tính là Khoa nghiên cứu âm học và hành vi, một khoa lớn hơn rất nhiều do Max Mathew, một người tiên phong trong lĩnh vực âm nhạc điện tử, tổng hợp và nhận dạng tiếng nói, lãnh đạo. Với các ứng dụng mang lại lợi ích rõ ràng cho trọng tâm kinh doanh của AT&T, khoa âm học được tài trợ tốt hơn nhiều so với khoa khoa học máy tính ở cuối hành lang.

Và trong một tình huống dường như có tính toán để khiêu khích Ritchie và Thompson – những người vốn đã xem thường bộ máy hành chính rắc rối của công ty – khoa âm học không thiếu máy tính. Đúng ra là nhiều hơn những gì họ cần. Khi các chương trình trong khoa trở nên phức tạp hơn và không thể chạy hiệu quả trên các máy tính có sẵn, họ chỉ cần yêu cầu các nhà quản lý cho họ máy tính mới.

Bất chấp sự ganh tỵ về quỹ tài trợ, hợp tác giữa khoa âm học và khoa học máy tính vẫn diễn ra thường xuyên trong thập kỷ 60 và 70 với kết quả là nhiều phát kiến về kỹ thuật máy tính của Bell Lab được phát sinh từ khoa âm học. Ví dụ như trong những năm đầu của thập kỷ 60, Bill Ninke, một nhà nghiên cứu âm học, đã trình diễn một giao diện đồ họa sơ khai trên máy minicomputer PDP-7. Khoa âm học vẫn còn giữ máy đó, nhưng họ không sử dụng và nó được để ở đâu đó  trên tầng sáu của tòa nhà.

Và cuối cùng, một thời gian ngắn sau khi Davis và Baker hủy bỏ dự án Multics, Thompson, người không mệt mỏi khám phá các ngõ ngách trong tòa nhà, đã tìm ra PDP-7.

Với sự trợ giúp của những thành viên trong nhóm, Thompson đã đóng gói các bộ phận của PDP 7 – một cỗ máy có kích thước của một chiếc tủ lạnh, không kể trạm đầu cuối – dời nó vào một chiếc tủ của khoa âm học và làm cho nó chạy trở lại. Bằng cách nào đó, họ đã thuyết phục khoa âm học cho họ chỗ để máy tính và chi trả cho những lần sửa chữa không định kỳ từ ngân sách của khoa.

Các lập trình viên trong đội ngũ của Mcllroy bỗng nhiên có một máy tính theo một cách nào đó. Vì vậy, trong mùa hè năm 1969, Thompson, Ritchie và Canaday đã tạo ra các thành phần cơ bản của một công cụ quản lý file chạy trên PDP-7. Công việc không hề đơn giản. Tính toán theo bó (batch computing) – chạy các chương trình tuần tự – ít khi nào đòi hỏi máy tính phải lưu trữ dữ liệu lâu dài, và nhiều mainframe không có thiết bị lưu trữ lâu dài (như là băng từ hay đĩa cứng) kèm theo. Nhưng môi trường time-sharing mà các lập trình viên này yêu thích đòi hỏi phải có bộ phận lưu trữ. Và với việc nhiều người sử dụng kết nối cùng lúc vào cùng một máy tính, công cụ quản lý file phải hiệu quả đủ để tránh tình trạng file của một người sử dụng ghi đè lên file của người sử dụng khác. Khi một người sử dụng đọc file, kết quả phải được gởi về đúng người sử dụng mở nó ra.

Đó là một thử thách mà nhóm của Mcllroy sẵn sàng đối diện. Họ thấy tương lai của điện toán và muốn khám phá nó. Họ biết rằng Multics là ngõ cụt, nhưng họ đã khám phá ra khả năng để chia xẻ việc phát triển, truy cập và tính toán theo thời gian thực. Hai mươi năm sau, Ritchie đã nói về về điều này tại Đại học Princeton: “Điều chúng tôi muốn đạt được không chỉ là một môi trường tốt để lập trình, nhưng là một hệ thống có thể kết nối mọi người”.

“Tôi vẫn còn dùng tính toán bó vào cuối thập niên 1960 với một máy IBM 7094 tại Princeton và một máy GE 635 tại Bell Labs”, Brian Kernighan đã nói. “Nhưng tôi đã dùng CTSS tại MIT vào mùa hè 1966, và đó là một sự khải thị cho thấy tính toán tương tác (interactive computing) hay đến mức nào”. Khi Unix bắt đầu được triển khai, Kernighan đã thay đổi từ việc viết các chủ đề trừu tượng sang lập trình, thậm chí hợp tác với Ritchie trong việc viết ra tài liệu The C Programming Language (ngôn ngữ lập trình C), và hầu như ngay lập tức nó đã trở thành chuẩn mực cho các hướng dẫn lập trình.

Từ căn-tin của Bell Lab đến điện thoại thông minh

Mặc dù phòng thí nghiệm không chú tâm nhiều đến thời gian làm việc của các nhà nghiên cứu, Canaday đã cố gắng để làm việc các công việc chính thức trong giờ làm việc trong mùa hè năm đó. Còn Thompson và Ritchie thì không.

Cả hai người làm việc với giờ giấc rất khác thường. Về sau, Thompson đã nói với dự án Unix Oral History rằng ông làm việc theo lịch 27 giờ-ngày, và điều đó làm ông không đồng bộ với bất kỳ ai theo chu kỳ 24 giờ-ngày. Ritchie lại là một người thức khuya điển hình. Vì vậy, thời gian sớm nhất cả ba có thể gặp mặt mỗi ngày là sau buổi ăn trưa. Và kể cả như vậy, có vài lần Canaday phải gọi đến nhà của Thompson và Ritchie để báo với họ khi nào căn-tin ở Bell Lab sẽ đóng cửa.

Tại căn-tin, ba người sẽ đưa ra những thành phần cơ sở cho công cụ quản lý file trong hệ điều hành mới, và hoàn toàn không để ý đến các nhân viên phục vụ đang dọn dẹp rác từ đồ ăn trưa mà họ bỏ ra. Họ cũng làm việc với hệ thống này trong văn phòng của họ tại khoa. Mcllroy, người có văn phòng đối diện với Canaday, nhớ lại cả ba người tụ tập tại một tấm bảng đen mùa hè năm đó.

Cuối cùng, họ cũng đưa ra một khái niệm tổng quát về hệ thống quản lý file và bắt đầu viết mã. Bộ ba – thật không may là cả ba đều có chữ viết rất xấu – quyết định dùng dịch vụ đọc-viết (dictating service) của phòng thí nghiệm. Một trong số họ gọi đến một số điện thoại mở rộng của phòng thí nghiệm và đọc toàn bộ mã vào trong một băng ghi âm. Sau đó, một thư ký hay một nhân viên có trách nhiệm sẽ phải đánh máy toàn bộ các mã này.

Dĩ nhiên công việc này không hoàn hảo. Trong số các lỗi đánh máy, “inode” được đánh máy thành “eye node”, nhưng kết quả vẫn tốt hơn so với mã họ tự viết ra.

Mùa Thu năm 1969, vợ và con của Thompson đi nghỉ ba tuần để thăm gia đình của bà tại Berkeley, và Thompson quyết định dùng thời gian đó để viết một assembler (trình biên dịch máy), một file editor (trình soạn thảo văn bản), và một kernel (nhân điều hành) để quản lý bộ xử lý trong máy PDP-7. Các thành phần này sẽ làm cho trình quản lý file của họ trở thành một hệ điều hành hoàn chỉnh. Ông dự định hoàn tất mỗi bộ phận trong một tuần.

Thompson đã hoàn thành toàn bộ các bộ phận nhanh hơn dự định. Đến tháng Chín, khoa khoa học máy tính tại Bell Labs đã có một hệ điều hành chạy trên PDP-7 – và nó không phải là Multics.

Lúc đó, PDP-7 không có băng từ hay đĩa cứng. Hệ thống được khởi động bằng cách đưa vào các băng giấy đục lỗ. Vì không có một thiết bị lưu trữ kèm theo, hệ thống quản lý file mà họ đã làm việc cật lực để tạo ra phải chờ đợi. Nhưng ít nhất họ có một môi trường time-sharing để sử dụng.

Dù vậy, họ cảm thấy họ đã đạt được một thành tựu và đặt tên cho hệ điều hành của họ là “UNICS”,  viết tắt từ UNIplexed Information and Computing System.

Phiên bản thứ bảy của Unix là một phát hành quan trọng của hệ điều hành Unix từ năm 1979. Nó là bản phát hành được phổ biến lần cuối cùng của Bell Labs trước khi AT&T thương mại hóa Unix. Sự kiện thú vị: user “dmr” và thư mục “/usr/dmr” cho Dennis Ritchie vẫn còn trong bản phát hành này.

Tháng Mười Một năm đó, bản tự đánh giá của Thompson – hay theo như cách nói của các nhân viên trong khoa Khoa học máy tính là tường trình “Tôi rất giỏi” (“I am great report”)  – đã mô tả về hệ điều hành mà ông đã tạo ra.

Vào mùa hè năm 1970, nhóm làm việc đã gắn một băng từ vào PDP-7, và hệ điều hành đang thành công của họ có thêm một danh sách bổ sung các công cụ cho lập trình viên (một vài công cụ này vẫn còn được sử dụng cho đến hôm nay).  Nhưng bất chấp thành công của họ, ban quản lý phòng thí nghiệm vẫn không đồng ý để cấp cho Thompson, Canaday và Ritchie một máy tính mới.

Chỉ đến cuối năm 1971 khoa Khoa học máy tính mới có một máy tính thật sự hiện đại. Nhóm làm việc Unix đã phát triển một số công cụ để tự động định dạng văn bản cho việc in ấn vào năm trước đó. Họ cũng đơn giản hóa quá trình viết tài liệu cho dự án con cưng của họ, nhưng các công cụ của họ đã bị tuồn ra ngoài và được một số các nhân viên khác trên tầng thượng sử dụng.  Cùng lúc đó, khoa Pháp định (legal) dự định để chi rất nhiều cho một chương trình trên mainframe gọi là “AstroText”. Nắm lấy cơ hội này, đội ngũ Unix nhận ra rằng họ chỉ cần một ít sửa đổi để nâng cấp các công cụ của họ để sử dụng cho việc chuẩn bị các bằng sáng chế tại bộ phận Pháp định.

Khoa Khoa học máy tính đã đề xuất ý kiến về việc mua một máy DEC PDP-11 cho việc tạo tài liệu với ban quản lý phòng thí nghiệm, Max Mathew đã đề nghị mua máy từ ngân sách của khoa âm học. Cuối cùng, ban quản lý thỏa hiệp và mua một máy cho nhóm Unix. Rốt lại, tin tức về hệ điều hành mới truyền ra ngoài, các doanh nghiệp và viện học thuật có PDP-11 bắt đầu liên lạc với Bell Labs về hệ điều hành mới của họ. Bell Labs đã cung cấp miễn phí – chỉ lấy phí bưu điện và phương tiện lưu trữ cho những ai muốn có một bản sao của hệ điều hành này.

Phần còn lại đã trở thành lịch sử công nghệ. Cuối thập niên 70, một bản sao của hệ điều hành này đã đến Đại học California tại Berkeley. Và vào đầu thập kỷ 1980, các lập trình viên tại đây đã tìm ra cách để chạy nó trên các PC. Phiên bản Unix tiếp theo của họ, Berkeley Software Distribution (BSD) được các lập trình viên tại NeXT, công ty do Steve Jobs sáng lập sau khi rời khỏi Apple năm 1985, sử dụng và phát triển. Khi  Apple mua lại NeXT vào năm 1996, BSD đã trở thành khởi điểm cho OS X và iOS.

Việc phân phối miễn phí Unix chấm dứt năm 1984, sau khi chính phủ tách rời AT&T và một hợp đồng trước đó nhằm ngăn cấp các công ty hưởng lợi từ các phát minh của Bell Labs hết hạn. Tuy nhiên, đến lúc này thì cộng đồng Unix đã quen với việc sử dụng các phần mềm miễn phí. Vì vậy sau khi biết AT&T bắt đầu thu phí cho các bản sao của Unix và không cho phép thay đổi mã nguồn, Richard Stallman và những người khác bắt đầu tái tạo lại Unix nhưng với các phần mềm phân phối miễn phí và không giới hạn việc sửa đổi mã nguồn. Họ gọi dự án này là “GNU”, viết tắt từ cụm từ “GNU’s Not Unix”. Đến năm 1991, Linus Tovalds, một sinh viên tại đại học Helsinky, Phần Lan đã dùng một số công cụ GNU để tạo ra một nhân điều hành mới chạy trên các PC. Và phần mềm của ông, về sau được gọi là Linux, đã trở thành nền tảng của hệ điều hành Android trong năm 2004.

Phụ lục: Thú cưng của Thompson tại Bell Lab

Năm 2011, Ken Thompson nhận được giải thưởng Japan Prize, một giải thưởng khoa học cao quý để vinh danh các thành tựu của ông với Unix. Trong phần diễn thuyết nhận giải, ông đã chia xẻ một câu chuyện mà Vint Cerf đã nói là “một trong những câu chuyện vui nhất mà tôi đã nghe” trong những ngày tại Bell Labs: Để thuyết phục Thompson đến phỏng vấn, nhân viên tuyển dụng tại Berkely đã đưa ra một đề nghị hấp dẫn là tài trợ toàn bộ chi phí chuyến đi khứ hồi giữa California và New Jersey. Đây là một cơ hội để nghỉ ngơi dài ngày bằng tiền của người khác, và Thompson thậm chí đã bắt đầu nghĩ đến giải thuật “travelling salesman” (một thuật toán rất nổi tiếng trong khoa học máy tính) để tính toán xem có thể thăm bao nhiêu bạn trong hành trình đi và về dù hoàn toàn không có ý định sẽ nhận lời làm việc. Một trong số những người bạn Thompson đã đến thăm sống tại Pensacola, Florida và rất hài hước.

Cuối cùng, Thompson đã đến Murray Hill. Và ngạc nhiên là ông đã thích Bell Labs và nhận lời làm việc. Một thời gian ngắn sau đó, ông nhận được một cái hộp từ người bạn ở Pensacola với một chú cá sấu con trong đó. Thay vì bỏ con cá sấu đi, Thompson nuôi nó trong một cái đĩa nướng bánh bằng thủy tinh mà ông để trên máy sưởi trong văn phòng và cho nó ăn bologna và hotdogs cho đến khi nó trốn ra khỏi phòng làm việc của ông. Vài ngày sau, nó xuất hiện trong một phòng đánh máy ở tầng dưới, đứng trên chân sau và rít lên với một người thư ký làm cô này bật dậy và hét lên. Cuối cùng, Thompson được ở lại Bell Labs, nhưng chú cá sấu phải ra đi, trước khi nó cắn một vài người đã thắng giải Nobel, theo như Thompson hóm hỉnh kể lại.

Nguồn: Ars Technica

Leave a Reply

Your email address will not be published. Required fields are marked *