CHƯƠNG 1. PHẦN MỀM MÃ NGUỒN MỞ 1. Mã nguồn mở, phần mềm mã nguồn mở là gì? 1. Khái niệm phần mềm.
Phần mềm (software) bao gồm các thuật toán và các biểu diễn cho máy tính của chúng, đó chính là các chương trình. Chương trình có thể được biểu diễn trên bìa đục lỗ, trên băng từ, đĩa từ và các môi trường khác, tuy nhiên cái cơ bản nhất của phần mềm chính là tập các chỉ thị tạo nên chương trình chứ không phải là môi trường vật lý được sử dụng để ghi chương trình. [1;tr5] Cho đến ngày nay có hàng trăm nghìn loại máy tính được thiết kế, chế tạo mới thì khái niệm phần mềm vẫn được đề cập tới chỉ với 3 yếu tố: - Chương trình: biểu diễn dưới dạng mã nguồn hay mã máy. Mã nguồn hay mã máy đó là một tập các chỉ thị lệnh được viết dưới dạng một ngôn ngữ lập trình.
Tập chỉ thị này có tác dụng như một loại ngôn ngữ trung gian giữa con người và máy tính, con người dùng ngôn ngữ lập trình này để giao tiếp với nhau và thông qua đó ra lệnh cho máy tính thực hiện “chỉ thị lệnh” đó để nhằm đưa đến kết quả họ mong muốn. Việc dịch mã nguồn, mã máy từ tập chỉ lệnh đưa vào đó thường thông qua một trình biên dịch hoặc một trình thông dịch. Ví dụ về một đoạn mã máy. - Cấu trúc dữ liệu: là một cách cấu trúc dữ liệu trong bộ nhớ, đó là cách người ta cài đặt cấu trúc ấy trên máy tính điện tử và dựa trên cơ chế lưu trữ này mà thực hiện các phép toán, các xử lý.
Khi đề cập đến cấu trúc lưu trữ, người ta phân biệt thành hai loại cấu trúc lưu trữ, đó là: cấu trúc lưu trữ tương ứng với bộ nhớ trong- lưu trữ trong, 4 hay ứng với bộ nhớ ngoài- lưu trữ ngoài. Để cho dễ hiểu, giả sử dữ liệu mà ta cần lưu trữ là số sách trong thư viện, vậy dữ liệu được sắp xếp sẽ là sách mà ta đã sắp xếp bằng cách phân chia theo thể loại, theo danh mục tác giả, nhà xuất bản,… Dữ liệu được tổ chức trong máy tính cũng vậy, sẽ được lưu trữ dựa theo 1 tiêu chí nào đó tùy thuộc vào hệ quản trị cở sở dữ liệu. Ví dụ về tổ chức dữ liệu. - Tài liệu: tài liệu kèm theo một bản phần mềm thường bao gồm 2 loại đó là tài liệu kỹ thuật (bao gồm các tài liệu đặc tả chi tiết, các tài liệu thiết kế, phân tích hệ thống được tạo ra trong quá trình phát triển phần mềm, .) và tài liệu hỗ trợ người dùng (tài liệu dành trợ giúp người dùng, người quản lý phần mềm ở công ty thực tế thao tác, sử dụng phần mềm đó).
Mã nguồn mở là gì? Mã nguồn mở là những phần mềm được cung cấp dưới dạng cả mã và nguồn, miễn phí cả về giá và cả bản quyền- thể hiện ở chỗ người dùng có quyền sửa đổi, cải tiến, phát triển, nâng cấp theo một vài nguyên tắc chung được quy định trong giấy phép phần mềm nguồn mở mà không cần xin phép ai, và chức năng này hoàn toàn không có đối với các phần mềm nguồn đóng. Tóm lại, thuật ngữ mã nguồn mở- “Open source” được dùng để lôi cuốn các doanh nhân trên khía cạnh của sự miễn phí và “quyền sở hữu hệ thống”. 5 Mã nguồn mở là miễn phí về việc cấp mã và quyền sử dụng được tự do, nhưng nhà cung cấp mã nguồn vẫn có thể thu một phần phí cho việc bảo hành, huấn luyện, nâng cấp, tư vấn xây dựng, cài đặt phần mềm…cho doanh nghiệp dựa trên những mã nguồn mở được toàn quyền sử dụng đó. Đó là chính đáng, vì họ không bán sản phẩm mã nguồn mở bởi nó là sản phẩm trí tuệ chung của cả một cộng đồng, không thuộc riêng đối tượng nào, nhưng có có quyền thu phí từ những dịch vụ mà họ phục vụ người dùng.
Xét đến lợi ích mà phần mềm nguồn mở mang lại, khá nhiều và khá hữu ích đó là quyền tự do sử dụng mọi chương trình, cho mọi mục đích, tự do nghiên cứu cấu trúc, tự do chỉnh sửa, tùy biến, truy cập tới mã nguồn, tự do phân phối, phát hành những bản sửa đổi phục vụ cho mục đích của cộng đồng. Khái niệm phần mềm mã nguồn mở. Lịch sử phát triền Theo Dabid Wheeler, một cách ngắn gọn, chương trình phần mềm nguồn mở là những chương trình mà quy trình cấp phép sẽ cho người dùng quyền tự do chạy chương trình theo bất kỳ mục đích nào, quyền nghiên cứu và sửa đổi chương trình, quyền sao chép và tái phát hành phần mềm gốc hoặc phần mềm đã sửa đổi “mà không phải trả tiền bản quyền cho những người lập trình trước”. Phần mềm mã nguồn mở/tự do (gọi tắt là FOSS) đã trở thành một hiện tượng toàn cầu, đi từ vị trí tương đối mờ nhạt lên thành một trào lưu thời thượng trong vòng có vài năm.
Tuy nhiên, vẫn chưa có nhiều người hiểu một cách thấu đáo những yếu tố gì thật sự tạo nên FOSS và sự bùng nổ của khái niệm này. Có hai tư tưởng chủ đạo chi phối thế giới phần mềm nguồn mở: tư tưởng của Tổ chức Phần mềm tự do (Free Software Foundation-FSF) và tư tưởng của Chương trình Sáng kiến Nguồn mở (OSI- Open Source Initiative). Chúng ta hãy bắt đầu từ thuyết của FSF, vì học thuyết này ra đời sớm hơn và có vị trí tiên phong trong trào lưu phần mềm nguồn mở. Theo thuyết của FSF, phần mềm miễn phí nhằm mục đích bảo vệ bốn quyền tự do của người dùng: - Quyền tự do chạy một chương trình với bất kỳ mục đích nào - Quyền tự do nghiên cứu cách thức vận hành của một chương trình và thích ứng nó cho phù hợp với nhu cầu của mình.
Khả năng tiếp cận mã nguồn là điều kiện tiên quyết cho việc này. 6 - Quyền tự do phát hành các phiên bản của phần mềm để giúp đỡ những người xung quanh. - Quyền tự do thêm mới các chức năng cho một chương trình và công bố những tính năng mới đó đến công chúng để toàn cộng đồng được hưởng lợi. Khả năng tiếp cận mã nguồn là điều kiện tiên quyết cho việc này.
Trung tâm của tư tưởng FSF là quyền tự do hợp tác. Vì phần mềm phi tự do (Free ở đây nghĩa là Freedom chứ không bởi vì vấn đề giá cả) hạn chế quyền tự do hợp tác, FSF coi phần mềm và những hạn chế khác theo luật bản quyền hiện hành. Tất cả những điều này đều hạn chế bốn quyền tự do của người dùng như đã nêu ở trên. Ý tưởng chủ đạo đằng sau phần mềm nguồn mở của OSI rất đơn giản: khi người lập trình có thể đọc, lưu hành, và sửa đổi mã nguồn của một phần mềm, thì phần mềm đó ngày càng phát triển.
Người ta đọc, điều chỉnh, sửa lỗi nhanh chóng gấp nhiều lần so với phần mềm nguồn đóng. OSI đặt làm trọng giá trị kỹ thuật của việc tạo những phần mềm mạnh, có độ tin cậy cao, và phù hợp với giới kinh doanh hơn FSF. Chương trình này ít quan tâm hơn tới giá trị đạo đức của phần mềm nguồn mở và chú ý nhiều hơn vào những ích lợi thực tiễn của phương pháp xây dựng và quảng bá FOSS. Mặc dù tư tưởng nền tảng của hai trào lưu này tương đối khác nhau, cả FSF và OSI đều chia sẻ cùng một không gian hoạt động và hợp tác với nhau trên những vấn đề thực tiễn như xây dựng phần mềm, v.v… Nói như Richard Stalman, thì Trào lưu phần mềm tự do và Trào lưu phần mềm nguồn mở là hai đảng chính trị của cùng một cộng đồng dân cư.
Trào lưu phần mềm nguồn mở có nguồn gốc xa xưa từ những ngày khởi thủy nền công nghiệp máy tính, cho dù lúc đó nó còn chưa được định nghĩa một cách chính thống. Chỉ cho đến cuối thập kỷ 70 đầu 80 thì tập quán chia sẻ phần mềm mới trở nên xung khắc với bản quyền phần mềm. Một trong những tiếng nói đầu tiên cất lên ủng hộ phần mềm đóng là bức thư nổi tiếng của William H. Gates III - “Thư ngỏ gửi những người mê máy tính”.
Trong thông điệp này, đề ngày 3 tháng 2 năm 1976, ông kịch liệt đả kích tập quán chia sẻ phần mềm bấy giờ rất thịnh hành: “Sao lại thế này nhỉ? Đa phần các bạn- những người mê máy tính- hẳn phải ý thức được rằng các bạn đang đánh cắp phần mềm của người khác làm của mình. Phần cứng thì phải mua, nhưng phần mềm là một thứ có thể chia sẻ. Ai quan tâm liệu những người bỏ công sức ra làm phần mềm có được trả công hay không?” 7 Phần mềm đóng thu được sự ủng hộ theo thời gian. Tại phòng thì nghiệm Trí tuệ Nhân tạo của MIT đầu những năm 80, một công ty có tên Symbolics đã được thành lập và lấy một mã nguồn lúc bấy giờ đang lưu hành tự do (ngôn ngữ lập trình LISP) để biến thành sở hữu riêng.
Trong quá trình hoạt động của mình, công ty này quét sạch tập quán chia sẻ phần mềm khỏi các phòng thí nghiệm MIT. Tuy nhiên, công cuộc phá hủy này rốt cuộc đưa đến sự ra đời của tổ chức Phần mềm tự do và nền văn hóa Phần mềm nguồn mở ngày nay. Richard Stallman và đội nhóm của mình nhận thấy sự biến đổi bất lợi của phần mềm tự do có thể ngăn cản sự hợp tác giữa những người phát triển phần mềm, ông và đội nhóm đã bắt tay vào viết tuyên ngôn của GNU. Dự án GNU (viết tắt của “GNU’s Not Unix”- không phải là Unix) ra đời vào tháng Giêng năm 1984 và trong suốt thập kỷ tiếp theo đã tạo ra những công cụ đa dạng tập hợp nên một phần quan trọng của hệ điều hành.
Tổ chức phần mềm tự do ra đời 1 năm sau đó nhằm khuyếch trương các phần mềm tự do và dự án GNU. Tuy vậy, cho đến năm 1991, dự án GNU vẫn chưa đưa ra được một hệ thống phần mềm hoàn toàn tự do vì một yếu tố cơ bản vẫn còn vắng bóng: lõi hệ thống (the Kernel). Lõi (hay nhân - Kernel) là trái tim của mọi hệ điều hành. Vào năm 1991, Linus Torvalds đã viết và phổ biến một lõi dạng Unix.
Theo đúng phương thức của quy trình phát triển phần mềm nguồn mở, nó được lưu hành rộng rãi, được cải tiến và nhanh chóng thích ứng để trở thành cốt lõi của hệ điều hành GNU/Linux. Thời đó, còn có những dự án phần mềm nguồn mở khác cũng đang tiến hành, bao gồm cả hệ điều hành BIND, Perl và BSD.