Chương 1: CƠ SỞ LÝ THUYẾT 1. Giới thiệu mã nguồn mở 1. Khái niệm mã nguồn mở Mã nguồn mở hiểu theo nghĩa rộng là khái niệm được sử dụng cho tất cả các phần mềm mà mã nguồn của nó được phân bố rộng rãi, công khai và cho phép mọi người tiếp tục phát triển phần mềm đó. Điều này không có nghĩa chúng được sao chép, sửa chữa thoải mái hay sử dụng vào mục đích nào cũng được.
Mã nguồn mở được công bố dưới rất nhiều điều kiện khác nhau, một trong số đó cho phép phát triển, sử dụng và bán tùy ý miễn là giữ nguyên các dòng về nguồn gốc sản phẩm, một số bắt buộc tất cả các sản phẩm làm ra từ đó cũng phải là Open Source, một số khác bắt buộc phải công bố toàn bộ mã nguồn, một số khác không cho phép sử dụng vào mục đích thương mại, một số khác lại không có ràng buộc nào đáng kể. Qua đó ta thấy khái niệm Open Source không thể chuẩn xác mà muốn nói đến tính pháp lý của việc sử dụng các phần mềm mã nguồn mở, chúng ta phải xem xét đến điều kiện sử dụng cụ thể mà dưới đó chúng được công bố. Một điều kiện hay được áp dụng nhất là GPL: GNU General Public Licence của tổ chức Free Software Foundatiom. GPL có hai đặc điểm phân biệt đó là: Tác giả gốc giữ bản quyền về phần mềm nhưng cho phép người dùng có nhiều quyền, trong đó có quyền tìm hiểu, phát triển, công bố cũng như quyền khai thác thương mại sản phẩm.
Đặc điểm thứ hai thường được gọi là hiệu ứng virut (Virus Effect) vì nó biến tất cả các phần mềm có dùng mã nguồn GPL cũng biến thành phần mềm GPL. Trên thực tế điều này có nghĩa: bất kì tác giả nào sử dụng dù chỉ một phần rất nhỏ mã nguồn GPL trong chương trình của mình, cũng phải công bố dưới điều kiện GPL. Nguồn mở không chỉ có nghĩa là truy cập vào mã nguồn. Các điều khoản phân phối của phần mềm mã nguồn mở phải tuân thủ các tiêu chuẩn sau: Tự do tái phân phối.
Giấy phép sẽ không giới hạn bất cứ ai khỏi việc bán hay chia sẻ các phần mềm. Giấy phép sẽ không đòi hỏi phải trả tiền bản quyền hay các lệ phí khác. Chương trình phải đi kèm mã nguồn và phải cho phép phân phối cả mã nguồn cũng như dạng đã được biên dịch. Trường hợp một số dạng sản phẩm không được phân phối cùng mã nguồn thì phải có cách phổ biến rộng rãi nhằm lấy được mã nguồn với chi phí thấp hơn chi phí tái sản xuất hợp lý, cho phép tải về miễn phí qua Internet.
Các phần mềm phải có nguồn gốc. Bản quyền phải cho phép sửa đổi các phần mềm gốc và phải cho phép chúng được phân phối dưới cùng các điều khoản như giấy phép của phần mềm gốc. Tính toàn vẹn của mã nguồn cung cấp bởi tác giả. Giấy phép có thể hạn chế không cho phép mã nguồn được phân phối ở dạng đã được sửa đổi chỉ khi giấy phép cho phép phân phối “các tập tin vá” cùng mã nguồn nhằm mục đích sửa đổi ở thời gian xây dựng chương trình.
Giấy phép phải cho phép một cách rõ ràng về việc phân phối phần mềm được tạo ra từ mã nguồn sửa đổi. Giấy phép có thể yêu cầu các sản phẩm phải mang một cái tên hay một số hiệu phiên bản khác so với phần mềm gốc. Theo đó, giấy phép mã nguồn mở phải đảm bảo rằng mã nguồn có sẵn, nhưng có thể yêu cầu nó sẽ được phân phối như nguyên gốc ban đầu kèm với các bản vá. Không có sự phân biệt giữa cá nhân hay nhóm người.
Giấy phép không được phân biệt với bất cứ cá nhân hay nhóm người nào. Không phân biệt bất cứ một lĩnh vực nào. Bản quyền phải không được cản trở bất cứ ai khỏi việc sử dụng chương trình trong một lĩnh vực cụ thể. Việc phân phối bản quyền.
Các quyền lợi gắn liền với chương trình phải áp dụng cho tất cả mà chương trình được phân phối lại mà không cần phải thực hiện một giấy phép bổ sung bởi các bên. Giấy phép không được giành riêng cho một sản phẩm. Các quyền lợi gắn liền với chương trình phải không phụ thuộc vào việc chương trình là một phần của một phân phối phần mềm cụ thể. Nếu chương trình được tách ra từ bản phân phối đó và được sử dụng hay phân phối dưới các điều khoản của giấy phép kèm theo thì tất cả các bên mà chương trình được phân phối lại cũng có các 12 quyền lợi ngang bằng như những quyền lợi được đưa ra theo bản phân phối phần mềm gốc.
Giấy phép không được hạn chế các phần mềm khác. Giấy phép phải không được áp đặt các hạn chế lên các phần mềm khác được phân phối cùng với phần mềm được cấp phép. Ví dụ, giấy phép không cần nhấn mạnh rằng tất cả các chương trình khác được phân phối trên cùng một môi trường cần phải là phần mềm mã nguồn mở. Giấy phép phải rõ ràng về mặt công nghệ.
Không cho phép tồn tại các giấy phép có liên quan đến bất cứ công nghệ cá nhân hay một kiểu giao tiếp nào. Tóm lại, mã nguồn mở (Open Source) là thuật ngữ chỉ các sản phẩm phần mềm có mã nguồn mở. Phần mềm nguồn mở là các phần mềm được cung cấp dưới cả dạng mã và nguồn, không chỉ miễn phí về giá mua mà còn miễn phí về bản quyền: 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 số nguyên tắc chung quy định trong giấy phép phần mềm nguồn mở (ví dụ General Public Licence - GPL) mà không cần xin phép ai, điều mà họ không được phép làm đối với các phần mềm nguồn đóng (tức là phần mềm thương mại)… Nhìn chung, thuật ngữ “Open Source” được dùng để thu hút các nhà kinh doanh, ưu điểm chính là miễn phí và cho phép người dùng có quyền “sở hữu hệ thống”. Nhà cung cấp phần mềm nguồn mở có quyền yêu cầu người dùng trả một số chi phí về dịch vụ bảo hành, đào tạo, nâng cấp, tư vấn… tức là những dịch vụ phục vụ người dùng, nhưng không được bán các sản phẩm nguồn mở vì nó là tài sản của trí tuệ chung, không phải là tài sản riêng của một nhà cung cấp nào.
Tiện ích của Open Source là quyền tự do sử dụng chương trình cho mọi mục đích, quyền tự do để nghiên cứu cấu trúc của chương trình, chỉnh sửa phù hợp với yêu cầu, truy cập vào mã nguồn, quyền tự do phân phối lại các phiên bản cho nhiều người, quyền tự do cải tiến chương trình và phát hành những bản cải tiến vì mục đích công cộng. Lợi ích của mã nguồn mở Phần mềm có thể được sao chép hoàn toàn miễn phí, người dùng hoàn toàn an tâm khi chia sẻ một chương trình tốt với bạn bè. Hầu hết các sản phẩm Open Source đều có khả năng bảo mật tuyệt vời, khi một vết nứt được tìm thấy, nó thường được vá nhanh hơn phần mềm có bản quyền. Các hệ thống Open Source, nhất là các hệ thống dựa trên UNIX, thường rất linh hoạt.
Bởi vì chúng được xây dựng từ nhiều khối thống nhất và được mô tả cặn kẽ, rất dễ để người dùng thay thế nhiều phần của hệ thống với phần có giao diện tương tự. Có một cộng đồng hỗ trợ lớn, không bị phụ thuộc vào một công ty nào. Open Source đã được các công ty lớn chấp nhận chẳng hạng như IBM, Orace và Sun. Thậm chí Microsoft đã phải lưu tâm đến Open Source như đối thủ lớn.
Với Open Source, việc phân phối và phát triển là một phương pháp lâu dài để tạo ra phần mềm, người mua được cung cấp cả giải pháp phần mềm lẫn những mã nguồn có giấy phép Open Source. Hơn nửa các doanh nghiệp vừa nhỏ sẽ ưa chuộng phần mềm Open Source hơn. Hiện nay đã có một số tổ chức dự định sử dụng Open Source để xây dựng nhân tố cốt lõi của hệ thống – từ hệ điều hành, cơ sở dữ liệu, ứng dụng và Web server. đến các hệ thống quản trị nội dung và nhiều phần mềm kinh doanh thông minh.
Mặc dù con đường để free software khẳng định vị trí vẫn còn dài, nhưng đáng chú ý là Open Source đã dành được 70% ứng dụng Web và dường như con số này vẫn tiếp tục tăng. Bằng cách này cả công ty lẫn khách hàng đều có lợi. Về phía khách hàng, họ được dùng phần mềm chất lượng tốt, hỗ trợ đầy đủ với giả rẻ. Về phía nhà cung cấp, dựa trên Open Source, tiết kiệm đáng kể các chi phí phát triển, kiểm lỗi, quản lý dự án.
Đồng thời nhân lực của họ lại nhanh chóng nâng cao trình độ, giảm bớt thời gian làm việc “chân tay” khi tiếp nhận mã nguồn có giá trị và chất lượng từ những Open Source được xây dựng chuyên nghiệp, cấu trúc phần mềm, lập trình,. tốt ngay từ đầu. Ứng dụng của mã nguồn mở hiện nay Hiện nay, trên thế giới có rất nhiều loại mã nguồn mở khác nhau, mỗi loại mã nguồn mở lại có một ứng dụng riêng. Dưới đây là một số loại mã nguồn mở được sử dụng rộng rãi: Ubuntu là hệ điều hành mã nguồn mở dùng cho máy tính xách tay, máy tính để bàn và cả máy chủ, Ubuntu chứa tất cả các chương trình ứng dụng cần thiết cho công việc tại nhà, ở trường hay tại văn phòng công ty.
Vbulletin là mã nguồn mở dùng để xây dựng cộng đồng trực tuyến được phổ biến nhất hiện nay. Hầu hết các diễn đàn lớn tại Việt Nam đều được xây dựng bằng Vbullentin. Apache Tomcat là hệ thống mã nguồn mở của hãng Apache Software, kế thừa các tính năng nổi bật của công nghệ dựa trên nền tảng Java Servlet và JavaServer Pages. Ứng dụng Apache Tomcat có thể xử lý được số lượng lớn các yêu cầu bao gồm ứng dụng web trực tuyến, các gói dữ liệu lưu thông giữa server-client, tùy biến dễ dàng theo yêu cầu, quy mô của từng tổ chức, doanh nghiệp.
Linux là một hệ điều hành mã nguồn mở dạng Unix được xây dựng bởi Linus Torvalds, Linux có mọi đặc tính của một hệ điều hành hiện đại: hệ thống đa nhiệm, đa tuyến đoạn, bộ nhớ ảo, tải theo nhu cầu, quản lý bộ nhớ, các trình điều khiển thiết bị và giao mạng TCP/IP. Open office là chương trình mã nguồn mở thay thế cho Microsoft Office, ưu điểm của nó là dung lượng nhỏ và có thể tương thích được với Microsoft Office nhưng chưa thể thân thiện bằng Microsoft Office.