I.L.E.N rss feed Trang chủ Linux Bài 7: Giới thiệu phần mềm mã nguồn mở
Bài 7: Giới thiệu phần mềm mã nguồn mở
Thứ ba, 05 Tháng 2 2013 00:02

Trong 6 bài viết trước đã giới thiệu 3 vấn đề cốt lõi mang tính hệ thống và hầu như không thể khắc phục được nếu vẫn tiếp tục sử dụng phần mềm nguồn đóng sở hữu độc quyền. Đối tượng khảo sát chính là HĐH Windows cùng các sản phẩm của Microsoft, và 3 vấn đề cốt lõi là An ninh, Pháp lý và Chi phí tài chính.

1. An ninh
- Sơ khởi HĐH Windows của Microsoft được xây dựng trên mô hình kém an toàn và ngày càng bộc lộ nhiều điểm yếu an ninh khiến các hệ thống được xây dựng trên Windows luôn là mục tiêu ưa thích của các cuộc tấn công ngày càng tinh vi, có tổ chức và được chính phủ tài trợ. Bất chấp các nỗ lực cải tiến hệ điều hành của hãng này.

- Mã nguồn Windows và hầu hết các phần mềm chạy trên hệ thống này đều được biên dịch thành thư viện liên kết động(DLLs) tạo nên tính đóng(close source)của mã nguồn phần mềm. Đây là môi trường lý tưởng để chèn các đoạn mã gián điệp, theo dõi hệ thống một cách có chủ ý và các mục tiêu được chọn lọc mà hầu như không bị phát hiện. Vì rất khó hoặc vô cùng tốn kém khi muốn dịch ngược mã nguồn phần mềm(Reverse source) để kiểm tra.

- Các lỗ hổng an trong nguồn đóng đa số chỉ bị phát hiện sau khi đã bị tấn công, khai thác. Đồng nghĩa với việc hàng loạt các hệ thống khác tiếp tục trở thành nạn nhân, trong thời gian chờ các bản vá. Vì tất cả các hệ thống này đều sử dụng các phần mềm, hệ điều hành giống hoặc đồng dạng với nhau. Do đó lỗ hổng khai thác trên hệ thống này cũng tiếp tục bị khai thác trên hệ thống khác, nếu chúng chưa kịp cập nhật các bản vá.

- Thông tin bị thu thập phục vụ cho mục tiêu chính trị và tình báo kinh tế, thông qua các thỏa thuận mang tính áp đặt mà người dùng phải chấp nhận do phía cung cấp nguồn đóng độc quyền đưa ra, theo chính sách của nhà cung cấp hoặc theo yêu cầu từ chính phủ của họ.

- Sự phụ thuộc mang tính sống còn của hệ thống nguồn đóng vào phần mềm an ninh tạo ra lổ hổng an ninh lớn một khi lớp bảo vệ này bị chọc thủng.

2. Pháp lý
- Các công ước và hiệp định quốc tế Việt Nam đã tham gia về quyền sở hữu trí tuệ không cho phép người dùng sử dụng phần mềm không bản quyền, vì như thế là hành vi vi phạm pháp luật.

- Sử dụng phần mềm không bản quyền ngoài việc bị chế tài từ luật pháp trong nước, người dùng còn phải đối mặt với việc bị áp giá cao(tăng thế nhập khẩu chống phá giá) khi xuất khẩu sản phẩm đặt biệt là vào thị trường Mỹ.

- Luật pháp Mỹ cho phép cơ quan an ninh truy cập và điều tra dữ liệu người dùng do các công ty công nghệ thông tin đa quốc gia của Mỹ quản lý, bất chấp thông tin của người dùng này thuộc quốc gia nào.

3. Chi phí
- Chi phí nguồn đóng hiện vẫn còn rất cao đối với các quốc gia đang phát triển như Việt Nam. Nó là một gánh nặng rất lớn khi hàng năm phải dành một lượng lớn ngoại tệ để mua bản quyền phần mềm. Trong khi chi phí này đáng lẽ phải dành đầu tư và phát triển công nghệ thông tin trong nước.

- Sử dụng nguồn đóng bắt buộc phải phụ thuộc vào các phần mềm chống virus từ hãng thứ 3 khiến chi phí đầu tư tăng mạnh. Đó là chưa tính chi phí bản quyền dành cho các phần mềm chuyên ngành phục vụ lao động, sản xuất.

- Chi phí bản quyền phần mềm chiếm tỉ trọng cao trong tổng chi phí hoạt động sản xuất khiến hàng hóa sản xuất ra càng khó cạnh tranh hơn. Nhất là trong bối cảnh kinh tế suy thoái với nhiều chính sách hạn chế chi tiêu của hầu hết các quốc gia.

Ngày nay nói đến Phần mềm nguồn mở, nhiều người nghĩ đó chỉ đơn thuần là một lựa chọn thay thế cho Microsoft, mà ít người biết rằng Phần mềm nguồn mở có một lịch sử phát triển lâu đời từ những thập niên 70 trước khi Microsoft(phần mềm sở hữu độc quyền)ra đời hơn một thập kỷ. 

Trong đó nổi tiếng và thành công nhất là Linux. Được Linus Tovalds một sinh viên Phần Lan 21 tuổi khai sinh vào 07/1991 dưới dạng một dự án hệ điều hành tự do. Hai tháng sau phiên bản đầu tiên 0.01 ra đời. Đến tháng 03/1994 phiên bản ổn định 1.0 xuất hiện, đánh dấu giai đoạn đầu tiên trong quá trình phát triển Linux, với sự tham gia của nhiều lập trình viên hơn cùng một lượng lớn các thành phần được tích hợp xung quanh nó được phân phối bằng giấy phép GPL(General Public License), một loại giấy phép quy định việc sử dụng phần mềm nguồn mở.

Lịch sử phát triển phần mềm nguồn mở trong những ngày đầu

Lịch sử phát triển phần mềm nguồn mở trong những ngày đầu, nguồn: sourceninja.com


Ngày nay, sau hơn 20 năm ra đời Linux đã có sự phát triển vượt bậc. Theo số liệu thống kê năm 2010, 75% mã nguồn của linux được viết bởi các lập trình viên chuyên nghiệp được trả lương tại các tập đoàn chủ chốt.

Riêng nhân Linux 3.2, có 1.316 lập trình viên từ 226 tổ chức tham gia đóng góp mã nguồn. Từ phiên bản 2.6.11, đã có 7.944 lập trình viên từ 855 tổ chức khác nhau đã đóng góp mã nguồn cho Linux. Mười tổ chức đóng góp hàng đầu cho nhân Linux từ 2.6.36 cho tới 3.2 là: Red Hat, Intel, Novell, IBM, Texas Instruments, Broadcom, Nokia, Samsung, Oracle và Google. 

5% mã nguồn của linux được viết bởi các lập trình viên chuyên nghiệp

75% mã nguồn của linux được viết bởi các lập trình viên chuyên nghiệp


Tính đến tháng 01/2012, đã có 15 triệu dòng mã lệnh trong nhân Linux 3.3/3.4.

Microsoft cũng tham gia đóng góp mã nguồn

Tỉ lệ đóng góp mã nguồn cho nhân Linux cùa các tập đoàn đa quốc gia, trong đó Microsoft cũng tham gia đóng góp mã nguồn


Một điều thú vị lẫn ngạc nhiên là trong danh sách các tổ chức đóng góp mã nguồn của Linux lại có tên Microsoft. Mục đích của họ khi tham gia vào dự án nhằm xúc tiến cho công nghệ ảo hóa Hyper-V của hãng.

Một lượng đồ sộ các distro linux

Một lượng đồ sộ các distro linux, nguồnLinux Distribution Time line


Đến nay, có hàng ngàn bản phân phối(distro) cùng một lượng đồ sộ các hệ điều hành, các trình điều khiển thiết bị dựa vào nhân linux. Trong đó thành công và phổ biến nhất là các bản phân phối:

Các distro linux phổ biến

Các distro linux phổ biếnnguồn: technology.ie


1. Debian, cộng đồng người dùng tự nguyên phát triển.
2. Red Hat Linux, đầu tiên được phát triển nội bộ trong công ty Red Hat, sau đó đó áp dụng mô hình dựa trên cộng đồng và trở nên nổi tiếng với sản phẩm Fedora.
3. SuSE, phát triển tương tự Red Hat, nổi tiếng với sản phẩm OpenSuSE được các nước châu Âu sử dụng rộng rãi.
4. Mandriva, hậu duệ của Mandrake Linux và Conectiva
5. Ubuntu, bắt nguồn từ Debian do Canonical phát triển trên cơ sở của bản phân phối này. 

Tốc độ phát triển Android và Linux

Tốc độ phát triển Android và Linuxnguồn: technology.ie


Và bản phân phối thành công nhất trong những năm gần đây là hệ điều hành android chạy trên thiết bị di động. Android không chỉ chiếm tới 3/4 lượng bán ra các thiết bị di động toàn cầu, nó còn bán vượt cả số lượng bán ra các máy tính cá nhân PC. Vì thế hệ điều hành dựa vào Linux này được xem là Windows mới, không chỉ vì nó có mặt khắp nơi, mà còn vì nó đại diện cho một yếu tố then chốt của Windows mà Microsoft bỏ qua: "tính mở”.

Năm 2012, Red Hat đạt được doanh số 1 tỉ USD để chấm dứt những lời xuyên tạc rằng "không ai có thể kiếm tiền với nguồn mở", chủ tịch quỹ Linux Jim Zemlin đã có lời chúc mừng. 

Ông viết: "Vì linux đã trưởng thành, những lợi ích mà Red Hat nhận cũng được đền đáp xứng đáng."

Khi Facebook đóng góp mã nguồn để các trung tâm dữ liệu hiệu quả hơn, thì Red Hat hưởng lợi. Khi Red Hat đóng góp mã nguồn để cải thiện hệ thống tệp, nhà sản xuất thiết bị di động hưởng lợi. Khi các nhà sản xuất thiết bị di động đóng góp mã nguồn để cải thiện năng lượng tiêu thụ, thì chi phí làm mát các siêu máy tính sẽ giảm. Khi những người sử dụng các siêu máy tính đóng góp mã nguồn để làm cho Linux nhanh hơn, thì Phố Wall hưởng lợi với các hệ thống buôn bán nhanh hơn. 

Quy trình phát triển phần mềm

Xem ở mức cao đối với một quy trình phát triển điển hình: Sự thích nghi trong nội bộ của mã nguồn riêng có thể dẫn tới các chu trình phát triển dài hơn.


Cứ như thế Linux ngày càng tiến hóa và hoàn thiện hơn. Tất cả mọi người sẽ được hưởng các thành quả lao động tốt nhất cùng với sự đóng góp của cộng đồng mà không bị ràng buộc vào các giấy phép sử dụng phần mềm sở hữu độc quyền.

Quy trình phát triển ngược lên dòng trên

Quy trình phát triển tương tự với việc ngược lên dòng trên để làm giảm sự thích nghi trong nội bộ, làm cho các chu trình phát triển ngắn hơn và thời gian đưa ra thị trường nhanh hơn.


Đây được gọi là qui trình ngược lên dòng trên(Upstreaming) một trong những quy trình then chốt giúp nguồn mở phát triển. Theo đó mã nguồn được phát triển độc lập hoặc nội bộ phải đóng góp ngược trở lại cho dự án nguồn mở gốc ban đầu, với mục tiêu làm cho nó được tích hợp vào trong cây phát triển của dự án nguồn mở.

Quy trình này giúp giảm chi phí bằng việc giảm thiểu mã nguồn được duy trì trong nội bộ, phát triển các tính năng nhanh hơn và tạo ra các sản phẩm tốt hơn.

Trong tài liệu giới thiệu mô hình phát triển nguồn mở do Quỹ Linux(Linux Foundation) phát hành, mô tả vòng đời mỗi tính năng của nguồn mở trải qua 6 giai đoạn:

Dòng chảy mã nguồn từ những người đóng góp chính tới thị trường

Dòng chảy mã nguồn từ những người đóng góp chính tới thị trường.


1. Quy trình yêu cầu tính năng
Các yêu cầu về tính năng có thể bắt đầu bằng một đề xuất, hoặc yêu cầu từ người dùng. Những người đóng góp và duy trì dự án sẽ đánh giá các yêu cầu đó, đồng thời xác định liệu nó có nên là một ứng viên cho bản phát hành trong tương lai không. Nếu được chấp nhận nó sẽ được lên kế hoạch và sự phát triển bắt đầu.

Vòng đời tính năng trong mô hình phát triển nguồn mở

Vòng đời tính năng trong mô hình phát triển nguồn mở


2. Thảo luận về kiến trúc và thiết kế
Một trong những yếu tố đóng góp cho sự thành công của mô hình phát triển nguồn mở là sự minh bạch và khả năng cộng tác phân tán có hiệu quả giữa các đội dự án. Để làm được điều này họ sử dụng các kênh giao tiếp sao cho mọi người trong cộng đồng của dự án đều có thể tham gia ra quyết định, thảo luận về kiến trúc hay rà soát lại mã nguồn.

3. Cộng tác trong triển khai
Hầu hết các dự án nguồn mở sử dụng các công cụ khá hoàn chỉnh để hỗ trợ đóng góp mã nguồn từ nhiều cộng tác viên phân tán, cùng lúc. Mỗi lập trình viên xây dựng, phát triển, tìm lỗi và tự kiểm tra tính tương hợp của mã riêng với cơ sở mã nguồn hiện hành, sao cho công sức bỏ ra để tích hợp vào dự án dòng chính là thấp nhất.

4. Đệ trình mã nguồn
Người duy trì và những người tham gia khác của dự án có thể đưa ra những ý kiến phản hồi về sự đệ trình và từ chối chấp nhận nó, trong trường hợp đó thì đội triển khai có thể sẽ rà soát và đệ trình lại mã nguồn đó.

5. Kiểm thử và tích hợp liên tục
Vì công việc có tính phân tán cao, mô hình phát triển nguồn mở coi trọng việc tìm lỗi và sửa chúng nhanh chóng. Các công cụ xây dựng và kiểm lỗi tự động giúp cho việc chuẩn đoán và xử lý vấn đề dễ dàng hơn. Điều này đảm bảo mã nguồn mở không ảnh hưởng tới sự tập trung tổng thể của dự án vào mã nguồn an ninh và chất lượng cao.

6. Phát hành mã nguồn
Hầu hết các dự án đều cử một cá nhân hoặc một đội để đánh giá độ chín các tính năng trong cây phát triển, và giám sát, đánh giá để đảm bảo chất lượng(QA). Khi đã thỏa các tiêu chí, đội này sẽ phát hành và phân nhánh cho cây phát triển.

Mô hình phát triển nguồn mở được chúng minh là rất thành công. Cùng với 3 đặt tính đặt biệt cho phép sự phát triển nhanh hơn:

1. Chu kỳ phát triển đang xen
Mô hình phát triển nguồn mở được đặc trưng bằng các quy trình đang xem, chúng liên tục cải tiến chất lượng mã nguồn. Đồng thời khuyến khích sự phát triển các tính năng liên tục và độc lập. Điều này cho phép những tính năng mới được tích hợp khi chúng sẵn sàng, có khả năng kế thừa giúp xây dựng và tạo ra các sản phẩm cạnh tranh hơn.

Dòng chảy đặt trưng của mã nguồn từ người đóng góp cá nhân tới phiên bản dòng chính

Dòng chảy đặt trưng của mã nguồn từ người đóng góp cá nhân tới phiên bản dòng chính


2. Phát hành sớm và thường xuyên
Triết lý phát hành này cho phép rà soát lại ngan hàng liên tục, nơi mà tất cả các thành viên của cộng đồng có cơ hội bình luận và đưa ra những gợi ý và sửa lỗi. Nó khuyến khích những thay đổi nhỏ, từng bước một với sự tham gia tích cực của nhiều lập trình viên trong việc kiểm soát và sửa lỗi, hơn là một một chu kỳ kiểm thử cuối cùng riêng biệt.

3. Rà soát ngang hàng
Khi một tính năng hoàn thành và sẵn sàng để xem sét cho việc tích hợp, thì người duy trì của dự án cũng đưa ra một mức rà soát lại trước khi chấp nhận mã nguồn đó. Vào lúc mã nguồn được tích hợp vào sản phẩm chính, thì nó đã trải qua các đợt kiểm tra chi tiết của những người khác bên ngoài đội phát triển. Kết quả được cải thiện, mã nguồn có chất lượng cao hơn.

Cuối cùng một trong những đặt tính cơ bản nhất của nguồn mở là tính mở và sự minh bạch. Cùng với đó là sự chia sẽ và đóng góp từ cộng đồng, làm cho nguồn mở ngày càng hoàn thiện và có chất lượng cao hơn.

"Nếu bạn có một quả táo, tôi có một quả táo và chúng ta trao đổi táo cho nhau. Thì bạn và tôi mỗi người cũng sẽ chỉ có 1 quả táo. Nhưng nếu bạn có một ý tưởng, tôi có một ý tưởng và chúng ta trao đổi ý tưởng cho nhau, thì mỗi người chúng ta sẽ có 2 ý tưởng." - Bernard Shaw.

(loạt bài giới thiệu hệ điều hành mã nguồn mở)

Tài liệu tham khảo:
1. Giới thiệu phần mềm tự doViện Hàn lâm Công nghệ mở FTA, biên dịch TS Lê Trung Nghĩa.
2. Ngược lên dòng trên: tăng cường cho sự phát triển nguồn mởThe Linux Foundation, biên dịch TS Lê Trung Nghĩa.
3. Hiểu biết về mô hình phát triển nguồn mởThe Linux Foundation, biên dịch TS Lê Trung Nghĩa.
4. Ai phát triển nhân LinuxThe Linux Foundation, biên dịch TS Lê Trung Nghĩa.

Kỳ tới: Tại sao Linux an toàn hơn Windows.