Monday, July 23, 2007

Lịch sử Unix, Linux và phần mềm mã nguồn mở-miễn phí

1. Unix

Giữa năm 1969 - 1970, Kenneth Thompson, Dennis Ritchie và những người khác của phòng thí nghiệm AT&T Bell Labs bắt đầu phát triển một hệ điều hành nhỏ dựa trên PDP-7. Hệ điều hành này sớm mang tên Unix, một sự chơi chữ từ một dự án hệ điều hành có từ trước đó mang tên MULTICS. Vào khoảng 1972 - 1973, hệ thống được viết lại bằng ngôn ngữ C và thông qua quyết định này, Unix đã trở thành hệ điều hành được sử dụng rộng rãi nhất có thể chuyển đổi được và không cần phần cứng ban đầu cho nó. Các cải tiến khác cũng được thêm vào Unix trong một phần của sự thoả thuận giữa AT&T Bell Labs và cộng đồng các trường đại học và học viện. Vào năm 1979, phiên bản thứ 7 của Unix được phát hành, đó chính là hệ điều hành gốc cho tất cả các hệ thống Unix có hiện nay.

Sau thời điểm đó, lịch sử Unix bắt đầu trở nên hơi phức tạp. Cộng đồng các trường đại học và học viện, đứng đầu là Berkeley, phát triển một nhánh khác gọi là Berkeley Software Distribution (BSD), trong khi AT&T tiếp tục phát triển Unix dưới tên gọi là “Hệ thống III” và sau đó là “Hệ thống V”. Vào những năm cuối của thập kỷ 1980 cho đến các năm đầu thập kỷ 1990, một “cuộc chiến tranh” giữa hai hệ thống chính này đã diễn ra hết sức căng thẳng. Sau nhiều năm, mỗi hệ thống đi theo những đặc điểm khác nhau. Trong thị trường thương mại, “Hệ thống V” đã giành thắng lợi (có hầu hết các giao tiếp theo một chuẩn thông dụng) và nhiều nhà cung cấp phần cứng đã chuyển sang “Hệ thống V” của AT&T. Tuy nhiên, “Hệ thống V” cuối cùng đã kết hợp các cải tiến BSD, và kết quả là hệ thống đã trở thành sự pha trộn của 2 nhánh Unix. Nhánh BSD không chết, thay vào đó, nó đã được sử dụng rộng rãi trong mục đích nghiên cứu, cho các phần cứng PC, và cho các server đơn mục đích (vd: nhiều website sử dụng một nguồn BSD).

Kết quả là có nhiều phiên bản Unix khác nhau, nhưng tất cả đều dựa trên phiên bản thứ bảy ban đầu. Hầu hết các phiên bản Unix đều thuộc quyền sở hữu và được bảo vệ bởi từng nhà cung cấp phần cứng tương ứng, ví dụ Sun Solaris là một phiên bản của “Hệ thống V”. Ba phiên bản của BSD của nhánh Unix cuối cùng đã trở thành mã nguồn mở: FreeBSD (tập trung vào sự cài đặt dễ dàng trên phần cứng của dòng máy PC), NetBSD (tập trung vào nhiều kiến trúc CPU khác nhau) và một bản khác của NetBSD, OpenBSD (tập trung vào bảo mật).

2. Tổ chức phần mềm miễn phí (Free Software Foundation)

Vào năm 1984, Tổ chức phần mềm miễn phí (FSF) của Richard Stallman bắt đầu dự án GNU, một dự án tạo ra một phiên bản miễn phí của hệ điều hành Unix. Miễn phí, theo Richard Stallman nghĩa là tự do sử dụng, đọc, chỉnh sửa và phân phối lại. FSF đã thành công trong việc xây dựng một lượng khổng lồ các thành phần hữu ích, bao gồm một trình biên dịch C (gcc), một trình hiệu chỉnh văn bản khá ấn tượng (emacs) và một loạt các công cụ cơ bản. Tuy nhiên, vào những năm 1990, FSF đã gặp khó khăn trong việc phát triển kernel hệ điều hành [FSF 1998] mà nếu không có kernel này thì giấc mơ hoàn thành một hệ điều hành miễn phí của họ sẽ không thể hoàn tất.

3. Linux

Vào năm 1991, Linus Tovalds bắt đầu phát triển một kernel hệ điều hành, lấy tên của anh ta “Linux” [Tovalds 1999]. Kernel này có thể kết hợp với các tài liệu của FSF và các thành phần khác (cụ thể là một vài thành phần của BSD và phần mềm MIT của X-Windows) để có thể giới thiệu một hệ điều hành vô cùng hữu ích và có thể tự do chỉnh sửa.

Trong cộng đồng Linux, nhiều tổ chức khác nhau đã kết hợp các thành phần khác có sẵn. Mỗi một sự kết hợp đó được gọi là một bản phân phối (distribution) và các tổ chức phát triển các bản phân phối đó gọi là các nhà phân phối (distributors). Các bản phân phối thông dụng gồm có Linux Red Hat, Mandrake, SuSE, Caldera, Corel và Debian. Có những sự khác nhau giữa các bản phân phối đó, nhưng tất cả các bản phân phối đó đều dựa trên cùng nền tảng: kernel của Linux và các thư viện của GNU. Cả hai thứ đã kết hợp lại tạo thành một giấy phép kiểu “copyleft”, thay đổi những nền tảng cơ bản này phải được làm sẵn cho tất cả, một sự bắt buộc thống nhất giữa các bản phân phối Linux mà điều này không hề có trên BSD và các hệ thống Unix kế thừa từ AT&T.

4. Phần mềm miễn phí / Phần mềm mã nguồn mở

Sự quan tâm đến các phần mềm miễn phí được chia sẻ ngày càng tăng đã làm tăng sự cần thiết phải chỉnh sửa nó. Điều kiện được sử dụng rộng rãi là “Phần mềm mã nguồn mở” đã được định nghĩa trước đó. Phần mềm mã nguồn mở là những phần mềm được sử dụng mà mã nguồn được cung cấp nhưng không có sự giới hạn về bản quyền: người dùng có quyền sử dụng, xem, sửa đổi hay phân phối mã nguồn. Nó khác với những điều kiện của “Phần mềm miễn phí”. Phần mềm miễn phí thường gây rắc rối với những chương trình chỉ thực thi theo cách cho trước và không thay đổi được, cũng như mã nguồn không được xem, không được chỉnh sửa cũng như không được phân phối. Các bạn có thể đọc thêm về định nghĩa phần mềm miễn phí ở http://www.opensource.org/osd.html

Richard Stallmann, người đi tiên phong trong việc chống lại sự sở hữu phần mềm “làm của riêng” đã đưa khái niệm này ra trong dự án GNU hồi năm 1984. Theo Richard Stallmann một Free software phải đem đến cho người sử dụng các quyền tự do sau đây:

+ Quyền tự do 1: Tự do chạy chương trình vì bất kỳ lý do gì.

+ Quyền tự do 2: Tự do nghiên cứu chương trình làm việc như thế nào, được phép sửa đổi cho phù hợp với nhu cầu của người dùng cụ thể. Mã nguồn mở là điều kiện tiên quyết cho quyền tự do này

+ Quyền tự do 3: Tự do phân phối các bản sao để giúp đỡ những người khác có nhu cầu.

+ Quyền tự do 4: Tự do cải tiến chương trình và đưa sự cải tiến này ra cho cộng đồng cùng hưởng lợi. Đương nhiên, mã nguồn mở là điều kiện tiên quyết. Stallmann và những người ủng hộ đã dùng Free software để đối lập với proprietary software (phần mềm sở hữu riêng). Phần mềm sở hữu riêng cấm đoán người khác chỉnh sửa và phân phối lại, nó là tài sản và là bí mật riêng của cá nhân, công ty, tổ chức.

Tuy nhiên Free software không nhất thiết phải là Freeware, nghĩa là không nhất thiết phải miễn phí. Stallmann nhắc đi nhắc lại ”free” trong từ “free software” không phải là không tốn tiền mà là có tự do (“free as in free speech not as in free bear”), đặc biệt là quyền được thay đổi và đóng góp cho cộng đồng qua việc có thể nắm được mã nguồn của chương trình.

Vì vậy, tính chất mã nguồn mở của chúng (open source) là khác biệt rất quan trọng với phần mềm đóng (close source), cho dù phần mềm đóng có miễn phí hay không.

Tất nhiên, phần mềm mã nguồn mở luôn rẻ hơn phần mềm đóng vì việc chỉnh sửa sẽ ít tốn công sức hơn việc tạo mới từ đầu. Một khía cạnh khác của mã nguồn mở là tính an ninh trong sử dụng.

Phần mềm mã nguồn mở mà điển hình là Linux với các bản phân phối thương mại như Red Hat là một ví dụ chứng minh cho tư tưởng free software và tính khả thi của tư tưởng này.

Đáng buồn là ở nước ta, khi nghĩ đến …WARE thì đại đa số người dùng đồng nghĩa hóa nó với “xài chùa”. Phần mềm tự do, cụ thể là những phần mềm mã nguồn mở là lối thoát hầu như duy nhất cho một đất nước đang phát triển. Là đối trọng đáng kể cho những phần mềm thương mại của các đại gia phải biết điều (Microsoft đã phải hạ giá bán, phải công bố một số mã nguồn trước áp lực của free software).


No comments: