mtbab documentation

29
The mtBab Product Documentation For mtBab VF Edition 1.0 beta release Đào Công Tiến & Friends Đi hc Công Ngh Đi hc Quc Gia Hà Ni 09/2008

Upload: qazplm

Post on 27-Jan-2016

11 views

Category:

Documents


7 download

DESCRIPTION

Documentation using MtBab Dictionary

TRANSCRIPT

Page 1: MtBab Documentation

The mtBab Product Documentation

For mtBab VF Edition 1.0 beta release

Đào Công Tiến & Friends

Đại học Công Nghệ Đại học Quốc Gia Hà Nội

09/2008

Page 2: MtBab Documentation
Page 3: MtBab Documentation

Phần đầu của mọi tài liệu về mtBab đều giống nhau

Page 4: MtBab Documentation

P A R T I

The Philosophy of Freedom

Triết lý về tự do.

Page 5: MtBab Documentation

From GNU – Từ triết lý sống của Richard Stallman

Dự án GNU Tác giả Richard Stallman <http://www.stallman.org> Trích từ cuốn "Open Sources" Người dịch Phan Thị Hạnh Lê (Khoa CN, ĐHQGHN)

Cộng đồng chia sẻ phần mềm đầu tiên

Khi tôi bắt đầu làm việc tại phòng thí nghiệm Trí tuệ nhân tạo (AI Lab) của học viện MIT

năm 1971, tôi bắt đầu trở thành một thành viên của cộng đồng chia sẻ phần mềm đã tồn tại mấy năm trước đó. Sự chia sẻ phần mềm không chỉ giới hạn trong cộng đồng đặc biệt của

chúng tôi, nó xưa như máy tính vậy, giống như là sự chia sẻ công thức nấu ăn cũng bắt đầu từ lúc có nấu nướng. Nhưng chúng tôi thực hiện nó mạnh hơn bao giờ hết.

Phòng thí nghiệm Trí tuệ nhân tạo sử dụng một hệ điều hành chia sẻ thời gian gọi là ITS

(the Incompatible Timesharing System) mà đội ngũ hacker (1) của chúng tôi đã thiết kế và viết bằng ngôn ngữ assembler cho Digital PDP-10, một trong những cái máy tính lớn nhất của

thời đại. Là một thành viên của cộng đồng, một nhân viên hacker hệ thống của phòng thí nghiệm Trí tuệ nhân tạo, công việc của tôi là phải nâng cấp hệ điều hành này.

Chúng tôi đã không gọi phần mềm của chúng tôi là phần mềm tự do, vì đến thời điểm đó thì thuật ngữ này chưa tồn tại, nhưng thực sự nó chính là phần mềm tự do. Bất cứ khi nào có

người ở một trường đại học hoặc ở một công ty khác muốn chuyển hoặc sử dụng một chương trình, chúng tôi đều vui vẻ cho phép họ. Nếu bạn thấy ai đó sử dụng một chương trình là lạ

hay thú vị, bạn đều có thể hỏi xem mã nguồn của nó, vì thế bạn có thể đọc nó, thay đổi nó, hoặc mổ xẻ một phần của nó để làm nên một chương trình mới.

(1) Việc sử dụng từ "hacker" để ám chỉ những người chuyên lấy tin mật là một sự nhầm lẫn của thông tin đại chúng. Ở đây chúng tôi dùng "hacker" với nghĩa là "một người yêu lập

trình và muốn giỏi lập trình".

Sự sụp đổ của cộng đồng

Page 6: MtBab Documentation

Tình hình thay đổi một cách mạnh mẽ vào những năm đầu thập kỉ 80, khi Digital không

tiếp tục làm PDP-10. Kiến trúc của nó, tao nhã và mạnh mẽ vào những năm 60, không thể mở rộng đến những lĩnh vực khả thi vào những năm 80. Điều này có nghĩa là phần lớn những

chương trình soạn ra trên ITS đều trở nên lỗi thời.

Cộng đồng hacker của phòng thí nghiệm Trí tuệ nhân tạo cũng sụp đổ, trước đó không lâu. Vào năm 1981, the spin_off company Symbolics đã thuê gần hết các hacker của phòng thí nghiệm, và cộng đồng thưa thớt dần đã không thể tồn tại lâu hơn. Quyển Hackers, của Steve

Levy, mô tả sự kiện này, đồng thời đưa ra một bức tranh rõ ràng về cộng đồng trong buổi sơ khai của nó. Khi AI Lab mua một chiếc PDP-10 mới vào năm 1982, giám đốc phòng thí nghiệm

đã quyết định sử dụng hệ điều hành không cho phép chia sẻ thời gian tự do của Digital thay vì ITS.

Những chiếc máy tính của thời đại mới, như là VAX hoặc 68020, đều có hệ điều hành cho chính nó, nhưng không cái nào là phần mềm tự do cả: bạn buộc phải kí một hợp đồng không rõ ràng thậm chí chỉ để có một bản copy sử dụng được.

Điều này có nghĩa là bước đầu tiên để sử dụng là phải hứa rằng bạn không giúp hàng xóm.

Một cộng đồng cùng hợp tác bị cấm. Chủ của những phần mềm có đăng kí độc quyền đã tạo ra luật lệ là: "Nếu bạn chia sẻ nó cho hàng xóm, bạn là người vi phạm bản quyền. Nếu bạn muốn bất kì một thay đổi nào, hãy nói với chúng tôi."

Ý nghĩ rằng một hệ thống xã hội độc quyền phần mềm, cái hệ thống nói rằng bạn không có quyền chia sẻ hoặc thay đổi phần mềm là phản xã hội, rằng như thế là trái với đạo lí, như thế là hoàn toàn sai trái có lẽ hơi lạ đối với một số độc giả. Nhưng chúng ta có thể nói gì hơn về một hệ điều hành dựa trên việc chia rẽ cộng đồng và không hỗ trợ người dùng. Những độc giả thấy rằng ý tưởng trên là kì lạ có lẽ đã quá quen với hệ thống xã hội độc quyền phần mềm, hoặc đánh giá nó trên tư tưởng của những doanh nghiệp sản xuất phần mềm độc quyền. Những nhà sản xuất phần mềm đã làm việc dai dẳng và vất vả để thuyết phục mọi người rằng chỉ có một cách nhìn về vấn đề này.

Khi những nhà sản xuất "nói" về việc "tôn trọng" "quyền" của họ hay "chấm dứt sao chụp bất hợp pháp", cái họ "nói" ở đây chỉ là thứ yếu. Thông điệp thực sự trong những lời phát biểu

này chính là những giả định mà họ cho là hiển nhiên đúng; công chúng có bổn phận phải chấp nhận chúng vô điều kiện. Vậy hãy thử xem xét lại các giả định này.

Một giả định là các công ty phần mềm có quyền tự nhiên sở hữu phần mềm và vì thế có quyền đối với tất cả người dùng nó. Nếu đây là một quyền tự nhiên, thì cho dù nó có hại cho

xã hội đến thế nào, chúng ta cũng không được phản đối nó. Thú vị thay, hiến pháp Mỹ và những truyền thống hợp pháp lại bác bỏ quan điểm này; quyền tác giả không phải là một quyền tự nhiên, mà do chính phủ của con người áp dụng để giới hạn quyền copy tự nhiên của

con người.

Page 7: MtBab Documentation

Một giả định không tên khác là điều duy nhất quan trọng về phần mềm là những công

việc nào nó cho phép bạn làm, là người dùng máy tính không nên quan tâm đến loại xã hội nào chúng ta được phép có.

Giả định thứ ba là chúng ta không bao giờ có các phần mềm thích hợp (hay không bao giờ có các chương trình làm những việc đặc biệt này nọ) nếu chúng ta không đề nghị công ty hỗ trợ người dùng chương trình đó. Giả thiết này đã có vẻ hợp lý, trước khi phong trào phần mềm tự do chứng minh là chúng ta có thể làm nên rất nhiều phần mềm hữu dụng nếu phá bỏ

những xiềng xích áp đặt lên nó.

Nếu chúng ta không chịu chấp nhận những giả định trên, và đánh giá về vấn đề này dựa trên đạo lý thông thường khi người tiêu dùng là số một, chúng ta sẽ có những kết luận rất khác. Người dùng máy tính nên được tự do sửa lại chương trình cho phù hợp với nhu cầu của họ, và được tự do chia sẻ phần mềm, vì giúp đỡ lẫn nhau là cơ sở của xã hội.

Ở đây không đủ chỗ giải thích thêm lí do cho những kết luận này, vì thế tôi giới thiệu với

bạn đọc trang web <http://www.gnu.org/philosophy/why-free.html>

Sự lựa chọn hoàn toàn theo lương tâm

Cùng với việc cộng đồng của tôi ra đi, tiếp tục như trước đây là không thể được. Thay vào đó, tôi phải đối mặt với một sự lựa chọn hoàn toàn theo lương tâm.

Lựa chọn dễ dàng là tham gia vào thế giới phần mềm độc quyền, kí những hợp đồng không rõ ràng và hứa sẽ không giúp đỡ chiến hữu của tôi. Rất có khả năng là tôi sẽ phát triển những phần mềm bán theo những hợp đồng không được phơi bày, và vì thế cũng tăng thêm áp lực với người khác hòng chống lại hàng xóm của họ.

Tôi đã có thể kiếm được tiền bằng cách này, và có thể làm hài lòng bản thân bằng việc viết code. Nhưng tôi biết rằng khi kết thúc sự nghiệp, có thể tôi sẽ nhìn lại những năm tháng

đã xây lên bức tường chia rẽ con người, và mặc cảm rằng tôi đã sử dụng cuộc sống của mình để biến thế giới thành một nơi tồi tệ hơn.

Tôi đã có kinh nghiệm về hậu quả của một hợp đồng không được phơi bày, khi một người

từ chối đưa cho tôi và phòng thí nghiệm Trí tuệ nhân tạo MIT mã nguồn của chương trình điều khiển máy in (việc thiếu một số chức năng trong chương trình này đã làm cho việc in ấn trở

nên cực kì khó chịu). Vì thế tôi không thể thuyết phục bản thân rằng các hợp đồng không tiết lộ là vô hại. Tôi đã rất tức giận khi người kia từ chối chia sẻ với chúng tôi, tôi không thể quay lưng lại và đối xử như thế với bất kì ai.

Một sự lựa chọn khác, trung thực nhưng khó chịu, là rời bỏ lĩnh vực máy tính. Theo cách

đó tài năng của tôi sẽ không bị lạm dụng nhưng sẽ bị lãng phí. Tôi sẽ không cảm thấy tội lỗi vì chia rẽ và hạn chế người dùng máy tính, nhưng nó sẽ chẳng đi đến đâu cả.

Page 8: MtBab Documentation

Vì thế tôi tìm kiếm một con đường mà người lập trình có thể làm gì đó cho lẽ phải. Tôi tự

hỏi, liệu tôi có thể viết một hay một vài chương trình nào đó để làm cho cộng đồng chia sẻ phần mềm sống lại một lần nữa?

Câu trả lời thật rõ ràng, cái cần thiết đầu tiên chính là một hệ điều hành. Nó là phần mềm quyết định để bắt đầu sử dụng máy tính. Có một hệ điều hành, bạn có thể làm được rất nhiều thứ, không có nó, thậm chí bạn không thể nào chạy được máy tính. Với một hệ điều hành tự do, chúng ta có thể lại có một cộng đồng hacker cùng hợp tác, và mời bất kz ai cùng tham gia.

Và ai có khả năng sử dụng máy tính mà lại không bắt đầu bằng việc khai thác bạn bè của họ.

Là một người phát triển hệ điều hành, tôi có những kĩ năng bổ ích cho công việc này. Vì vậy dù không cho thành công là chuyện đương nhiên, tôi nhận ra rằng tôi đã được chọn để làm công việc này. Tôi chọn làm hệ điều hành tương thích với Unix, để nó có thể lưu chuyển được và để người dùng Unix có thể dễ dàng sử dụng nó. Cái tên GNU được chọn theo một truyền thống của hacker, là viết tắt đệ qui của "GNU's Not Unix" (GNU không là Unix).

Một hệ điều hành không chỉ có nghĩa là một cái nhân, vừa đủ để chạy các chương trình khác. Vào những năm 1970, tất cả các hệ điều hành đều có bộ xử lý lệnh, hợp ngữ, trình biên

dịch, thông dịch, trình gỡ rối, soạn thảo văn bản, gửi thư, và nhiều thứ khác. ITS có chúng, Multics có chúng, VMS có chúng, và Unix có chúng. Hệ điều hành GNU cũng sẽ phải có chúng.

Sau đó tôi đã nghe được những lời này, được cho là của Hillel (1):

Nếu tôi không vì tôi, thì ai sẽ vì tôi?

Nếu tôi chỉ vì tôi, thì tôi có là gì?

Nếu không phải bây giờ, thì bao giờ?

Quyết định bắt đầu dự án GNU cũng dựa trên một tinh thần như vậy.

(1) Là một người vô thần, tôi không theo bất kì người lãnh đạo giáo phái nào, nhưng thỉnh thoảng tôi thấy ngưỡng mộ một số điều họ đã nói.

Tự do như trong quyền tự do

Thuật ngữ "phần mềm tự do" đôi khi bị hiểu nhầm - nó không liên quan gì đến giá cả cả. Nó chỉ nói về quyền tự do. Vì thế, đây là định nghĩa của phần mềm tự do:

Bạn có quyền chạy chương trình với bất kì mục đích nào.

Bạn có quyền sửa chữa chương trình cho phù hợp với nhu cầu của bạn. (Để làm cho chương trình này hữu ích hơn trong thực tế, bạn phải truy cập mã nguồn, vì việc thay đổi một chương trình mà không có mã nguồn là cực kì khó khăn).

Page 9: MtBab Documentation

Bạn có quyền tự do phân phối lại các bản copy, dù miễn phí hay phải trả tiền.

Bạn có quyền phân phối những bản đã sửa chữa của chương trình, để cộng đồng

có thể được lợi từ những nâng cấp của bạn.

Vì thế "free" để chỉ quyền tự do, không phải để chỉ giá cả, không có sự mâu thuẫn nào giữa bán những bản copy và những phần mềm tự do. Thực tế, quyền tự do bán những bản copy là quyết định: Tập hợp những phần mềm tự do bán trên đĩa CD rất quan trọng đối với cộng đồng, và việc bán chúng là cách quan trọng để gây quĩ phát triển phần mềm tự do. Vì thế, một chương trình mà mọi người không được tự do tích lũy vào tập hợp này thì không

phải là phần mềm tự do.

Do sự nhập nhằng của từ "free", mọi người đã tìm cách thay thế nó từ rất lâu, nhưng chưa ai tìm được một từ thay thế thích hợp. Ngôn ngữ tiếng Anh có nhiều từ và nhiều sắc thái

hơn bất cứ ngôn ngữ nào, nhưng nó thiếu một từ đơn giản, ít nhầm lẫn để diễn tả cái gọi là "tự do" trong quyền tự do - "unfettered" (không bị giàng buộc) là từ gần nghĩa nhất. Những từ

thay thế khác như "liberated" (phóng thích, giải phóng), "freedom" (quyền tự do), "open" (mở ngỏ) đều có vài { nghĩa khác và vài điểm không tiện dụng.

Phần mềm GNU và hệ điều hành GNU

Phát triển một hệ điều hành hoàn chỉnh là một dự án rất lớn. Để có thể thực hiện được

nó, tôi quyết định tương thích và sử dụng những phần mềm tự do có sẵn bất cứ khi nào có thể. Ví dụ, từ rất sớm tôi đã quyết định sử dụng Tex như là trình định dạng văn bản chính

thống, vài năm sau, tôi quyết định sử dụng hệ điều hành X Window còn hơn là viết một hệ điều hành Window khác cho GNU.

Vì quyết định này, hệ điều hành GNU không giống như là tập hợp các phần mềm GNU. Hệ điều hành GNU bao gồm cả những chương trình không phải là phần mềm GNU, những chương trình phát triển bởi người khác và những dự án cho mục đích của chính họ, nhưng chúng ta có thể sử dụng vì chúng là phần mềm tự do.

Khởi đầu dự án

Vào tháng 1 năm 1984, tôi quyết định bỏ việc tại MIT và bắt đầu viết phần mềm GNU. Rời MIT là rất cần thiết để MIT không thể cản trở việc phân phối GNU như là một phần mềm tự do. Nếu tôi còn trong hàng ngũ của họ, MIT có thể đòi sở hữu sản phẩm, và có thể thi hành giới hạn phân phối của họ, hay thậm chí xếp nó vào tập hợp các phần mềm độc quyền. Tôi không có { đ ịnh làm một khối lượng lớn công việc chỉ để nhìn thấy nó trở nên vô tác dụng với

mục đích của nó: tạo nên một cộng đồng chia sẻ phần mềm.

Tuy nhiên, giáo sư Winston, giám đốc phòng thí nghiệm Trí tuệ nhân tạo của MIT, cũng

đã rất chân thành mời tôi tiếp tục sử dụng trang thiết bị của phòng thí nghiệm.

Page 10: MtBab Documentation

Những bước đi đầu tiên

Không lâu trước khi tôi bắt đầu dự án GNU, tôi có nghe về bộ dịch tự do cho các trường đại học (Free University Compiler Kit), còn gọi là VUCK (từ "tự do" trong tiếng Hà Lan bắt đầu bằng chữ cái V). Đây là một trình biên dịch thiết kế để có thể xử lí được nhiều ngôn ngữ, gồm cả C và Pascal, và để cung cấp cho các máy đa mục đích. Tôi đã đề nghị tác giả cho GNU sử dụng nó.

Ông ta đã đáp lại một cách chế giễu, tuyên bố rằng trường đại học thì được tự do nhưng

GNU thì không. Vì vậy tôi quyết định rằng chương trình đầu tiên của tôi cho dự án GNU sẽ là một trình biên dịch đa tầng và đa ngôn ngữ.

Hi vọng tránh việc tự mình viết toàn bộ chương trình dịch, tôi đã sử dụng mã nguồn cho trình dịch Pastel, một trình dịch đa tầng phát triển tại phòng nghiên cứu Lawrence Livermore. Nó cung cấp, và được viết bằng, một phiên bản mở rộng của Pascal, thiết kế để trở thành ngôn ngữ lập trình hệ thống. Tôi thêm vào đó phần giao diện ngôn ngữ C, và bắt đầu lập trình nó cho máy tính Motorola 68000. Nhưng tôi đã phải từ bỏ nó khi tôi nhận ra rằng trình biên dịch đó cần rất nhiều MB trong không gian ngăn xếp, và hệ điều hành Unix 68000 thì chỉ chấp

nhận được 64K.

Sau đó tôi thấy trình dịch Pastel hoạt động bằng cách phân tích toàn bộ đầu vào thành những cây cú pháp, chuyển toàn bộ cây cú pháp này vào mắt xích chỉ dẫn, và sau đó tổng hợp toàn bộ đầu ra, không giải phóng bộ nhớ. Trên quan điểm này, tôi kết luận tôi sẽ viết một trình biên dịch mới từ đống hỗn tạp đó. Cái trình biên dịch đó bây giờ được biết đến với tên gọi GCC, không sử dụng tẹo nào từ trình dịch Pastel trong nó cả, nhưng tôi đã cố gắng để tương thích và sử dụng giao diện C mà tôi đã viết. Nhưng đó là vài năm sau, đầu tiên, tôi làm việc với GNU Emacs.

GNU Emacs

Tôi bắt đầu làm GNU Emacs vào tháng 9 năm 1984, và vào đầu năm 1985 thì nó bắt đầu sử dụng được. Điều này cho phép tôi có thể sử dụng hệ điều hành Unix để soạn thảo, không hứng thú với việc dùng Vi hay Ed, tôi đã tự soạn thảo trên các loại máy khác nhau cho đến khi đó.

Tại thời điểm đó, mọi người bắt đầu muốn dùng GNU Emacs, làm nảy sinh câu hỏi: phân

phối nó như thế nào. Tất nhiên, tôi đã đưa nó lên một ftp server nặc danh ở chiếc máy tính của MIT mà tôi sử dụng (chiếc máy này prep.ai.mit.edu, vì thế trở thành site nguồn phân phối GNU Emacs, khi nó bị thải hồi vài năm sau đó, chúng tôi đã chuyển tên đó sang ftp server mới

của chúng tôi). Nhưng vào thời gian đó, rất nhiều người quan tâm không có internet và không thể có một bản copy bằng ftp. Vì vậy vấn đề đặt ra là, tôi sẽ nói gì với họ?

Page 11: MtBab Documentation

Tôi đã có thể nói: "Hãy tìm một người bạn có Net và lấy một bản copy cho bạn!". Hoặc tôi

đã có thể làm những gì tôi làm với chiếc PDP-10 Emacs đầu tiên: nói với họ rằng, "Gửi cho tôi một cái băng từ và một cái SASE, tôi sẽ gửi Emacs lại trên đó". Nhưng tôi không có việc, và tôi

phải tìm cách kiếm tiền từ phần mềm tự do. Vì thế tôi tuyên bố rằng tôi sẽ gửi một cái băng từ cho bất kì ai muốn có nó với giá 150 đôla. Bằng cách này tôi bắt đầu việc kinh doanh chuyển

phát phần mềm tự do, tiền thân của những công ty phân phối toàn bộ hệ điều hành GNU dựa trên Linux ngày nay.

Một chương trình có tự do cho tất cả người dùng?

Nếu một chương trình là tự do sau khi nó rời khỏi tay tác giả, không có nghĩa là nó sẽ

thành phần mềm tự do cho tất cả những ai có một bản copy của nó. Ví dụ, phần mềm thuộc sở hữu công cộng (phần mềm không có bản quyền). Tương tự như vậy, rất nhiều chương trình

tự do có bản quyền nhưng lại được phân phối dưới những giấy phép khá dễ dãi cho phép những phiên bản đã sửa chữa độc quyền.

Ví dụ điển hình của vấn đề này là hệ điều hành Window X. Phát triển tại MIT, và tung ra như một phần mềm tự do được cấp phép, nhưng nó đã sớm được rất nhiều công ty mua vào.

Họ thêm Window X vào hệ điều hành Unix độc quyền của họ, dưới dạng nhị phân, và phủ lên những hợp đồng cấm tiết lộ. Những bản copy này của X đã không còn tự do nữa.

Những người phát triển hệ điều hành Window X không xem đây là vấn đề nghiêm trọng - họ mong muốn và chủ định cho việc này diễn ra. Mục đích cuối cùng của họ không phải là quyền tự do, mà chỉ là "thành công", với nghĩa là "có nhiều người dùng". Họ không quan tâm liệu người dùng có quyền tự do hay không, mà chỉ xem họ có đông không.

Điều này dẫn đến một tình huống ngược đời là hai cách đo quyền tự do trả lời hoàn toàn khác nhau cho cùng một câu hỏi: "Chương trình có tự do không?". Nếu bạn đánh giá dựa trên

sự tự do từ điều khoản phân phối mà MIT đưa ra, bạn sẽ nói X là một phần mềm tự do. Nhưng nếu bạn đo mức độ tự do của những người dùng X bình thường, bạn sẽ phải nói rằng nó là một phần mềm độc quyền. Hầu hết những người dùng X đã phải chạy một phiên bản độc

quyền đi kèm với hệ điều hành Unix, chứ không phải là một phiên bản tự do.

Luật Copyleft và giấy phép lưu hành trong cộng đồng GNU

Mục tiêu cuối cùng của GNU là mang lại quyền tự do cho người dùng, chứ không phải để

nổi tiếng. Vì thế chúng ta cần sử dụng một điều khoản phân phối có thể ngăn chặn phần mềm GNU bị biến thành phần mềm độc quyền. Cách thức chúng ta sử dụng được gọi là "Copyleft" (1).

Copyleft dùng luật bản quyền (Copyright), nhưng đảo lại để phục vụ cho mục đích đối lập với mục đích thông thường của nó: Thay vì nghĩa cá nhân hóa phần mềm, nó mang nghĩa là

giữ cho phần mềm được tự do.

Page 12: MtBab Documentation

Ý tưởng trung tâm của luật copyleft là chúng ta cho mọi người quyền chạy, copy, sửa

chữa chương trình và phân phối những phiên bản đã sửa đổi - nhưng không cho phép thêm hạn chế. Vì thế, những quyền tự do chủ yếu của phần mềm tự do sẽ được đảm bảo cho tất cả

những ai có bản copy, chúng trở thành những quyền lợi không thể chuyển nhượng.

Khi luật copyleft có hiệu lực, thì những phiên bản sửa đổi cũng phải tự do. Điều này đảm bảo rằng sản phẩm của chúng ta là có giá trị đối với cộng đồng khi nó được xuất bản. Khi những lập trình viên tình nguyện nâng cấp phần mềm GNU, luật copyleft sẽ ngăn chặn việc

chủ của họ tuyên bố: "Anh không được chia sẻ những thay đổi đó, bởi vì chúng tôi dự định sẽ sử dụng nó để làm một phiên bản độc quyền".

Yêu cầu những thay đổi được tự do là cần thiết nếu chúng ta muốn đảm bảo quyền tự do cho mọi người dùng. Những công ty mà đã tư nhân hóa hệ điều hành X Window thường tạo ra một số thay đổi để tương thích nó với hệ điều hành và phần cứng của họ. Những thay đổi này thật là nhỏ nếu đem so với quy mô thật là lớn của X, nhưng nó không tầm thường. Nếu như tạo nên những thay đổi là lí do để phủ nhận quyền tự do của người dùng, thì thật là quá dễ dàng cho những ai lợi dụng lí do này.

Một vấn đề gần gũi liên quan tới việc phối hợp những chương trình tự do với mã nguồn không tự do. Một tổ hợp như vậy chắc hẳn sẽ không được tự do, bất cứ quyền tự do nào không có cho một bộ phận thì cũng không có cho toàn thể. Chấp nhận những tổ hợp như thế

có thể sẽ tạo ra một lỗ hổng đủ lớn để làm đắm một chiếc tàu. Vì thế, yêu cầu quan trọng của luật Copyleft là phải nút cái lỗ này lại: bất cứ cái gì thêm vào hay phối hợp với một chương

trình đã copyleft đều tạo thành một phiên bản tổ hợp lớn hơn cũng tự do và tuân theo luật copyleft.

Sự thi hành cụ thể luật copyleft mà chúng ta dùng cho hầu hết phần mềm GNU gọi là giấy phép lưu hành trong cộng đồng GNU (GNU General Public License), hay viết gọn là GNU GPL.

(1) Vào năm 1984 hay 1985, Don Hopkins (một anh chàng giàu sức tưởng tượng) đã gửi cho tôi một bức thư. Trên phong bì, anh ta đã viết một vài câu rất thú vị, bao gồm câu này:

"Copyleft -- all rights reversed". Tôi sử dụng từ copyleft để đặt tên cho phạm trù phân phối mà tôi phát triển vào thời gian đó.

Quỹ tài trợ phần mềm tự do

Khi nhu cầu dùng Emacs tăng lên, mọi người cũng trở nên quan tâm đến các dự án khác

của GNU, và tôi quyết định đã đến lúc phải tìm kiếm tài trợ một lần nữa. Vì vậy vào năm 1985 chúng tôi dựng nên quỹ tài trợ phần mềm tự do (FSF - Free Software Foundation), một tổ

chức được miễn thuế hỗ trợ phát triển phần mềm tự do. Quỹ FSF tiếp quản luôn việc kinh doanh phân phối băng từ Emacs, sau đó mở rộng bằng cách thêm các phần mềm tự do khác

(cả của GNU và không phải GNU) vào băng từ, và cả bán những quyển sách hướng dẫn sử dụng tự do.

Page 13: MtBab Documentation

Quỹ FSF chấp nhận quà tặng, nhưng hầu hết thu nhập của nó là từ việc bán các bản copy

của các phần mềm tự do, và các dịch vụ liên quan. Ngày nay nó bán cả các đĩa CD mã nguồn, các đĩa CD ở dạng nhị phân, các sách in hướng dẫn xinh xinh (tất cả đều có quyền tự do phân

phối hoặc sửa lại), và các phân phối hạng sang (nơi chúng tôi xây dựng một tập hợp các phần mềm để bạn lựa chọn công nghệ cơ sở cho máy tính).

Nhân viên của FSF đã viết và bảo trì một số lượng lớn các chương trình phần mềm GNU. Hai phần mềm trứ danh là thư viện C và trình tiện ích. Thư viện C của GNU là một cái thư viện

mà bất cứ chương trình nào chạy trên hệ điều hành GNU/Linux cũng dùng để truyền thông với Linux. Nó được phát triển bởi một cán bộ của FSF, Ronald McGrath. Trình tiện ích dùng

trên hầu hết các hệ điều hành GNU/Linux là Bash (Bourne Again Shell (1)), thiết kế bởi một nhân viên FSF Brian Fox.

Chúng tôi gây quĩ phát triển những chương trình này vì dự án GNU không phải chỉ về công cụ hay môi trường phát triển. Mục tiêu của chúng tôi là một hệ điều hành hoàn chỉnh, và những chương trình này rất cần thiết cho mục tiêu ấy.

(1) "Bourne Again Shell" là lối nói giỡn cái tên "Bourne Shell", một trình tiện ích thông

dụng trên Unix.

Ủng hộ phần mềm tự do

Triết lí phần mềm tự do chống lại thực tiễn kinh doanh phổ biến, nhưng nó không chống lại việc kinh doanh. Khi các doanh nghiệp tôn trọng quyền tự do của người dùng, chúng tôi

mong là họ sẽ thành công.

Bán các bản copy Emacs chính là một loại hình kinh doanh phần mềm tự do. Khi FSF tiếp quản công việc này, tôi cần một cách khác để kiếm sống. Tôi đã tìm thấy nó trong việc bán các dịch vụ liên quan đến những phần mềm tôi phát triển. Việc này bao gồm cả dạy những chủ đề như là sử dụng GNU Emacs như thế nào hay tùy chỉnh GCC ra sao, phát triển phần mềm, nhất

là tương thích GCC với những tầng mới.

Ngày nay mỗi loại kinh doanh phần mềm tự do đều được rất nhiều tập đoàn thực hiện. Một số phân phối tập hợp các phần mềm tự do trên các đĩa CD, số khác bán phần hỗ trợ theo yêu cầu của khách hàng, sửa lỗi, hay thêm các chức năng mới quan trọng. Thậm chí chúng tôi

bắt đầu thấy một số công ty chuyên giới thiệu sản phẩm mới.

Chú ý rằng tuy một số công ty gắn họ với nhãn hiệu "mã nguồn mở" trên thực tế lại kinh doanh những phần mềm không tự do làm việc cùng những phần mềm tự do. Đây không phải là những công ty phần mềm tự do, họ là những công ty phần mềm độc quyền sở hữu những

sản phẩm lôi người dùng khỏi tự do. Họ gọi chúng là "tiêu chuẩn thêm", đã cho thấy những tiêu chuẩn mà họ muốn chúng ta chấp nhận: "tiện lợi cao hơn tự do". Nếu chúng ta quý trọng tự do hơn một chút, chúng ta có thể gọi chúng là các sản phẩm "diệt tự do".

Page 14: MtBab Documentation

Những mục tiêu về công nghệ

Mục tiêu cơ bản của GNU là trở thành phần mềm tự do. Cho dù GNU không ưu việt về

công nghệ hơn Unix, nó vẫn có lợi ích về mặt xã hội, cho phép người dùng hợp tác, và lợi ích về mặt đạo đức, tôn trọng quyền tự do của người dùng.

Nhưng việc áp dụng những tiêu chuẩn phổ biến của thực tiễn vào sản phẩm là rất tự nhiên, ví dụ như, phân loại cấu trúc dữ liệu để tránh các hạn chế kích cỡ định sẵn phát sinh bất ngờ, và xử lí tất cả các mã 8 bit có thể ở bất cứ chỗ nào dễ hiểu.

Thêm vào đó, chúng tôi chống lại mục tiêu thu nhỏ kích cỡ bộ nhớ của Unix, bằng quyết

định ngừng cung cấp các máy tính 16 bit (hiển nhiên là các máy tính 32 bit sẽ là tiêu chuẩn khi hệ điều hành GNU hoàn thành), và không cố giảm không gian dùng bộ nhớ trừ khi nó vượt quá 1 MB. Trong những chương trình không đòi hỏi xử lí những file cực lớn, chúng tôi khuyến khích lập trình viên đọc toàn bộ đầu vào vào lõi, sau đó quét nội dung của nó mà không cần lo lắng gì về vấn đề vào/ra.

Những quyết định này làm cho các chương trình GNU vượt trội hơn hẳn các chương trình tương đương của Unix về mặt tin cậy và tốc độ.

Những máy tính được tặng

Khi uy tín của GNU tăng cao, mọi người bắt đầu đề nghị tặng các máy tính đang chạy Unix cho dự án. Việc này rất hữu ích, vì cách dễ nhất để phát triển các thành phần của GNU là chạy

nó trên một hệ điều hành Unix, và thay thế các thành phần của nó từng cái một. Nhưng họ lại nêu lên một vấn đề thuộc đạo lí: liệu chúng ta có quyền có một bản copy của Unix hay không?

Unix đã và đang là một phần mềm độc quyền, và triết lí của dự án GNU nói rằng chúng ta

sẽ không sử dụng phần mềm độc quyền. Nhưng áp dụng lí do tương tự khi dẫn đến kết luận bạo lực để tự vệ là chính đáng, tôi kết luận rằng việc sử dụng các phần mềm độc quyền là hoàn

toàn hợp pháp khi điều đó là cần thiết cho việc phát triển một sản phẩm thay thế được dùng tự do đề giúp người khác tránh sử dụng sản phẩm độc quyền.

Nhưng, cho dù sai trái chính đáng thì nó vẫn cứ là một sai trái. Ngày nay, chúng ta không dùng các bản copy của Unix nữa, vì chúng ta đã thay thế nó bằng hệ điều hành tự do. Nếu chúng ta không thể thay hệ điều hành của một cái máy tính bằng cái tự do, chúng ta hãy thay máy tính.

Danh sách các công việc của GNU

Khi dự án đang tiến hành, và số lượng các thành phần của hệ điều hành được phát minh hay phát triển ngày một tăng, cuối cùng cũng đến lúc làm một danh sách những thiếu hụt còn lại là một việc có { nghĩa. Chúng tôi sử dụng nó để tuyển chuyên viên thiết kế viết các phần

Page 15: MtBab Documentation

còn thiếu. Danh sách này được biết với cái tên là Danh sách công việc của GNU. Để bổ sung

những phần mà GNU còn thiếu, chúng tôi liệt kê thêm rất nhiều phần mềm hữu dụng và các dự án tham khảo khác, mà chúng tôi nghĩ rằng, một hệ điều hành thứ thiệt nên có.

Ngày nay, hiếm có phần nào của Unix còn sót lại trong danh sach công việc của GNU, những việc đó đã hoàn thành xong, trừ một số thứ không cần thiết lắm. Nhưng danh sách thì đầy những dự án mà người ta có thể gọi là những trình ứng dụng. Bất kì chương trình nào hấp dẫn hơn một lớp người dùng hạn hẹp cũng sẽ là một thứ hữu ích để thêm vào hệ điều hành.

Thậm chí cả game cũng đang được liệt vào danh sách này và đã được liệt vào ngay từ khi bắt đầu. Unix có game, nên đương nhiên GNU cũng nên có nó. Nhưng tương thích không phải là vấn đề đối với game, vì thế chúng tôi không theo danh sách game của Unix. Thay vào đó, chúng tôi liệt kê một dãy các loại game khác nhau mà người dùng có thể thích.

GNU Library GPL

Thư viện C của GNU dùng một loại copyleft đặc biệt gọi là GNU Library General Public License, cho phép liên kết các phần mềm độc quyền với thư viện. Tại sao phải đưa ra ngoại lệ này?

Nó không phải là vấn đề nguyên tắc, không có nguyên tắc nào nói rằng các sản phẩm phần mềm độc quyền được quyền có mã của chúng ta. Vậy tại sao lại đóng góp cho một dự án rõ ràng từ chối chia sẻ với chúng ta?. Sử dụng LGPL cho thư viện C, hay cho bất kì thư viện nào khác, là một vấn đề chiến lược.

Thư viện C làm những công việc chung, tất cả các hệ điều hành hay trình biên dịch độc quyền đều có thư viện C. Vì thế, để thư viện C của chúng ta chỉ dùng được cho các phần mềm tự do chẳng đem lại lợi ích gì, mà chỉ cản trở khả năng sử dụng thư viện của ta.

Một hệ điều hành là một ngoại lệ với điều này: Trên hệ điều hành GNU (bao gồm cả

GNU/Linux), thư viện C GNU chỉ là một thư viện C. Vì thế điều khoản phân phối thư viện C của GNU quyết định liệu có thể dịch một chương trình độc quyền cho hệ điều hành GNU. Không

có lí do đạo đức nào cho phép các ứng dụng độc quyền chạy trên hệ điều hành GNU, nhưng

xét về mặt chiến lược mà nói thì không chấp nhận chúng có khi còn cản trở khả năng sử dụng

của hệ điều hành GNU hơn là có thể khuyến khích phát triển các ứng dụng tự do.

Đó chính là lí do áp dụng LGPL, một chiến lược tốt cho thư viện C. Đối với các thư viện

khác, những quyết định mang tính chiến lược cần được xem xét trên cơ sở từng trường hợp một. Khi một thư viện làm một việc đặc biệt mà có thể giúp viết một số loại chương trình nào đó, thì bán nó với giấy phép GPL, chỉ giới hạn nó cho những chương trình tự do, chính là một

cách để giúp những nhà phát triển phần mềm tự do khác, cho họ lợi thế chống lại các phần mềm độc quyền.

Page 16: MtBab Documentation

Hãy xem xét trường hợp GNU Readline, một thư viện xây dựng để cung cấp tập lệnh soạn

thảo cho Bash. Readline được phát hành với giấy phép GNU GPL bình thường, chứ không phải là giấy Library GPL. Việc này có lẽ đã làm giảm số lượng Readline được sử dụng, nhưng điều đó

không gay tổn thất gì cho chúng ta. Trong thời gian ấy, có ít nhất một ứng dụng hữu ích được phần mềm tự do tạo nên để nó có thể dùng Readline, và điều này thực sự là có lợi cho cộng

đồng.

Những nhà phát triển phần mềm độc quyền có lợi do tiền đem lại, còn những nhà phát

triển các phần mềm tự do thì cần phải tạo lợi thế cho nhau. Tôi hi vọng rằng một ngày nào đó sẽ có một tập hợp lớn những thư viện GPL không có giá trị tương đương cho phần mềm độc

quyền, cung cấp những module hữu ích như là những khối làm sẵn để xây dựng trong những phần mềm tự do mới, tạo ra lợi nhuận lớn cho việc phát triển phần mềm tự do xa hơn.

Scratching an itch?

Eric Raymond nói rằng: "Tất cả các sản phẩm phần mềm tốt đều bắt đầu bằng scratching mong muốn cá nhân của người thiết kế". Có lẽ thỉnh thoảng điều đó cũng xảy ra, nhưng rất nhiều phần thiết yếu của phần mềm GNU lại được thiết kế để có hệ điều hành tự do hoàn

chỉnh. Chúng ta bắt đầu từ một phiên bản và một kế hoạch, không phải từ hứng thú.

Ví dụ, chúng tôi phát triển thư viện C GNU vì một hệ điều hành giống như Unix cần có một thư viện C, trình tiện ích Bash, hay trình tiện ích Tar. Các chương trình khác do chúng tôi viết, trình biên dịch C GNU C Compiler, GNU Emacs, GDB và GNU Make cũng với lí do tương tự.

Một vài chương trình GNU đã được thiết kế để đương đầu với những đe dọa cụ thể đối

với tự do của chúng ta. Vì thế, chúng tôi thiết kế Gzip để thay thế chương trình nén Compress, cái mà đã bị thất lạc trong cộng đồng vì các loại giấy phép độc quyền nhãn hiệu LZW. Chúng

tôi tìm người thiết LessTif, và nhiều người nữa để bắt đầu GNOME và Harmony, để xác định những vấn đề gây ra bởi những thư viện độc quyền (xem dưới đây). Chúng tôi đang phát triển chương trình bảo mật GNU (GNU Privacy Guard) để thay thế những sản phẩm phần mềm mã

hóa không tự do đang phổ biến, bởi vì không nên để người dùng phải lựa chọn giữa sự riêng tư và quyền tự do.

Tất nhiên, những người viết các chương trình này đã trở nên yêu thích công việc, và rất nhiều chức năng khác được người khác bổ sung thêm vào vì lợi ích của chính họ. Nhưng đó không phải là lí do để những chương trình này tồn tại.

Những thiết kế không mong đợi

Vào thời điểm bắt đầu dự án GNU, tôi tưởng tượng rằng tôi sẽ phát triển toàn bộ hệ đồng hành GNU, và sau đó sẽ phát hành nó trọn bộ. Nhưng mọi việc đã không xảy ra như thế.

Page 17: MtBab Documentation

Vì mỗi phần của hệ điều hành GNU đều được thực hiện trên hệ điều hành Unix, nên nó

đều có thể chạy trên hệ điều hành Unix, rất lâu trước khi hệ điều hành GNU hoàn chỉnh tồn tại. Một số chương trình này đã trở nên nổi tiếng, người dùng đã mở rộng và tương thích nó

với rất nhiều dạng phiên bản xung khắc của Unix, và thỉnh thoảng với các hệ điều hành khác.

Quy trình này đã làm cho các chương trình mạnh hơn nhiều, và thu hút cả vốn lẫn người cộng tác cho dự án GNU. Nhưng nó chắc chắn đã làm trì hoãn việc hoàn thành hệ điều hành chạy được rất nhỏ khoảng vài năm, vì những nhà thiết kế GNU thà bỏ thời gian duy trì và

thêm chức năng mới cho những thành phần đã có, còn hơn là chuyển sang viết một thành phần thiếu sau một cái khác.

Khung chương trình GNU

Vào năm 1990, hệ điều hành GNU gần như đã hoàn thành, thành phần chính thiếu duy nhất là một cái nhân. Chúng tôi quyết định thực hiện cái nhân là một tập hợp các quá trình server chạy trên nền Mach. Mach là một nhân siêu nhỏ được phát triển tại đại học Carnegie Mellon và sau đó là trường đại học Utah. GNU Hurd là một tập hợp các server (hay là "herb of gnus") mà chạy trên nền Mach, và làm rất nhiều việc của một cái nhân Unix. Thời gian bắt đầu

dự án đã bị hoãn lại vì chúng tôi chờ Mach được phát hành như một phần mềm tự do, giống như đã hứa.

Một lí do để lựa chọn thiết kế này là để tránh phần xem ra là khó nhất của công việc: gỡ lỗi cho một chương trình nhân mà không có bộ gỡ rối mã nguồn đi kèm. Phần việc này đã hoàn toàn được làm, trong Mach, và chúng tôi mong gỡ rối Hurd server như những chương trình người dùng với phần mềm Gdb. Nhưng phải mất rất nhiều thời gian để làm việc đó, và những server đa dòng gửi message cho nhau xem ra có vẻ khó gỡ rối. Làm cho Hurd hoạt động chắc chắn đã diễn ra trong nhiều năm.

Alix

Nhân GNU mới đầu không được gọi là Hurd. Tên gốc của nó là Alix, đã được đặt theo tên của người phụ nữ mà tôi yêu vào thời gian đó. Cô ấy, một nhà quản lí hệ điều hành Unix, đã chỉ ra tên của cô ấy hợp với mẫu đặt tên chung của các phiên bản Unix như thế nào. Cô ấy nói đùa với bạn rằng: "Ai có thể đặt tên cho một cái nhân theo tên tôi". Tôi đã không nói gì cả, nhưng quyết định làm cô ấy ngạc nhiên với một cái nhân có tên là Alix.

Nó đã không giữ nguyên như thế, Michael Bushnell (bây giờ là Thomas), thiết kế chính của cái nhân, thích cái tên là Hurd hơn, anh ấy đã đổi Alix thành tên của một phần có trong nhân, là một phần có thể bẫy các cuộc gọi và xử lí bằng cách chuyển message cho Hurd

server.

Page 18: MtBab Documentation

Cuối cùng thì Alix và tôi cũng chia tay, và cô ấy đã thay tên đổi họ, một cách độc lập, thiết

kế Hurd cũng thay đổi để thư viện C có thể gửi message trực tiếp cho server, và điều này làm cho thành phần Alix biến mất khỏi thiết kế.

Nhưng trước khi những chuyện này xảy ra, một người bạn của cô ấy đã tình cờ gặp cái tên Alix trong mã nguồn của Hurd, và báo cho cô ấy biết. Như vậy, cái tên đã làm được phần việc của mình.

Linux và GNU/Linux

GNU Hurd thì chưa sẵn sàng cho việc đem ra sử dụng. May thay, một cái nhân khác lại dùng được. Vào năm 1991, Linus Torvalds đã phát triển một cái nhân tương thích với Unix và gọi nó là Linux. Khoảng năm 1992, phối hợp Linux với một hệ điều hành GNU (lúc đó chưa hoàn chỉnh) đã tạo nên một hệ điều hành tự do hoàn thiện. Tất nhiên, bản thân việc phối hợp chúng đã là một việc rất đáng kể. Nhờ Linux mà ngày nay chúng ta có thể thực sự chạy được một phiên bản của hệ điều hành GNU.

Chúng tôi gọi cái phiên bản này là GNU/Linux, để nói rằng cấu tạo của nó là tổ hợp của hệ điều hành GNU với nhân Linux.

Những thử thách trong tương lai của chúng ta

Chúng tôi đã chứng minh được khả năng phát triển hàng loạt các phần mềm tự do. Điều

này không có nghĩa là chúng ta không thể bị đánh bại và không thể ngăn cản được. Có một vài thử thách khiến cho tương lai của phần mềm tự do không thể chắc chắn được, đương đầu với

chúng cần có sự chịu đựng và cố gắng không ngừng, đôi khi kéo dài nhiều năm trời. Nó đòi hỏi mọi người quyết tâm trân trọng tự do của mình và không để ai tước đoạt nó.

Bốn phần tiếp theo sẽ thảo luận về điều này.

Phần cứng bí mật

Các nhà sản xuất phần cứng ngày càng có xu hướng giữ bí mật các chi tiết kĩ thuật. Điều này làm việc viết các driver tự do để Linux và Xfree86 có thể hỗ trợ phần cứng thật khó khăn.

Ngày nay chúng ta đã hoàn thành xong hệ điều hành tự do, nhưng ngày mai chúng ta sẽ không có nó nếu chúng ta không thể hỗ trợ các máy tính tương lai.

Có hai cách để đối phó với vấn đề này. Người lập trình có thể thiết kế đối chiếu để có thể tìm ra cách hỗ trợ phần cứng. Số còn lại trong chúng ta có thể chọn phần cứng mà hỗ trợ bởi phần mềm tự do, khi số chúng ta tăng lên, việc giữ bí mật chi tiết trên sẽ tự trở thành một chính sách thất bại.

Page 19: MtBab Documentation

Thiết kế đối chiếu là một công việc lớn, liệu chúng ta có những lập trình viên đủ quyết

tâm để thực hiện nó? Có, nếu chúng ta xây dựng một cảm xúc mạnh mẽ rằng phần mềm tự do là nguyên tắc, và driver không tự do thật không thể chấp nhận được. Và liệu có nhiều người

chúng ta chịu trả thêm tiền, hay thậm chí chỉ thêm một chút thời gian, để sử dụng driver tự do? Có, nếu quyết tâm dành tự do lan rộng.

Những thư viện không tự do

Một thư viện không tự do chạy trên hệ điều hành tự do hoạt động giống như là cái bẫy

với người phát triển phần mềm tự do. Điểm hấp dẫn của thư viện nằm ở mồi, nếu bạn sử dụng thư viện, bạn sẽ rơi vào một cái bẫy, bởi vì chương trình của bạn không thể thường xuyên là

một phần của hệ điều hành tự do. Nói đúng ra, chúng tôi có thể tính hết cả chương trình của bạn, nhưng nó sẽ không chạy nếu thiếu thư viện. Thậm chí tồi tệ hơn, nếu một chương trình sử

dụng thư viện độc quyền mà phổ biến, nó có thể nhử rất nhiều các nhà lập trình không nghi ngờ vào cái bẫy.

Quay trở về những năm 1980, thí dụ đầu tiên của vấn đề này là bộ dụng cụ Motif. Mặc dầu lúc đó không có hệ điều hành tự do, rõ ràng vấn đề mà Motif gây ra cho nó còn kéo dài.

Dự án GNU đáp lại bằng hai cách: đề nghị những phần mềm tự do cá nhân hỗ trợ bộ dụng cụ X tự do cũng như là Motif, và đề nghị vài người viết bản thay thế cho Motif. Công việc đó kéo

dài nhiều năm; LessTif, phát triển bởi những nhà lập trình người Hung, trở nên đủ mạnh để hỗ trợ hầu hết các ứng dụng Motif chỉ trong năm 1997.

Giữa năm 1996 và 1998, một thư viện dụng cụ GUI không tự do khác, gọi là Qt, đã được sử dụng trong tập phần mềm tự do lớn, màn hình nền KDE.

Hệ điều hành tự do GNU/Linux không thể sử dụng KDE, vì chúng tôi không sử dụng được thư viện. Dù sao một số nhà phân phối thương mại của hệ điều hành GNU/Linux cũng không

khắt khe lắm với việc cài đặt phần mềm tự do có KDE vào hệ điều hành của họ, sản xuất ra một hệ điều hành có nhiều chức năng hơn nhưng ít tự do hơn. Nhóm KDE đã tích cực cổ vũ các nhà lập trình sử dụng Qt, và hàng triệu người mới dùng Linux chưa bao giờ nghĩ rằng có

vấn đề trong chuyện này. Tình thế xem ra là khó lay chuyển.

Cộng đồng phần mềm tự do đã đáp lại vấn đề này bằng hai cách: GNOME và Harmony.

GNOME, the GNU Network Object Model Environment, là dự án màn hình nền của GNU. Bắt đầu vào năm 1997 bởi Miguel de Icaza, và phát triển với sự hỗ trợ của hãng phần mềm

Red Hat. GNOME bắt đầu cung cấp những tiện nghi giống nhau cho màn hình nền, nhưng chỉ sử dụng phần mềm tự do. Nó cũng có những tiến bộ về mặt kĩ thuật, như là hỗ trợ nhiều ngôn

ngữ, chứ không chỉ C++. Nhưng mục đích chính của nó là tự do: không cần sử dụng bất kì phần mềm không tự do nào.

Harmony là một thư viện thay thế tương thích, thiết kế để có thể chạy phần mềm KDE không dùng Qt.

Page 20: MtBab Documentation

Vào tháng 11 năm 1998, những nhà thiết kế Qt tuyên bố một thay đổi của giấy phép khi

đem ra thực hiện có thể biến Qt thành phần mềm tự do. Không thể chắc chắn được nhưng tôi nghĩ rằng điều đó phần nào phụ thuộc vào phản ứng vững vàng của cộng đồng với vấn đề Qt

đưa ra trong khi nó không tự do. Một giấy phép mới thì không tiện và không công bằng, nên cộng đồng kêu gọi thiên hướng không dùng Qt.

*Chú { điều sau: vào tháng 9 năm 2000, Qt được phát hành với giấy phép GNU GPL, đã thực sự giải quyết vấn đề này.]

Chúng ta sẽ phản ứng lại với thư viện không tự do tạm thời tiếp theo như thế nào? Liệu toàn bộ cộng đồng có hiểu nhu cầu cần phải thoát khỏi cái bẫy? Hay là chúng ta phải từ bỏ tự do và sự thuận tiện, và gây ra một vấn đề nghiêm trọng? Tương lai của chúng ta phụ thuộc vào triết lí sống của chúng ta.

Bằng sáng chế

Đe dọa lớn nhất mà chúng ta gặp phải là các giấy phép độc quyền sáng chế phần mềm,

cái mà giới hạn thuật toán và các tính năng đặc biệt của phần mềm tự do đến hơn 20 năm. Bằng sáng chế thuật toán nén LZW được áp dụng cho năm 1983, và chúng ta không thể phát

hành phần mềm tự do để tạo ảnh nén trung thực GIF. Vào năm 1998, một phần mềm tự do sản xuất audio nén MP3 không được phân phối nữa dưới sự đe dọa của một bộ bằng sáng chế độc quyền.

Có rất nhiều cách để đối phó với những bằng sáng chế này: chúng ta có thể chứng minh

rằng bằng sáng chế là không có căn cứ, và chúng ta có thể tìm giải pháp thay thế nó. Và mỗi cách này chỉ dùng được một lúc nào đó, khi cả hai đều thất bại, một bằng sáng chế có thể bắt

tất cả các phần mềm tự do bỏ một số chức năng mà người sử dụng mong muốn. Chúng ta sẽ phải làm gì trong trường hợp này?

Những ai trong chúng ta coi trọng phần mềm tự do vì quyền tự do bất kể thế nào cũng

muốn giữ phần mềm tự do. Chúng ta sẽ phải cố gắng để làm ra sản phẩm không có các đặc điểm đã cấp bằng sáng chế độc quyền. Nhưng những ai coi trọng phần mềm tự do vì họ cho

rằng đó là nó ưu việt về mặt kĩ thuật thì có thể gọi đó là thất bại khi bằng sáng chế độc quyền ngăn cản nó. Vì vậy, dù nói về tác dụng thực tiễn của mẫu thiết kế kiểu "cathedral" <thegnuproject.html>, sức mạnh và sự đáng tin cậy của một vài phần mềm tự do thật là hữu ích, chúng ta cũng không dừng lại ở đó. Chúng ta phải nói về sự tự do và nguyên tắc đạo đức.

Tư liệu tự do

Khiếm khuyết lớn nhất trong hệ điều hành của chúng ta không phải ở phần mềm, mà là

việc thiếu sách hướng dẫn sử dụng tự do tốt. Tư liệu là một phần quan trọng trong bất kì phần mềm nào, khi một phần mềm tự do quan trọng không đi kèm với một bản hướng dẫn tự do

tốt, đó là một thiếu sót lớn. Ngày nay chúng ta có rất nhiều thiếu sót như thế.

Page 21: MtBab Documentation

Tư liệu tự do, cũng giống như phần mềm tự do, là một vấn đề về quyền tự do, không phải

về giá cả. Những tiêu chuẩn cho sách hướng dẫn tự do cũng tương đối giống với phần mềm tự do: đó là vấn đề đem lại tự do cho mọi người dùng. Phân phối lại (bao gồm cả buôn bán

thương mại) đều phải được cấp phép, trên mạng hoặc trên giấy tờ, để bản hướng dẫn có thể đi kèm với mọi bản copy của chương trình.

Giấy phép sửa chữa cũng rất quan trọng. Theo lẽ thường, tôi không nghĩ rằng mọi người cần phải có giấy phép sửa chữa tất cả các mẩu báo hoặc sách. Ví dụ, tôi không nghĩ là bạn hay

tôi bắt buộc phải cho phép sửa chữa những bài báo như thế này, những bài báo mô tả hành động và quan điểm của chúng ta.

Nhưng có một lí do đặc biệt lí giải vì sao quyền tự do sửa chữa lại quan trọng đối với tư liệu cho phần mềm tự do. Khi con người sử dụng quyền của họ để sửa chữa, thêm hoặc thay đổi các tính năng của nó, nếu họ chu đáo cũng sẽ thay đổi bản hướng dẫn sử dụng, vì thế họ có thể cung cấp tư liệu chính xác và dùng được kèm với chương trình đã sửa đổi. Một chương trình mà không cho phép người lập trình tận tâm và hoàn thành công việc, không thể đáp ứng được nhu cầu của cộng đồng ta.

Một vài giới hạn cho việc sửa đổi đã thi hành tỏ ra là không vấn đề gì. Ví dụ, yêu cầu bảo vệ bản quyền tác giả, thời hạn phân phối, hay danh sách tác giả, đều OK. Cũng không vấn đề gì nếu yêu cầu những phiên bản sửa đổi thêm ghi chú là họ đã sửa đổi, thậm chí có cả những

phần không thể xóa hay thay đổi, chừng nào những phần này còn liên quan đến những khía cạnh không thuộc phạm trù kĩ thuật. Những kiểu giới hạn này không thành vấn đề bởi vì

chúng không thể ngăn những người lập trình tận tâm sửa bản hướng dẫn của họ cho phù hợp với chương trình đã sửa. Nói một cách khác, họ không thể ngăn cộng đồng phần mềm tự do

tận dụng bản hướng dẫn.

Dù sao, cũng phải được sửa chữa toàn bộ nội dung kĩ thuật của bản hướng dẫn, và sau đó phát hành sản phẩm trên tất cả các phương tiện thông tin đại chúng thông thường, qua các kênh radio thông thường, nếu không thì các giới hạn cản trở cộng đồng, hướng dẫn không tự do, và chúng ta cần những bản hướng dẫn khác.

Liệu người phát triển phần mềm tự do có nhận thức và quyết tâm làm ra một dây chuyền

đầy đủ các bản hướng dẫn tự do? Một lần nữa, tương lai của chúng ta phụ thuộc vào triết lí sống của chúng ta.

Chúng ta phải nói về tự do

Ước tính rằng ngày nay có khoảng 10 triệu người sử dụng các hệ điều hành GNU/Linux

như Debian GNU/Linux hay Red Hat Linux. Phần mềm tự do đã phát triển lợi ích thực tế đến nỗi mà người dùng lũ lượt đến với nó chỉ đơn thuần vì lí do thực tế.

Kết quả tốt đẹp của việc này thật hiển nhiên: càng quan tâm phát triển phần mềm tự do, càng nhiều khách hàng cho việc kinh doanh phần mềm tự do, và càng nhiều khả năng khuyến

Page 22: MtBab Documentation

khích các công ty phát triển phần mềm tự do thương mại thay vì sản phẩm phần mềm độc

quyền.

Nhưng sự quan tâm đối với phần mềm tăng nhanh hơn là nhận thức về triết lí sống mà nó dựa vào, và điều này dẫn đến rắc rối. Khả năng đương đầu với những thử thách và những đe dọa nói trên của chúng ta phụ thuộc vào sự quyết tâm giữ các hãng tự do. Để chắc chắn rằng cộng đồng của chúng ta có quyết tâm này, chúng ta cần truyền đạt ý tưởng đó đến những người dùng mới khi họ bước vào cộng đồng.

Nhưng chúng ta đang thất bại: những nỗ lực để thu hút người dùng vào cộng đồng thì bỏ xa những nỗ lực truyền đạt cho họ bổn phận của cộng đồng. Chúng ta cần làm cả hai, và cần cân bằng cả hai.

"Open Source"

Truyền bá về quyền tự do với người dùng trở nên khó khăn hơn vào năm 1998, khi một bộ phận cộng đồng quyết định bỏ cách dùng "free software" và thay bằng "open source".

Một số những người ủng hộ từ này nhắm vào việc tránh nhầm lẫn giữa "free" (tự do) và "gratis" (miễn phí), thật là một cái đích sai lầm. Tuy nhiên, những người khác thì muốn tạm gác lại nguyên tắc tinh thần đã thúc đẩy sự phát triển của phần mềm tự do và dự án GNU, thay vào đó hướng tới các ngành liên quan và người dùng thương mại, nhiều người trong số

họ có tư tưởng đặt lợi nhuận lên trên tự do, trên cộng đồng và trên các nguyên tắc đạo đức. Vì thế, tu từ của "open source" tập trung vào khả năng làm phần mềm mạnh, chất lượng cao,

nhưng bỏ qua tư tưởng về tự do, cộng đồng, và các nguyên tắc đạo đức.

Tạp chí "Linux" là một ví dụ điển hình cho trường hợp này, chúng đầy rẫy những quảng cáo phần mềm độc quyền làm việc được với GNU/Linux. Khi thế hệ Motif và Qt tiếp theo ra đời, liệu những tạp chí này có cảnh báo người dùng tránh xa nó, hay lại đăng quảng cáo của nó?

Sự ủng hộ của các hãng kinh doanh cũng được đóng góp cho cộng đồng về nhiều mặt. Nhưng dành sự ủng hộ đó bằng cách nói ít hơn về tự do và đạo đức thì thật là tai hại, nó làm sự bất cân bằng từ trước giữa giới hạn và giáo dục bổn phận công dân thậm chí còn tồi tệ hơn.

"Free software" và "Open source" cùng nói về một loại phần mềm, không ít thì nhiều,

nhưng nói những điều khác nhau về phần mềm, và về giá trị. Dự án GNU tiếp tục sử dụng từ "Free software", để diễn tả ý tưởng tự do, chứ không chỉ kĩ thuật là quan trọng.

Cố gắng!

Triết lí của Yoda "Không có sự cố gắng!" có vẻ khéo, nhưng điều đó không phù hợp với

tôi. Tôi đã làm phần lớn các công việc của mình khi lo lắng liệu tôi có thể làm được không, và

Page 23: MtBab Documentation

không chắc chắn là nếu tôi làm thì tôi có thể vươn tới cái đích của mình. Nhưng dù sao tôi

cũng cố gắng, bởi vì không ai khác trừ tôi giữa kẻ thù và những thành phố của tôi, kêu gọi những hacker khác đến và tham gia cùng tôi.

Ngày nay, tôi thường không đơn độc. Tôi tin tưởng và thích thú khi thấy rất nhiều hacker lao vào để nắm giữ biên giới, và tôi nhận ra rằng, thành phố này có thể sống sót -- từ đây. Nhưng nguy hiểm mỗi năm một tăng, và bây giờ thì Microsoft nhắm tới chúng ta một cách rõ ràng. Chúng ta không thể cho tương lai tự do là điều dĩ nhiên. Đừng cho nó là chuyện đương

nhiên! Nếu bạn muốn giữ tự do của mình, bạn phải chuẩn bị bảo vệ nó.

Page 24: MtBab Documentation

To mtBab - Đến ý tưởng về một bộ từ điển dành cho cộng đồng

Nếu bạn đọc bản dịch trên có thể bạn cũng sẽ có những suy nghĩ như tôi. Tôi đã thấy mình thật sự mong muốn làm được điều gì đó, không hẳn chỉ là chứng tỏ mình, đó còn là một tinh thần vì cộng đồng mà trong mỗi chúng ta ít nhiều đang tồn tại. “Tự do” là từ chúng ta nghe nhiều trong cuộc sống và ngữ nghĩa của nó cũng rõ ràng như là bản thân chúng vậy. “Đem lại thêm một lựa chọn nữa” cũng là đem lại thêm “tự do” cho mọi người. Những suy nghĩ làm được một sản phẩm nào đó có giá trị đã xuất hiện trong đầu tôi từ khi tôi còn đi học. Và tôi luôn mong sẽ không bao giờ dừng lại việc này!

Sản phẩm đầu tiên tôi chọn để làm là xây dựng một bộ từ điển Anh-Việt. Vào lúc đó (năm 2006), tôi đã biết Babylon và rất ngạc nhiên vì đã có những người Việt Nam coi nó là một công cụ đầy hứa hẹn. Họ đã tạo ra các bộ từ điển tiếng Việt cho nó và điều đó đã khơi dậy trong tôi một ý tưởng. Đó là lý do tôi đã chọn tác phẩm đầu tiên tôi cần làm là gì. Và nếu không xét đến bất cứ một khía cạnh nào, những khía cạnh “không đúng”, tôi nghĩ nó là một ý tưởng tươi đẹp. Kế hoạch bắt đầu, tôi muốn bộ từ điển ấy nếu làm được nó phải thật tốt, theo nghĩa tiện lợi và có nguồn dữ liệu phong phú. Tuy nhiên, tôi lại không phải là một nhà ngôn ngữ học, hay từ điển học, vì vậy tôi phải lấy dữ liệu từ đâu đó. Tôi đã chọn Lạc Việt MTDEVA 2002, bây giờ vấn đề thực sự là lấy dữ liệu bằng cách nào, MTD là sản phẩm thương mại, data bị dấu kín trong các tệp nhị phân, cấu trúc mã hóa không thể rõ được. Tôi phải nghĩ ra một cách khác, một cách không chính qui. Nhưng mà cũng không thể ngồi gõ lại, chúng có thể ngốn từ ngày này sang ngày khác mất. Cuối cùng thì sau nhiều sự mò mẫm, tôi đã làm được, tất nhiên chất lượng dữ liệu cho đến bây giờ tôi cũng không thể bảo đảm. Và tôi nghĩ rằng tôi có trách nhiệm phải thông báo điều đó với những người đang sử dụng mtBab. Một bộ từ điển cần phải thật chính xác, nếu không nó có thể gây ra những suy nghĩ sai lầm ghê gớm khi người dùng hiểu sai về ngữ nghĩa của một vài từ quan trọng. Tôi vẫn hi vọng mtBab có ích nhiều hơn là nguy cơ của nó. Việc lấy và sử dụng dữ liệu từ MTD mà không được sự đồng ý của Lạc Việt cũng làm tôi suy nghĩ nhiều. Nhưng tôi đã làm tất cả không vì lợi ích của cá nhân tôi, chỉ với mong muốn đem lại thêm một lựa chọn nữa cho mọi người (một lựa chọn thật sự khiến họ có thể nâng cao hiệu quả học tập và làm việc). Đó là một động lực đáng kể để tôi tiếp tục công việc.

Page 25: MtBab Documentation

Công việc chuyển sang giai đoạn transform nguồn dữ liệu sang định dạng của Babylon Glossary Builder, có hai loại định dạng được chấp nhận là GLS (Text Format) và Excel Format. Sử dụng GLS xem ra có vẻ đơn giản nhưng, bảng mã tiếng Việt không hoạt động tốt với định dạng Plain Text. Tìm trên internet, tôi biết có một cách khắc phục đó là sử dụng mã NCR Decimal. Chuyển sang mã này rồi lại gặp tiếp vấn đề khác, nguồn dữ liệu có một số từ có dấu (ví dụ agrément, café), NCR Decimal thì lại không thể áp dụng cho các Key, việc dùng GLS cầm chắc thất bại. Dùng định dạng Excel cũng không khó lắm, nhưng nguồn dữ liệu build thử chỉ khoảng vài trăm từ không cho thấy hết các khó khăn phải vượt qua. Đó là việc Excel 2003 trở về trước chỉ có tối đa 65536 hàng, trong khi bộ từ điển có tới hơn 100 nghìn từ. May thay Excel 2007 đã khắc phục được, nó là lựa chọn tốt nhất, không có cái nào tốt hơn. Nhưng còn một vấn đề nữa mỗi Cell trong bảng tính của Excel chỉ cho phép tối đa khoảng hơn 8000 kí tự, trong khi có những từ rất dài (“go” là từ dài nhất trong nguồn dữ liệu). May là Babylon Builder chấp nhận nghĩa trên nhiều Cell, việc build thử vì thế đã tiến triển tốt.

Ngắm những từ build thử trên của sổ Babylon, thành quả đầu tiên, tôi thấy rất vui và hãnh diện. Nhưng với những từ như “go” thì thật là khó nhìn, chúng quá dài, tôi nảy ra ý tưởng xây dựng các chức năng collapse, expand cho các phần mà hầu như không quá quan trọng; muốn vậy chỉ có cách dùng mã Javascript. Không may là Babylon Builder luôn bỏ qua những thẻ <SCRIPT> khi build, bế tắc một thời gian dài, tôi mới phát hiện ra trình builder này cho phép các mã Javascript nằm bên trong các Event Handler như onLoad, onClick, onMouseOver, … Tuy nhiên mã Javascript bên trong các Event Handler này tỏ ra rất hạn chế, các biến khai báo trong đó chỉ là Private, chúng trở nên không nhìn thấy được trong các Event Handler khác. Vậy phải làm thế nào, tôi lại tiếp tục nghĩ theo nhiều hướng cho đến khi biết phải làm gì. Đó là một cách rất hay, sử dụng mô hình DOM (Document Object Model), cụ thể là tạo ra một SCRIPT Element bằng document.createElement(„SCRIPT‟) sau đó append nó vào trong thẻ <HEAD> của trang giải nghĩa, giờ thì đã có thể khai báo biến và hàm mang tính chất GLOBAL. Một vấn đề nữa lại nảy sinh, đặt các nút bấm “collapse”, “expand” ấy ở đâu, nếu đặt được trên toolbar (cái phần mà chứa tên của bộ từ điển) của Babylon thì tốt quá. Muốn vậy thì phải biết cấu trúc của trang giải nghĩa mà Babylon tạo ra, tôi tìm cách lấy nó, rồi tìm xem cái toolbar ấy ở đâu trong đống mã HTML ấy để nhét các button của mình vào.

Có rất nhiều vấn đề như thế khi tôi build mtBab EV, nhưng tôi lần lượt đã vượt qua chúng, dù cũng mất nhiều thời gian. Giờ đến giai đoạn quảng bá nó, tôi gửi nó lên softvnn.com đầu tiên, sau đó là vài trang khác. Có nhiều câu hỏi phản hồi, nhưng tôi không thể trả lời được tất cả, vì không có đủ thời gian. Hi vọng những người đã từng sử dụng mtBab sẽ tiếp tục quảng bá cho nó. Và cũng hi vọng những ai cần nó nhờ sự quảng bá này có thể biết đến sự tồn tại của nó trên đời.

Page 26: MtBab Documentation

mtBab Family - Gia đình mtBab

Lúc tôi viết tài liệu này cũng là lúc phiên bản Việt-Anh được build xong, gia đình mtBab

đã có thêm một thành viên mới, mtBab VE. Trong tương lai gần có thể chúng ta sẽ có thêm

mtBab EV 2.0, mtBab OxPi (Oxford Picture Dictionary), mtBab Encyclopedia VN. Cái tên mtBab

dần trở nên không chính xác lắm, vì có thể trong tương lai gần chúng ta sẽ có những bộ từ

điển mà nguồn dữ liệu không phải được lấy từ MTD. Nhưng nó đã trở thành một cái tên mà

nhiều người biết đến, cho nên tôi thật sự không muốn thay đổi nữa.

Tất nhiên là tôi rất muốn ngày càng có nhiều hơn những bộ từ điển mới, đặc biệt là các từ

điển thông dụng French-Vietnamese, Vietnamese-French, Chinese-Vietnamese, Vietnamese-

Chinese, Japanese-Vietnamese, Vietnamese-Japansese, Germany-Vietnamese, Vietnamese-

Germany,…

Ngày 25/04/2008: Phiên bản mtBab CV 1.0 beta được hoàn thành và ra nhập gia đình

này. Hiện phiên bản mtBab EV 2.0 và mtBab VE 2.0 đang trong giai đoạn phát triển để mở

rộng những tính năng hiện có và xây dựng các tính năng mới, đặc biệt sẽ được tích hợp

thêm từ điển đồng nghĩa và khả năng tra gần đúng tốt hơn.

Ngày 29/04/2008: Phiên bản mtBab VC 1.0 beta được hoàn thành và gia nhập gia đình

mtBab.

Ngày 21/09/2008: Phiên bản mtBab FV 1.0 beta được hoàn thành và gia nhập gia đình

mtBab.

Ngày 25/09/2008: Phiên bản mtBab VF 1.0 beta được hoàn thành và gia nhập gia đình

mtBab.

Page 27: MtBab Documentation

P A R T I I

mtBab VF Edition 1.0 beta

Thành viên thứ 6 trong gia đình mtBab

Page 28: MtBab Documentation

Introduction – Giới thiệu

mtBab VF là bộ từ điển Việt-Pháp dành cho Babylon, nguồn dữ liệu được lấy hoàn toàn từ

Lạc Việt MTDFVP 2004, phiên bản dành cho WEB. Lạc Việt MTD là bộ sản phẩm thương mại, vì

vậy việc sử dụng sản phẩm này chỉ mang tính chất cá nhân, dành cho tất cả những ai thực sự

cần một công cụ học tập và làm việc hiệu quả.

mtBab VF có thể chạy tốt với Babylon phiên bản 6, 7, các phiên bản cũ hơn của Babylon có

thể không được hỗ trợ. Để tra từ với mtBab FV, bạn dùng cách thức tra nhanh của Babylon

(thường là CTRL + Right Click). Babylon có thể giúp bạn tra từ trên hầu hết các cửa sổ, thậm

chí trên cả trang PDF (nếu bạn sử dụng trình PDF Reader của Adobe – hãng giữ bản quyền định

dạng PDF). Bạn cũng có thể tra từ bằng cách gõ trực tiếp từ cần tra trên cửa sổ Babylon.

Page 29: MtBab Documentation

In Details – Chi tiết

1. Cài đặt

mtBab VF 1.0 được phân phối dưới dạng tệp .BGL, việc cài đặt với định dạng này sẽ

được làm tự động nếu bạn đã có sẵn Babylon trong hệ thống. Chi tiết xin xem trên

www.babylon.com.

Vì Babylon sử dụng ActiveXControl của Internet Explorer để hiển thị trang giải nghĩa, do

vậy bạn cũng nên nâng cấp Internet Explorer lên phiên bản mới nhất (bản chính thức 7), giúp

Babylon hiển thị chính xác nhất nội dung của các bộ từ điển.

Bản phân phối còn đính kèm theo danh sách từ của bộ từ điển này (tệp wordlist.txt).

2. Sử dụng

a. Phiên bản này không chứa các chức năng đặc biệt nào

b. Dành riêng cho định dạng sách điện tử PDF

Có lẽ bạn phải sử dụng phần mềm Adobe Reader cho định dạng này nếu muốn sử

dụng tốt với Babylon. Ngoài ra, một số tệp PDF được mã hóa (encrypt) ở mức bảo mật cao

không cho phép Copy sẽ làm cho Babylon thất bại. Bạn có thể khắc phục bằng cách sử

dụng một chương trình phần mềm của hãng thứ 3 cho phép tháo gỡ các hạn chế đó

(decrypt) khỏi tệp.