15
Hi tho ln th2 vPMNM Vit Nam – Hà Ni, 17-18 tháng 12 năm 2002 2 nd Conference on Open Source Software in Vietnam – Hanoi, 17-18 December 2002 Phát trin phn mm ngun mNht Bn và kinh nghim cho Vit Nam Open Source Software Development in Japan and Experiences for Vietnam Nguyn Ngc Bình Bmôn Công nghphn mm Khoa Công nghthông tin, Đại hc Bách Khoa Hà Ni E-mail: [email protected] Tel: (04) 8682595 Fax: (04) 8692906 Tóm tt Báo cáo trình by quá trình hình thành và phát trin phn mm ngun m(PMNM) Nht Bn trong khong 20 năm gn đây. Thông qua quan sát và tng hp kinh nghim tchc phát trin PMNM ca Công ty dn đầu vphát trin PMNM Nht Bn là SRA (Software Research Associates, Inc. Japan) và ca cng đồng phát trin PMNM vi các dán PMNM như Linux- Support (htrngười dùng Linux như nhà phân phi tích hp hthng tng th), Jun (thư vin đồ ha 3 chiu và multimedia cho Smalltalk và Java), SRA-PostgreSQL (htrngười dùng Nht Bn sdng hqun trcơ sdliu PostgreSQL) và GNU-Wingnut (htrcác ng dng phn mm GNU như GCC - GNU C Compiler, Emacs trên nn phn cng ca Nht Bn), báo cáo nêu khái quát mt smô hình phát trin PMNM và các dng tchc và cu trúc ca dán PMNM. Báo cáo cũng mô tvà bàn lun vvtrí và vai trò ca nhng thành viên trong dán PMNM trong quá trình tiến hóa ca cPMNM ln cng đồng PMNM. Nhng kinh nghim phát trin PMNM Nht Bn cùng vi phân tích chiến lược phát trin PMNM ca SRA trong 5 năm gn đây dn đến nhng gi ý cho tchc, phát trin và ng dng PMNM Vit Nam. Tkhóa: Phn mm ngun m(PMNM), Chiến lược PMNM, Cng đồng PMNM, Tiến hóa phn mm, Qun lý dán PMNM Abstract This paper describes the process of establishing and developing the Open Source Software (OSS) in Japan in the past two decades. By studying and summarizing the experiences in organizing the OSS development (OSSD) at a Japan's leading OSS company - SRA (Software Research Associates, Inc. Japan) and those from the OSS communities with the OSSD projects such as Linux-Support (which offers support for Linux users as a master system integration distributor), Jun (which is a 3D graphics and multimedia library for Smalltalk and Java), SRA-PostgreSQL (which supports Japanese customers who use the PostgreQSL database, and GNU-Wingnut (which provides support for a number of GNU software applications, such as GCC and Emacs, for Japanese companies that need GNU software ported into their hardware platforms) the paper briefly represents some OSSD models and types as well as structures of the OSSD projects. The paper also describes and discusses on the position and role of members in an OSSD project via the evolutionary process of both the OSS and the OSS communities. The studied OSSD experiences in Japan and analyses of the SRA's OSS business policy in the latest 5 years led to some our suggestions for organization, development, and usage of open source software in Vietnam. Keywords: Open source software (OSS), OSS policy, OSS community, Software evolution, OSS project management Nguyn Ngc Bình (ĐHBK HN, [email protected]): Phát trin phn mm ngun mNht Bn … 1

Open Source Software Development in Japan and Experiences

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Open Source Software Development in Japan and Experiences

Hội thảo lần thứ 2 về PMNM ở Việt Nam – Hà Nội, 17-18 tháng 12 năm 2002 2nd Conference on Open Source Software in Vietnam – Hanoi, 17-18 December 2002

Phát triển phần mềm nguồn mở ở Nhật Bản và kinh nghiệm cho Việt Nam

Open Source Software Development in Japan and Experiences for Vietnam

Nguyễn Ngọc Bình

Bộ môn Công nghệ phần mềm Khoa Công nghệ thông tin, Đại học Bách Khoa Hà Nội

E-mail: [email protected] Tel: (04) 8682595 Fax: (04) 8692906

Tóm tắt

Báo cáo trình bầy quá trình hình thành và phát triển phần mềm nguồn mở (PMNM) ở Nhật Bản trong khoảng 20 năm gần đây. Thông qua quan sát và tổng hợp kinh nghiệm tổ chức phát triển PMNM của Công ty dẫn đầu về phát triển PMNM ở Nhật Bản là SRA (Software Research Associates, Inc. Japan) và của cộng đồng phát triển PMNM với các dự án PMNM như Linux-Support (hỗ trợ người dùng Linux như nhà phân phối tích hợp hệ thống tổng thể), Jun (thư viện đồ họa 3 chiều và multimedia cho Smalltalk và Java), SRA-PostgreSQL (hỗ trợ người dùng Nhật Bản sử dụng hệ quản trị cơ sở dữ liệu PostgreSQL) và GNU-Wingnut (hỗ trợ các ứng dụng phần mềm GNU như GCC - GNU C Compiler, Emacs trên nền phần cứng của Nhật Bản), báo cáo nêu khái quát một số mô hình phát triển PMNM và các dạng tổ chức và cấu trúc của dự án PMNM. Báo cáo cũng mô tả và bàn luận về vị trí và vai trò của những thành viên trong dự án PMNM trong quá trình tiến hóa của cả PMNM lẫn cộng đồng PMNM. Những kinh nghiệm phát triển PMNM ở Nhật Bản cùng với phân tích chiến lược phát triển PMNM của SRA trong 5 năm gần đây dẫn đến những gợi ý cho tổ chức, phát triển và ứng dụng PMNM ở Việt Nam.

Từ khóa: Phần mềm nguồn mở (PMNM), Chiến lược PMNM, Cộng đồng PMNM, Tiến hóa phần mềm, Quản lý dự án PMNM

Abstract This paper describes the process of establishing and developing the Open Source Software (OSS) in Japan in the past two decades. By studying and summarizing the experiences in organizing the OSS development (OSSD) at a Japan's leading OSS company - SRA (Software Research Associates, Inc. Japan) and those from the OSS communities with the OSSD projects such as Linux-Support (which offers support for Linux users as a master system integration distributor), Jun (which is a 3D graphics and multimedia library for Smalltalk and Java), SRA-PostgreSQL (which supports Japanese customers who use the PostgreQSL database, and GNU-Wingnut (which provides support for a number of GNU software applications, such as GCC and Emacs, for Japanese companies that need GNU software ported into their hardware platforms) the paper briefly represents some OSSD models and types as well as structures of the OSSD projects. The paper also describes and discusses on the position and role of members in an OSSD project via the evolutionary process of both the OSS and the OSS communities. The studied OSSD experiences in Japan and analyses of the SRA's OSS business policy in the latest 5 years led to some our suggestions for organization, development, and usage of open source software in Vietnam.

Keywords: Open source software (OSS), OSS policy, OSS community, Software evolution, OSS project management

Nguyễn Ngọc Bình (ĐHBK HN, [email protected]): Phát triển phần mềm nguồn mở ở Nhật Bản … 1

Page 2: Open Source Software Development in Japan and Experiences

Hội thảo lần thứ 2 về PMNM ở Việt Nam – Hà Nội, 17-18 tháng 12 năm 2002 2nd Conference on Open Source Software in Vietnam – Hanoi, 17-18 December 2002

1. Phần mềm nguồn mở ở Nhật Bản

Phần mềm nguồn mở (PMNM - Open Source Software) được quan tâm, phát triển và ứng dụng hàng chục năm nay ở Nhật Bản. Những lợi ích của PMNM được thể hiện rất rõ qua việc hình thành những cộng đồng PMNM (CĐPMNM – Open Source Software Community) với những sản phẩm có giá trị cao trong thực tế, cả về giá trị sử dụng lẫn tác dụng tích cực trong đào tạo, huấn luyện người phát triển phần mềm nói chung. 1.1 Sơ lược về trào lưu PMNM trên thế giới

Có nhiều định nghĩa khác nhau về PMNM. Trong bài viết này PMNM được hiểu là (hệ) phần mềm cho phép người dùng truy cập tự do (free access) đến mã nguồn và được quyền sửa đổi (modify) mã nguồn đó. Một định nghĩa hình thức hơn về PMNM có thể thấy trong [1]. PMNM không chỉ bảo đảm cho những người phát triển (developers) mà còn cho tất cả mọi người dùng đều được phép đọc và sửa đổi mã nguồn. ý tưởng về công khai mã nguồn phần mềm đã xuất hiện ngay từ những ngày đầu của tính toán hiện đại. Chẳng hạn từ những năm 1940 người ta đã có những hoạt động chia sẻ mã nguồn khi làm việc trên máy tính ENIAC, hoặc nhóm PACT (Project for Advancement of Coding Techniques) chia sẻ phần mềm dùng chung, hay các nghiên cứu có công bố kèm theo cả mã nguồn như "Những giải thuật" trong Communications of the ACM, vân vân. Nhiều người chúng ta chắc còn nhớ những năm 1970 và 1980 giới khoa học kỹ thuật (kể cả ở Việt Nam) cũng đã từng sử dụng các máy tính thế hệ 2 và thế hệ 3 với các thư viện tính toán khoa học kỹ thuật có kèm theo mã nguồn mở viết trên FORTRAN, PL/I, COBOL, BASIC, vân vân. Đặc biệt vào những năm 1970, Donald Knuth đã phát triển hệ xử lý văn bản TeX nổi tiếng như một ví dụ điển hình về PMNM của thời kỳ đó. Năm 1983, Richard Stallman đưa ra Tuyên ngôn GNU (viết tắt của "GNU is Not Unix") mà theo đó các phần mềm được hàng triệu người sử dụng như các hệ điều hành, hệ soạn thảo, ... là tài sản văn hóa chung của nhân loại, cần được công khai mã nguồn miễn phí và xem như PMNM (“The GNU Manifesto”, http://www.gnu.org/gnu/manifesto.html). Với dự án GNU ấy, vào năm 1985 tại MIT (Mỹ) đã công bố mã nguồn mở của X-Window như thành quả của dự án phát triển phần mềm dùng cho đào tạo. Chẳng bao lâu sau, X-Window đã được dùng trên rất nhiều máy trạm (workstations). R. Stallman và các cộng sự đã thành lập Tổ chức Phần mềm tự do (Free Software Foundation - FSF)[2] với các sản phẩm nổi tiếng trên các máy họ Unix (và sau này trên Windows) như hệ soạn thảo Emacs, chương trình biên dịch GCC (GNU C Compiler), vân vân. Mục đích của dự án GNU là tạo lập một phiên bản tự do (miễn phí) của Unix và các công cụ Unix sao cho thoát khỏi những ràng buộc về bản quyền và phân phối. GNU đã thành công với các hệ điều hành dòng Unix của Đại học California theo giấy phép phân phối phần mềm Berkeley (the University of Berkeley's software Distribution of Unix - BSD Unix) như FreeBSD, NetBSD, OpenBSD, ... Cũng trong trào lưu PMNM ấy, một sự kiện quan trọng là xuất hiện hệ điều hành Linux vào tháng 8 năm 1991, do một sinh viên đại học ở Phần Lan tên là Linus Torvalds viết phần nhân (kernel) và công khai mã nguồn trên Internet. Từ đó bắt đầu một phong trào rầm rộ các tình nguyện viên tham gia phát triển Linux. Nếu như năm 1991 chỉ có một mình Torvalds vừa là người phát triển, vừa là người dùng, thì đến năm 1998 đã có tới hơn 8 triệu người tham gia. Con số hiện nay lên đến hàng chục triệu người và Linux được cài đặt trên nhiều máy tính cá nhân (PC), kể cả bởi chính các nhà sản xuất như Hội thảo lần thứ I "PMNM và Linux ở Việt Nam” vào năm 2000 [3] và Báo cáo Kế hoạch khung [4] của Hội thảo lần này đã nêu. Năm 1995, PMNM Apache HTTP Web Server 1.0 được công bố và được nhiều người dùng làm Web server.

Nguyễn Ngọc Bình (ĐHBK HN, [email protected]): Phát triển phần mềm nguồn mở ở Nhật Bản … 2

Page 3: Open Source Software Development in Japan and Experiences

Hội thảo lần thứ 2 về PMNM ở Việt Nam – Hà Nội, 17-18 tháng 12 năm 2002 2nd Conference on Open Source Software in Vietnam – Hanoi, 17-18 December 2002

Năm 1997, Eric Raymond đã viết "Nhà thờ và Tiệm tạp hóa" ("The Cathedral and the Bazaar") [5] nhằm đúc kết những thành công về dự án PMNM của mình (dự án fetchmail) và lý giải phong trào PMNM, đồng thời nêu những cách tham gia thúc đẩy phong trào ấy, trong đó lấy Linux làm trung tâm để phát triển các PMNM đối sánh với các phần mềm thương mại truyền thống.

Năm 1998, với việc công bố mã nguồn của Netscape theo kêu gọi của Raymond trước đó, "cuộc chiến" giữa các trình duyệt của Netscape (với Navigator) và Microsoft (với IE) đã mang lại cho người dùng lợi ích trong việc dùng miễn phí các trình duyệt, dù là PMNM (Navigator) hay phần mềm nguồn đóng (IE). Điều cần nhắc lại là sau khi công bố mã nguồn thì chỉ trong ít giờ đã có một số lỗi được phát hiện và sửa chữa nhanh qua Internet, cũng như thêm một số chức năng mới bởi các tình nguyện viên cho Netscape Navigator 4.0. Cũng từ năm 1998, phong trào PMNM phát triển mạnh mẽ với việc ca ngợi, đề cao Linux ở nhiều nước. Thậm chí có nước còn xem là "quốc sách" trong phát triển phần mềm, tưởng như Linux là "thần dược" hay “chìa khóa” cho CNTT làm lĩnh vực mũi nhọn để "đi tắt, đón đầu" của một nước vốn chậm cả về công nghệ, thấp cả về mức sống, và vừa yếu vừa thiếu về nhân lực CNTT. Phải thừa nhận rằng Cộng đồng Linux trên thế giới từ năm 1998 đến nay đã đạt được nhiều thành tựu, nhất là Network Servers, Web Servers, PC Cluster Servers và nhiều ứng dụng khác trên nền Linux. Tuy nhiên, Linux chỉ là một phần nhỏ của PMNM. Nói rộng hơn: cuộc “chạy đua" giữa PMNM và phần mềm nguồn đóng (phần mềm thương mại) vẫn tiếp diễn, không nên sớm phủ nhận một bên nào. 1.2 Về trào lưu PMNM ở Nhật Bản Theo lịch sử PMNM trên, Nhật Bản thường tiếp thu và vào cuộc ngay (chỉ sau ít tuần, ít tháng) mỗi khi có sự kiện liên quan đến CNTT xuất hiện ở Mỹ hay nước khác [6, 7, 8]. Đi đầu và là nơi tiếp nhận, khuếch trương các hoạt động về PMNM phải kể đến Công ty SRA (Software Research Associates, Inc., thành lập 1967, có gần 1300 người, http://www.sra.co.jp) với trụ sở chính tại Tokyo, các chi nhánh trong Nhật Bản, Mỹ, Châu Âu và Trung tâm nghiên cứu tại Mỹ (http://www.sra.co.jp/public/sra/company/office/boulder.shtml). SRA có quan hệ chặt chẽ với FSF và có nhiều tình nguyện viên là thành viên chủ chốt của FSF, trong đó có các thành viên tham gia dự án GNU. Ngay mùa hè năm 1980 SRA đã tiếp nhận BSD Unix như hoạt động PMNM đầu tiên. Thời đó một số Unix-hackers đã phát triển nhanh các công cụ (tools) mô phỏng màn hình, bộ xử lý đầu cuối tiếng Nhật, vân vân. Sau đó các nhà tình nguyện đã tích cực tham gia phong trào PMNM. Kết quả điển hình có thể kể tới phiên bản tiếng Nhật Tcl/tk hoặc bộ gõ và xử lý tiếng Nhật trên Unix như Kinput2. Ngoài ra, SRA cung cấp một trang Web Nhà kho phần mềm (Software House) cho phép người dùng tải miễn phí PMNM qua dịch vụ ftp tại ftp://ftp.sra.co.jp với những PMNM không chỉ do SRA phát triển, mà của các cộng đồng PMNM ở Nhật Bản và trên thế giới. SRA có vai trò chính trong tổ chức và dẫn dắt các cộng đồng PMNM ở Nhật Bản, ngoài vai trò chủ đạo về nghiên cứu và phát triển phần mềm (thương mại) nói chung. SRA cử các nhân viên sang FSF làm tình nguyện viên ngay từ những ngày đầu của dự án GNU, trong đó có chuyên gia phần mềm N. Hikichi (mà tác giả bài viết này có dịp cộng tác và liên lạc trao đổi nghiên cứu từ năm 1993 đến nay, trong đó có những trao đổi về sử dụng các phần mềm nguồn mở như FreeBSD, Linux, GCC, GNUplot, TeX/LaTex, Perl, Tcl/tk, Emacs, Nemacs, …). Ông N. Hikichi và các cộng sự tại SRA đã tạo dựng một số dự án PMNM sau khi có được những kinh nghiệm tại FSF. Chẳng hạn như dự án GNU-Wingnut [9] (sẽ được mô tả ở mục sau) hoặc GNU NewsLetter nhằm phổ biến tình hình dự án GNU kịp thời đến độc giả Nhật Bản. Cũng trong SRA, chuyên gia phần mềm A. Aoki đã tạo dựng dự án PMNM xử lý đồ họa 3

Nguyễn Ngọc Bình (ĐHBK HN, [email protected]): Phát triển phần mềm nguồn mở ở Nhật Bản … 3

Page 4: Open Source Software Development in Japan and Experiences

Hội thảo lần thứ 2 về PMNM ở Việt Nam – Hà Nội, 17-18 tháng 12 năm 2002 2nd Conference on Open Source Software in Vietnam – Hanoi, 17-18 December 2002

chiều (3D), lấy tên là dự án Jun [10, 11] (được mô tả ở mục tiếp sau). Còn chuyên gia phần mềm T. Ishii lại thể hiện đóng góp của mình qua dự án PMNM SRA-postgreSQL [12] với mục đích ban đầu là Nhật hóa Hệ quản trị CSDL quan hệ PostgreSQL trên nền Unix (cũng sẽ được mô tả ở mục tiếp sau) mà nhiều người từng biết và sử dụng. SRA cũng có những dự án nghiên cứu và phát triển Linux [13], FreeBSD, … cho các máy PC. Sự nhanh nhạy của SRA và giới phần mềm Nhật Bản trong phát triển PMNM có thể thấy qua việc Hội chợ LinuxWorld USA mở ở Mỹ tháng 2 năm 1998, thì Hội chợ LinuxWorld Japan được mở ngay sau ít tuần vào tháng 3 năm 1998, từ đó hình thành Hiệp hội Linux Nhật Bản do SRA giữ vai trò quan trọng. Ngoài các dự án PMNM, SRA còn hợp tác với các cơ quan, viện nghiên cứu, công ty khác để phát triển lý thuyết và công cụ cho phát triển phần mềm. Chẳng hạn, thông qua hợp tác với Viện Tiên tiến về Khoa học và Công nghệ Nhật Bản (Japan Advanced Institute for Science and Technology - JAIST, http://www.jaist.ac.jp), SRA đã đưa ra Ngôn ngữ đặc tả hình thức đại số CafeOBJ (http://www.ldl.jaist.ac.jp/cafeobj/ hay http://www.sra-ktl.co.jp/report/report2-j.html) như một loại sản phẩm PMNM nhằm đảm bảo tính đúng đắn của phần mềm. Hiện nay dự án này đang thử chứng minh hình thức tính đúng đắn lôgic của nhân Linux. 2. Một số dự án PMNM ở Nhật Bản

Tháng 1 năm 2001, Bộ Kinh tế, Thương mại và Công nghiệp (METI – the Ministry of Economy, Trade and Industry) của Nhật Bản đã có dự án tiến hành nghiên cứu đánh giá hiện trạng phát triển PMNM trong công nghiệp phần mềm Nhật Bản. SRA là công ty tiên phong trong phong trào PMNM như đã trình bầy ở trên được chọn là đơn vị thực hiện điều tra đánh giá này. Bốn dự án PMNM tiêu biểu ở Nhật Bản đã được chọn làm đối tượng nghiên cứu, điều tra (xem Bảng 1).

Bảng 1: Một số dự án Phần mềm nguồn mở ở Nhật Bản.

Dự án PMNM Lĩnh vực Nội dung

1 GNU Wingnut Môi trường phát triển Cung cấp hỗ trợ một số ứng dụng của GNU cho các công ty Nhật Bản cần cài đặt phần mềm của GNU vào nền phần cứng của mình (các loại PC)

2 Linux-Support Hệ điều hành Cung cấp hỗ trợ cho người dùng Linux, như một nhà phân phối tích hợp chủ đạo

3 SRA-PostrgreSQL Cơ sở dữ liệu Hỗ trợ những khách hàng Nhật Bản sử dụng hệ quản trị cơ sở dữ liệu PostgreSQL

4 Jun Đa phương tiện Thư viện đa phương tiện 3 chiều (3D) cho Smalltalk và Java

Việc điều tra được tiến hành thông qua phỏng vấn các thành viên của từng dự án, nhằm trả

lời các câu hỏi sau: • Họ làm việc với những PMNM nào? • Việc phát triển PMNM được tiến hành như thế nào? • Những người phát triển đã dùng phương tiện liên lạc và trao đổi gì trong khi phát triển

PMNM? • Họ kinh doanh PMNM như thế nào? • Họ thấy được những lợi ích gì qua kinh doanh PMNM?

Cuộc điều tra đã được tiến hành rất cẩn thận, công phu. Thay vì hỏi trực tiếp và đơn giản, một loạt tọa đàm và thảo luận đã được thực hiện để đúc kết ra những trả lời xác thực cho các câu hỏi trên.

Nguyễn Ngọc Bình (ĐHBK HN, [email protected]): Phát triển phần mềm nguồn mở ở Nhật Bản … 4

Page 5: Open Source Software Development in Japan and Experiences

Hội thảo lần thứ 2 về PMNM ở Việt Nam – Hà Nội, 17-18 tháng 12 năm 2002 2nd Conference on Open Source Software in Vietnam – Hanoi, 17-18 December 2002

2.1 Dự án GNU Wingnut Đây là dự án liên quan đến GNU của FSF. Dự án này nhằm trợ giúp khách hàng đưa các chương trình phần mềm của GNU vào nền phần cứng chuyên dụng, vào các máy đích của khách hàng. Ví dụ điển hình là một nhà sản xuất phần cứng cần có Emacs và GCC của GNU chạy trên hệ điều hành siêu máy tính của mình. Khi đó có 2 việc cần làm. Thứ nhất, cần phát triển gói chương trình cho người dùng. Mặc dù có mã nguồn, nhưng có rất nhiều chương trình GNU lớn và phức tạp, đòi hỏi tri thức và kinh nghiệm chuyên gia mới hiểu được chúng. Những thành viên của dự án GNU Wingnut sẽ cung cấp những tri thức và kinh nghiệm như thế cho phép khách hàng phát triển các gói chương trình nhanh hơn và tốt hơn. Thứ hai, xem ra có vẻ lý thú hơn và độc đáo cho riêng dự án GNU Wingnut này, đó là giúp khách hàng nâng cao chất lượng các gói chương trình bằng cách tu chỉnh và gạn lọc chúng sao cho chúng có thể được phản hồi ngược lại đội phát triển cốt cán (lõi) của GNU (GNU core development team) và tích hợp vào phiên bản lõi nhằm đảm bảo 3 tiêu chí của GNU trong phát triển PMNM: phiên bản đơn lẻ cho một chương trình; tuân thủ quy định lập trình và làm tài liệu; đảm bảo liên lạc trực tiếp giữa thành viên của dự án này với các thành viên cốt cán của dự án GNU thông qua các mailing-lists. Nhiều lập trình viên ở Nhật Bản luôn xem đội cốt cán của GNU là những "siêu lập trình viên" (super-programmers) với sự kính nể cao về kỹ năng và có thể học được nhiều điều từ họ. Một số thành viên của dự án GNU Wingnut đã từng làm việc sát cánh với đội cốt cán GNU hơn chục năm qua (như ông N. Hikichi kể trên) và họ làm cầu nối trung gian rất tốt giữa khách hàng (ở Nhật Bản) với đội cốt cán GNU của FSF. 2.2 Dự án hỗ trợ Linux Dự án hỗ trợ Linux tại SRA có tên Linux-Support nhằm cung cấp cho người dùng những hỗ trợ về hệ điều hành Linux, trừ phần nhân được hỗ trợ tập trung theo kiểu Nhà thờ (Cathedral). Nếu như dự án GNU nói trên đảm bảo tính đơn lẻ của các phiên bản cho một chương trình, thì ở Linux-Support lại tồn tại nhiều phiên bản của các chương trình cho cùng một chức năng có trong Linux, và chúng được phát triển theo kiểu Tiệm tạp hóa (Bazaar). Đó là các chức năng công cụ ngoại vi. Người phát triển đặt chương trình của mình lên Web, người dùng sử dụng mô-tơ tìm kiếm để tìm chương trình cần thiết. Vì có nhiều phiên bản tồn tại trên Web, do vậy cần dịch vụ cho tìm kiếm chương trình mong muốn. Hơn nữa, vì nhiều phiên bản không tương thích với nhau nên việc tìm ra tập con các chương trình tương thích cho yêu cầu của người dùng cũng là một nhu cầu tự nhiên, vân vân. Dự án này như người bán hàng hỗ trợ (Support Seller) nhằm giúp khách hàng tìm ra các gói sản phẩm (Linux) tương thích và sửa đổi phần mềm cho phù hợp với nhu cầu của người dùng. Những thành viên của dự án cũng thường phải trả lời các câu hỏi của người dùng về những thông tin mới nhất liên quan đến an toàn và những thông báo lỗi, gỡ lỗi đối với chương trình người dùng đang sử dụng. Tất cả những nhu cầu này đều được đáp ứng thông qua Web và Internet. Do đó, những thành viên của Linux-Support phải có khả năng đọc và hiểu được chương trình (mã) nguồn do người khác viết. Chẳng hạn, khi một lỗi được tìm ra trong một chương trình Linux, quy trình xử lý của một thành viên thường diễn ra theo trình tự sau:

1. Đọc phiên bản mới nhất của mã nguồn để xem xem lỗi đã được sửa chưa; 2. Nếu chưa, đọc phiên bản đã công bố để xem xem lỗi đã được sửa chưa; 3. Nếu chưa, đọc báo cáo theo dõi về lỗi bởi các nhà phân phối nếu báo cáo có nêu; 4. Nếu không nêu, kiểm tra các mailing-lists liên quan xem xem lỗi đó có được báo chưa; 5. Nếu chưa, cố gắng tìm các trang Web có thông báo những lỗi tương tự. Khi tìm chương trình đã được sửa lỗi mới nhất, nên dùng lệnh diff (của các hệ Unix/Linux)

để xem xem lỗi đã được sửa thế nào, sau đó áp dụng những sửa đổi cần thiết vào mã nguồn hiện tại.

Nguyễn Ngọc Bình (ĐHBK HN, [email protected]): Phát triển phần mềm nguồn mở ở Nhật Bản … 5

Page 6: Open Source Software Development in Japan and Experiences

Hội thảo lần thứ 2 về PMNM ở Việt Nam – Hà Nội, 17-18 tháng 12 năm 2002 2nd Conference on Open Source Software in Vietnam – Hanoi, 17-18 December 2002

Điều cần nói thêm là những người dùng thường ít để ý đến phiên bản mới nhất nếu như phiên bản họ đang dùng vẫn chạy tốt những chức năng mà họ cần. Do vậy trên thực tế có rất nhiều phiên bản của Linux đang được sử dụng, không cứ gì là bản mới nhất mặc dù là miễn phí. 2.3 Dự án SRA-PostgreSQL Dự án SRA-PostgreSQL liên quan đến dự án PMNM về hệ quản trị cơ sở dữ liệu (CSDL) PostgreSQL được đặt tại Mỹ (http://www.PostgreSQL.org) là một hệ PMNM được phát triển như bản mẫu nghiên cứu. Hệ đã tiến hóa liên tục và nay có thể sánh ngang với các hệ quản trị CSDL thương mại quy mô lớn. Vì tính khoẻ (robustness) là yêu cầu cao trong các hệ CSDL, cho nên SRA-PostgreSQL được kiểm soát chặt chẽ bởi nhóm phát triển lõi (cốt cán, chủ chốt). Việc quyết định về phát triển SRA-PostgreSQL được thảo luận dân chủ trong nhóm thông qua mailing-lists, mà chủ yếu bàn về đặc tả những tính năng và yêu cầu mới. Nhiệm vụ đầu tiên của dự án này là quốc tế hóa, thông qua bốn bước :

1. Trước tiên làm cho tiếng Nhật; 2. Sau đó mở rộng cho các ngôn ngữ với mã hóa 2 bytes (Nhật, Trung, Hàn, ...); 3. Tiếp đến là tích hợp với phiên bản lõi (core version) của PostgreSQL (tại Mỹ) ; 4. Phân phối phiên bản sau khi tích hợp như bản đã được quốc tế hóa. Do những cống hiến của dự án này cho cộng đồng PostgreSQL mà nhóm trưởng của dự án

này đã trở thành thành viên của nhóm cốt cán PostgreSQL. Ngoài việc quốc tế hóa, dự án này cũng hỗ trợ khách hàng đưa hệ thống PostgreSQL vào

những nền phần cứng khác nhau và tiến hành những thử nghiệm, đánh giá. Thêm vào đó, có những dịch vụ hỗ trợ khách hàng khác như ftp cho các gói ứng dụng, thông báo lỗi, … Nhiều người dùng Nhật Bản đã khá vất vả khi tìm những thông tin liên quan vì phần lớn các thông tin về PostgreSQL được viết trên tiếng Anh. Do vậy, dự án này còn có nhiệm vụ giúp người dùng chuyển các tài liệu từ tiếng Anh sang tiếng Nhật.

Một lợi thế lớn nhất của dự án này như một PMNM là ở chỗ người ta có thể tìm và giải quyết lỗi nhanh hơn nhiều so với phát triển phần mềm thương mại (nguồn đóng). Phần lớn người dùng đóng góp bằng cách thử chương trình và tìm lỗi thông qua việc đọc chương trình nguồn, chứ không phải ở việc viết mã chương trình.

Một điều đặc thù nữa của dự án này là ở chỗ vì đây là PMNM về hệ CSDL, do vậy khi gỡ lỗi cần phải dùng những bộ dữ liệu đặc thù mới tái hiện được lỗi. Tuy nhiên những dữ liệu như thế là của khách hàng (người dùng) và không được phép công khai. Do vậy, người dùng thường yêu cầu thành viên của dự án phải đảm bảo rằng bộ dữ liệu họ cung cấp chỉ được phép dùng cho thành viên dự án để gỡ lỗi, chứ không được công bố cho cả cộng đồng PostgreSQL hay SRA-PostgreSQL. Sau khi SRA-PostgreSQL sửa xong lỗi thì họ gửi chương trình đã được sửa cho nhóm chủ chốt của PostgreSQL. 2.4 Dự án Jun Dự án Jun tại SRA phát triển và phân phối thư viện Jun, thư viện Smalltalk và Java cho các đối tượng 3 chiều (3D) và xử lý dữ liệu multimedia. Khác với các dự án trên đây và những dự án PMNM nói chung, Jun không chỉ cung cấp mã nguồn mà còn cung cấp mô hình bố trí các vật thể 3 chiều cho cộng đồng người dùng, được xem như mô hình tham chiếu, tham khảo cho phát triển những đối tượng 3 chiều và xử lý dữ liệu multimedia. Thay vì một cộng đồng người phát triển rộng rãi, Jun là dự án theo kiểu trong nhà (in-house) và chỉ do một nhóm nhỏ 3-5 người lập trình. Quá trình phát triển và tiến hóa được kiểm soát chặt chẽ bởi người trưởng nhóm với trách nhiệm cả về đảm bảo chất lượng và trách nhiệm quyết định hướng phát triển, tiến hóa của Jun. Mặc dù cộng đồng PMNM của Jun không có đóng góp trực tiếp về mã nguồn, nhưng họ góp phần quan trọng

Nguyễn Ngọc Bình (ĐHBK HN, [email protected]): Phát triển phần mềm nguồn mở ở Nhật Bản … 6

Page 7: Open Source Software Development in Japan and Experiences

Hội thảo lần thứ 2 về PMNM ở Việt Nam – Hà Nội, 17-18 tháng 12 năm 2002 2nd Conference on Open Source Software in Vietnam – Hanoi, 17-18 December 2002

vào thành công của Jun thông qua phản hồi sử dụng, yêu cầu tính năng mới và những thông báo về lỗi. Mô hình kinh doanh nghiệp vụ của thư viện Jun là phát triển các ứng dụng cho khách hàng liên quan đến Jun. Mặc dù Jun là thư viện PMNM và miễn phí cho các phát triển khác, nhưng thư viện đó khá lớn, đòi hỏi cố gắng nhất định của người dùng thì mới hiểu và sử dụng được. Với thuận lợi là những người sáng lập ban đầu của dự án, nhóm Jun có thế mạnh trong kinh doanh là họ thường được người dùng đặt hàng phát triển các ứng dụng có dùng thư viện Jun. Tất nhiên, họ kèm cả công việc tư vấn, đào tạo về sử dụng thư viện Jun và các mô hình 3 chiều từ Jun. 3. Phân tích Các nhóm điều tra PMNM ở Nhật Bản đã đưa ra những phân tích và đánh giá sâu sắc về phát triển PMNM qua những dự án PMNM nói trên, đồng thời khái quát một số mô hình phát triển PMNM ở Nhật Bản [7, 8, 11, 14]. 3.1 Cộng đồng PMNM và cấu trúc của Cộng đồng PMNM

Để hiểu sâu hơn về bản chất tiến hóa trong các dự án PMNM, chúng ta cần xem xét cả bản thân hệ PMNM lẫn cộng đồng của nó như một lực lượng điều khiển sự tiến hóa của PMNM. Để hiểu được điều đó, chúng ta lại phải phân tích vai trò của các thành viên trong cộng đồng và cấu trúc của cộng đồng nên như thế nào là hợp lý, vân vân. 3.1.1 Vai trò của thành viên cộng đồng Nhóm nghiên cứu, điều tra về PMNM ở Nhật Bản đã phân định ra tám loại thành viên của một cộng đồng PMNM, đó là:

• Người dùng thụ động (Passive User): Họ chỉ là người dùng đơn thuần như sử dụng các phần mềm thương mại. Họ quan tâm đến hệ PMNM chủ yếu do chất lượng cao và khả năng có thể tự thay đổi được chương trình khi cần thiết;

• Người đọc (Reader): Họ là những người dùng chủ động, tích cực của hệ PMNM đó. Họ không chỉ sử dụng mà còn cố gắng hiểu xem hệ thống làm việc như thế nào bằng cách đọc mã nguồn. Họ đóng vai trò như những người đọc xét duyệt (peer reviewers) trong một tổ chức phát triển phần mềm truyền thống;

• Người báo lỗi (Bug Reporter): Họ phát hiện và thông báo lỗi. Họ không sửa lỗi, và họ có thể cũng không đọc chương trình nguồn. Họ có vai trò như người kiểm thử (testers) trong một tổ chức phát triển phần mềm truyền thống;

• Người sửa lỗi (Bug Fixer): Họ sửa các lỗi do chính họ phát hiện hoặc do người báo lỗi thông báo. Họ cần phải đọc và hiểu cặn kẽ phần mã nguồn mà phát sinh ra lỗi thì mới có thể chỉnh sửa được;

• Người phát triển ngoại vi (Peripheral Developer): Họ đóng góp thêm các chức năng hoặc tính năng mới cho hệ thống tùy từng trường hợp. Những đóng góp của họ không thường xuyên và thời gian họ tham gia cũng thường ngắn và họa hoằn;

• Người phát triển tích cực (Active Developer): Họ thường xuyên đóng góp các tính năng mới và giải quyết các lỗi. Họ là một trong những lực lượng phát triển chủ yếu của các hệ PMNM;

• Thành viên cốt cán (Core Member): Họ chịu trách nhiệm dẫn dắt và điều phối sự phát triển của một dự án PMNM. Họ là những người “thường trực” của dự án, tham gia với thời gian đủ dài và có những đóng góp nhất định cho sự phát triển và tiến hóa của hệ

Nguyễn Ngọc Bình (ĐHBK HN, [email protected]): Phát triển phần mềm nguồn mở ở Nhật Bản … 7

Page 8: Open Source Software Development in Japan and Experiences

Hội thảo lần thứ 2 về PMNM ở Việt Nam – Hà Nội, 17-18 tháng 12 năm 2002 2nd Conference on Open Source Software in Vietnam – Hanoi, 17-18 December 2002

thống. Trong một số cộng đồng PMNM, những thành viên cốt cán còn được gọi là những người bảo trì (Maintainers);

• Trưởng dự án (Project Leader): Người này thường là người nêu sáng kiến và tạo lập ra dự án đó. Trưởng dự án có trách nhiệm dự đoán và quán xuyến hướng đi của cả dự án.

Không phải cả tám loại vai trò trên đều nhất thiết phải có trong một dự án PMNM. Tỷ lệ

phân bố các loại thành viên trong từng dự án cũng khác nhau. Hơn nữa, từng dự án PMNM có thể có những tên gọi khác nhau cho từng vai trò kể trên, song ở đây chúng ta thống nhất cách gọi như trên để tiện thảo luận và phân định nhiệm vụ giữa các loại thành viên. Một trong những đặc điểm khác biệt của một dự án PMNM so với dự án phát triển phần mềm thương mại là các thành viên của dự án PMNM tự xác định vai trò của mình trong cộng đồng PMNM ấy tùy theo khả năng và sở thích cá nhân, thay vì “bị chỉ định” vai trò cố định truớc bởi trưởng dự án hay lãnh đạo cấp trên của mình. Mô hình cấu trúc chung của một cộng đồng PMNM được các chuyên gia PMNM của Nhật Bản minh họa như Hình 1.

Hình 1: Cấu trúc chung của một cộng đồng PMNM. 3.1.2 Cấu trúc cộng đồng

Hình 1 cho thấy cấu trúc bao từ ngoài vào trong của một cộng đồng PMNM (CĐPMNM). Cũng có thể xem đó như cấu trúc phân cấp. Nhân vật trung tâm của một CĐPMNM là trưởng dự án, xem như là tâm của “đĩa cấu trúc CĐPMNM” trong Hình 1. Càng gần tâm thì vai trò của thành viên càng có ảnh hưởng lớn đến PMNM. Ngược lại, trưởng dự án có ảnh hưởng rất mạnh đến các thành viên cốt cán. Người dùng thụ động có ít ảnh hưởng đến dự án, nhưng họ lại có vai trò quan trọng trong CĐPMNM vì chính họ là lực lượng chủ yếu quyết định sự tồn tại của PMNM và của chính CĐPMNM đó. Sự quan tâm của đông đảo người dùng thụ động đến PMNM là niềm cổ vũ các thành viên cốt cán làm việc tích cực hơn, hăng say hơn và cảm thấy mình có sức thu hút hơn bởi cộng đồng. Đây vừa là yếu tố tâm lý, vừa là yếu tố xã hội.

Vai trò và ảnh hưởng trong cộng đồng không liên quan đến các thuộc tính của thành viên như tuổi tác, địa vị, ... Điều quan trọng là họ đóng góp được những gì cho cộng đồng ấy. Những vai trò đó không cố định với một người: nếu người đó có nhiều đóng góp hơn thì sẽ tiến dần gần

Nguyễn Ngọc Bình (ĐHBK HN, [email protected]): Phát triển phần mềm nguồn mở ở Nhật Bản … 8

Page 9: Open Source Software Development in Japan and Experiences

Hội thảo lần thứ 2 về PMNM ở Việt Nam – Hà Nội, 17-18 tháng 12 năm 2002 2nd Conference on Open Source Software in Vietnam – Hanoi, 17-18 December 2002

tâm, ngược lại có thể xa tâm trở thành người dùng thụ động. Nghĩa là việc thay đổi vai trò trong cộng đồng PMNM là chuyện có thể và thường tình, không cố định như phát triển phần mềm thương mại.

Một điều quan trọng trong duy trì CĐPMNM có được sự phát triển bền vững là đảm bảo tính cân đối của những vai trò khác nhau trong cộng đồng đó. Nếu tất cả thành viên đều là người dùng thụ động thì PMNM không thể tiến hóa. Ngược lại, nếu tất cả đều là thành viên cốt cán thì rất khó điều hòa mọi cố gắng phát triển và việc tiến hóa tiếp theo của phần mềm cũng không bền vững. Từng CĐPMNM có cấu trúc của mình, tùy thộc vào bản thân hệ thống phần mềm được phát triển và số lượng thành viên mà tỷ lệ từng loại vai trò được phân bố khác nhau. Nói chung, phần lớn thành viên là những người dùng thụ động. Chẳng hạn có đến 99% là người dùng thụ động trong CĐPMNM Apache. Tỷ lệ giảm nhanh từ người đọc đến thành viên cốt cán. Đa số các PMNM chỉ do một số ít người phát triển.

3.2 Vai trò và cấu trúc của bốn cộng đồng PMNM

Ngoại trừ dự án Jun là do một số ít thành viên phát triển, ba dự án kia có cộng đồng phát triển rộng rãi với vai trò chủ đạo của SRA. 3.2.1 GNU-Wingnut

Các chương trình GNU trong dự án này thường có trưởng dự án là người đề xướng ra dự án với sự trợ giúp đắc lực của một số thành viên cốt cán. Trưởng dự án đưa ra phần lớn các quyết định về phát triển hệ thống và là người quyết định những đóng góp nào được ghi nhận và đưa vào PMNM đó, quyết định xem những phản hồi nào nào cần được đề cập. Do thời gian có hạn nên trưởng dự án không thể xử lý hết những đóng góp và nhiều phản hồi đã bị bỏ qua. Những người phát triển tích cực được trưởng dự án tin cậy, họ đóng góp bằng các chương trình với mã nguồn của mình, đồng thời làm cầu nối trung gian để cải tiến các mã nguồn do những người phát triển ngoại vi và người sửa lỗi thực hiện. Ngoài ra, họ còn có nhiệm vụ lựa chọn mã nguồn tốt cho trưởng dự án xem xét và quyết định tích hợp vào sản phẩm PMNM. Các thành viên của GNU-Wingnut cũng là người phát triển tích cực trong cộng đồng GNU, do vậy họ thực hiện việc giao tiếp liên lạc giữa những người mới tham gia phát triển với trưởng nhóm, vân vân.

Vì GNU là một PMNM chất lượng cao, được phát triển bởi các nhà lập trình chuyên nghiệp rất giỏi, do vậy GNU có một cộng đồng với rất nhiều người đọc. Họ học được nhiều điều bổ ích từ GNU về kỹ năng lập trình và những tri thức hữu ích khác thông qua việc đọc mã nguồn tự do. Họ cũng là người xét duyệt rất tốt của GNU. 3.2.2 Linux-Support

Trưởng dự án Linux là Linus Torvalds, với một số ít thành viên cốt cán chịu trách nhiệm phát triển các hệ thống con. Có nhiều người phát triển tích cực làm việc độc lập trên các bài toán nhỏ riêng biệt như viết trình điều khiển cho các thiết bị mới,... Tuy nhiên lực luợng những người dùng thụ động lại rất đông đảo, họ không quan tâm đến việc đọc hay hiểu mã nguồn. Thành viên của dự án này tại SRA là những người phát triển ngoại vi, người sửa lỗi và người đọc. Họ hiểu mã nguồn và có khả năng sửa các lỗi được chính họ tìm ra hoặc được thông báo từ những người dùng thụ động của cộng đồng. 3.2.3 SRA-PostgreSQL Dự án này không có trưởng dự án duy nhất như Linux-Support, mà do các thành viên cốt cán liên lạc với nhau thông qua các mailing-lists để thảo luận và quyết dịnh hướng đi của hệ thống.

Nguyễn Ngọc Bình (ĐHBK HN, [email protected]): Phát triển phần mềm nguồn mở ở Nhật Bản … 9

Page 10: Open Source Software Development in Japan and Experiences

Hội thảo lần thứ 2 về PMNM ở Việt Nam – Hà Nội, 17-18 tháng 12 năm 2002 2nd Conference on Open Source Software in Vietnam – Hanoi, 17-18 December 2002

Việc đưa một chức năng mới vào hệ thống phải do ít nhất một thành viên cốt cát đưa ra và được bỏ phiếu bởi tất cả các thành viên cốt cán (lõi) của dự án. CĐPMNM này có khoảng 30 người phát triển tích cực (Nhóm phát triển chủ đạo). Các chương trình được nhóm này phát triển thường ở dạng các gói và chỉ được tích hợp cuối cùng vào hệ thống khi được phê chuẩn bởi các thành viên cốt cán. Phần lớn thành viên cộng đồng là người dùng thụ động và người báo lỗi. Số người đọc rất ít. Số người sửa lỗi lại càng ít. Lãnh đạo dự án này là một người phát triển tích cực, các thành viên khác làm việc với người lãnh đạo như những người phát triển ngoại vi. 3.2.4 Jun Dự án này có một trưởng dự án là người của SRA - ông Atsushi Aoki. Một số thành viên khác cùng làm việc với trưởng dự án như những thành viên cốt cán. Tất cả những phát triển đều được thực hiện trong phạm vi SRA. Vì các phiên bản được chỉ được công bố ra ngoài sau khi đã được kiểm thử cẩn thận, do đó có rất ít người báo lỗi (bug reporters). Phần lớn thành viên của CĐPMNM này là những người dùng thụ động. Số thành viên là người đọc cũng rất ít, họ là những người học hỏi Jun để sử dụng nó như mô hình tham chiếu trong việc tạo lập một hệ thống tương tự nhưng viết trên ngôn ngữ khác. 3.3 Tiến hóa của hệ thống và cộng đồng Bây giờ chúng ta xem xét những phân tích về mẫu hình tiến hóa (evolution patterns) của bốn PMNM cùng những cộng đồng tương ứng, cũng như xem xét sự phụ thuộc giữa chúng. 3.3.1 Tiến hóa của hệ thống Vì mục đích của bốn phần mềm nói trên là khác nhau, do vậy mẫu hình tiến hóa của chúng cũng khác nhau. Hình 2 biểu thị những mẫu hình tiến hóa đó.

(d) (c)

(b)(a)

Hình 2: Bốn mẫu hình tiến hóa của bốn PMNM.

GNU nói chung và GNU Wingnut nói riêng là dự án chất lượng cao có phiên bản thống nhất cho từng chức năng rất đẹp đẽ và sạch sẽ. Do vậy, khi người ta phát triển một gói chương

Nguyễn Ngọc Bình (ĐHBK HN, [email protected]): Phát triển phần mềm nguồn mở ở Nhật Bản … 10

Page 11: Open Source Software Development in Japan and Experiences

Hội thảo lần thứ 2 về PMNM ở Việt Nam – Hà Nội, 17-18 tháng 12 năm 2002 2nd Conference on Open Source Software in Vietnam – Hanoi, 17-18 December 2002

trình, trước khi nó được tích hợp vào phiên bản chính thức thì nó phải được kiểm thử và chỉnh sửa kỹ. Mẫu hình tiến hóa của GNU là tập trung theo một luồng trục chính như ở Hình 2 (a). Linux lại theo mẫu hình tiến hóa khác: cho phép nhiều cách cài đặt khác nhau đối với cùng một chức năng. Vì vậy có thể có nhiều nhánh tiến hóa khác nhau từ cùng một chương trình. Mẫu hình tiến hóa của Linux là phân rã theo kiểu “trăm hoa đua nở” như ở Hình 2 (b). PostgreSQL như giải pháp hỗn hợp: mỗi khi có các yêu cầu mới, những người phát triển tích cực tự tạo ra đội của mình để triển khai đáp ứng các yêu cầu đó. Tuy nhiên, những cài đặt đó (bởi nhiều nhóm khác nhau cho cùng một chức năng) chỉ tồn tại trong một thời gian nhất định, sau đó chúng sẽ được các thành viên cốt cán xem xét tích hợp vào phiên bản lõi của PMNM PostgreSQL. Mẫu hình tiến hóa của PMNM PostgreSQL là hội tụ từ nhiều nhánh thành một nhánh chung như ở Hình 2 (c). Jun là dự án có ít người trực tiếp tham gia phát triển, nó tiến hóa theo mẫu hình tuyến tính đơn (cây có 1 nhánh) với các phiên bản kế tiếp nhau như ở Hình 2 (d). Thực chất trước khi công bố ra ngoài thì các thành viên của Jun đã phải kiểm thử rất nhiều phiên bản nội bộ để có được một phiên bản tốt cho công đồng. 3.3.2 Tiến hóa của cộng đồng PMNM Sự tiến hóa của CĐPMNM liên quan đến sự thay đổi vai trò của các thành viên của cộng đồng, từ đó liên quan đến cấu trúc của CĐPMNM cũng thay đổi. Không giống như vai trò thành viên trong dự án phần mềm thương mại, ở dự án PMNM một người có thể thay đổi vai trò của mình trong CĐPMNM ấy tùy thuộc vào khả năng, sở thích, mối quan tâm và thời gian của mình. Sở thích và mối quan tâm ấy lại có thể thay đổi theo tác động của CĐPMNM đến người đó, vân vân.

Con đường để một người mới vào cộng đồng trở thành một thành viên cốt cán có thể hình dung như sau: anh/chị ta bị cuốn hút vào CĐPMNM đó là vì PMNM ấy có thể giải quyết vấn đề hay bài toán của anh/chị ta quan tâm. Tính sâu sắc, kỹ năng cao và độc đáo của một hệ PMNM chính là động lực thu hút các thành viên mới muốn học hỏi nhiều hơn, muốn đọc mã nguồn của PMNM đó hơn. Lúc ấy thành viên chuyển từ người dùng thụ động sang người đọc. Một khi anh/chị ta đọc mã nguồn và hiểu thêm về PMNM đó, anh/chị ta có thể gỡ được lỗi do mình tìm ra hoặc người khác thông báo. Khi sử dụng PMNM và gỡ được lỗi, thành viên có thể muốn thêm một số chức năng mới để hệ thống mạnh hơn, đáp ứng tốt hơn nhu cầu của thành viên đó. Có mã nguồn, có nhu cầu cải tiến PMNM, có lòng ham muốn thực hiện nhu cầu đó thì anh/chị ta sẽ làm được. Khi cho công bố phần chương trình hoàn thiện của mình đến CĐPMNM ấy thì anh/chị ta có thể trở thành vai trò người sửa lỗi và người phát triển ngoại vi của PMNM ấy và sẽ được thừa nhận bởi cộng đồng. Anh/chị ta càng đóng góp nhiều hơn thì uy tín và vị trí của thành viên ấy càng được nâng cao trong cộng đồng. Đến lúc nào đó khi uy tín đủ cao, anh/chị ta sẽ được cộng đồng lựa chọn vào số ít những thành viên lõi của CĐPMNM ấy.

Cả bốn dự án PMNM được xem xét ở đây đều có CĐPMNM tiến hóa theo con đường chung vừa mô tả. Quá trình trên cũng là quá trình học của các thành viên để nâng dần trình độ, kỹ năng và sự thừa nhận của cộng đồng. Tuy nhiên, không phải ai cũng muốn hoặc có thể đi sâu vào tận bên trong để thành thành viên cốt cán. Phần lớn các thành viên di chuyển qua lại quanh 3 lớp ngoài cùng của Hình 1, tức là người dùng thụ động, người đọc và người báo lỗi.

Có hai yếu tố quan trọng cho sự tiến hóa của một CĐPMNM: • Sự có mặt của các thành viên có mong muốn đóng góp và tăng ảnh hưởng của mình

trong cộng đồng; • Cơ chế xã hội của cộng đồng ấy trong việc khuyến khích và cho phép thành viên thay

đổi vai trò của mình một cách dễ dàng.

Nguyễn Ngọc Bình (ĐHBK HN, [email protected]): Phát triển phần mềm nguồn mở ở Nhật Bản … 11

Page 12: Open Source Software Development in Japan and Experiences

Hội thảo lần thứ 2 về PMNM ở Việt Nam – Hà Nội, 17-18 tháng 12 năm 2002 2nd Conference on Open Source Software in Vietnam – Hanoi, 17-18 December 2002

Ngoài ra còn những yếu tố khác như tính hữu dụng của PMNM ấy, tính công nghệ (tiên tiến) được dùng trong PMNM ấy, vân vân. 3.3.3 Đồng tiến hóa của hệ thống và cộng đồng

Chúng ta có thể thấy ngay rằng muốn có được việc phát triển PMNM một cách bền vững thì cần có sự tiến hóa của cả chính PNNM lẫn cộng đồng của nó. Lôgic này đã thể hiện rất rõ qua bốn PMNM và các cộng đồng liên quan kể trên, hai tiến hóa ấy tác động qua lại lẫn nhau. 3.4 Ba loại dự án PMNM Các nhà nghiên cứu PMNM ở Nhật Bản đưa ra ba loại dự án PMNM: hướng khám phá (Exploration-oriented), hướng tiện ích (Utility-oriented) và hướng dịch vụ (Service-oriented). Ba loại có những mục đích và nội dung khác nhau. Ta có thể thấy từng loại là gì và khác những loại khác như thế nào ở Bảng 2 dưới đây.

Bảng 2: Ba loại dự án PMNM.

Loại Mục đích Kiểu quản lý

Mẫu hình tiến hóa Cấu trúc cộng đồng Vấn đề

gặp phải Ví dụ

Hướng khám phá

Chia sẻ cái mới và tri thức

Tập trung kiểu nhà thờ (Cathedral)

• Nhánh đơn • Phản hồi từ

cộng đồng

• Trưởng dự án • Nhiều người đọc

Dễ bị phân chia

GNU Jun Perl

Hướng tiện ích

Thỏa mãn nhu cầu cá nhân

Phi tập trung kiểu tiệm tạp hóa (Bazaar)

• Nhiều phiên bản cùng tồn tại

• Kiểu tranh đua

• Nhiều người phát triển ngoại vi

• Hỗ trợ tương xứng cho người dùng thụ động

Khó chọn ra chương trình đúng đắn

Linux (trừ nhân) BSD

Hướng dịch vụ

Cung cấp dịch vụ ổn định

Tập trung kiểu hội đồng (Council)

• Nhánh đơn • Các gói

hợp nhất theo quản lý

• Thành viên cốt cán thay cho trưởng dự án

• Nhiều người dùng thụ động phát triển hệ thống cho người dùng đầu cuối

ít cái mới

Postrge-SQL Apache X-Window

4. Chiến lược PMNM của SRA Như trên đã viết, SRA là công ty dẫn đầu ở Nhật Bản về phát triển PMNM. Do vậy chiến lược PMNM của SRA cũng có thể xem là chiến lược PMNM ở Nhật Bản. Họ vào cuộc PMNM từ rất sớm (trên 20 năm), song cũng phải cho đến khi Linux nở rộ vào năm 1998 thì họ mới thành lập một Phòng nghiên cứu và phát triển chuyên môn về PMNM trong SRA (http://osb.sra.co.jp/) ngang với các phòng nghiên cứu, kinh doanh khác. SRA có chiến lược phát triển PMNM từ tiểu quy mô sang quy mô lớn dần từng bước [6], dựa theo các mô hình kinh doanh nguồn mở tại http://www.opensource.org. Trình tự thực hiện từng bước như sau:

(1) Thực hiện “người bán hàng hỗ trợ” (support sellers): SRA cung cấp hỗ trợ kỹ thuật, tập hợp những người tâm huyết để thành lập ra hội người dùng PMNM, phân phối phần mềm định kỳ, tổ chức thảo luận, cung cấp tư vấn và những dịch vụ hỏi đáp thông qua thư điện tử (e-mails), vân vân;

(2) Lập ra một nhóm khoảng 15 người từ phòng kinh doanh PMNM với sự hỗ trợ tối thiểu về lưu trú, văn phòng để từng bước triển khai tìm hiểu và mở rộng thị trường PMNM. Ngoài ra, nhóm đó được ủy thác việc khai thác các ứng dụng khách-chủ (client-server

Nguyễn Ngọc Bình (ĐHBK HN, [email protected]): Phát triển phần mềm nguồn mở ở Nhật Bản … 12

Page 13: Open Source Software Development in Japan and Experiences

Hội thảo lần thứ 2 về PMNM ở Việt Nam – Hà Nội, 17-18 tháng 12 năm 2002 2nd Conference on Open Source Software in Vietnam – Hanoi, 17-18 December 2002

applications) trên nền Linux, tích cực vận động các vụ/phòng khác của SRA và các công ty liên quan cùng tham gia phong trào PMNM này và ngày càng mở rộng;

(3) Giải tỏa bớt những bất an của người dùng PMNM về sự thiếu vắng hỗ trợ kỹ thuật và bảo trì khai thác: bằng kinh nghiệm và kiến thức phát triển PMNM của mình mà SRA đảm bảo với người dùng PMNM rằng sẽ cung cấp kịp thời những hỗ trợ và tri thức theo nhu cầu của họ một cách thích hợp nhất;

(4) Thực hiện “bổ trợ hóa” (accessorizing): kinh doanh các hệ thống đầy đủ có cài đặt sẵn những PMNM trên nền phần cứng và đảm bảo tính tương thích. Chẳng hạn như cài đặt Linux lên một số loại máy và tích hợp những PMNM theo cùng, đồng thời cũng thử việc đáp ứng dịch vụ cho một số khách hàng đặc biệt, có thể là giả định, theo một số lĩnh vực chuyên dụng;

(5) Thực hiện kinh doanh PMNM ở phạm vi quốc tế. Thực tế SRA đã có những đóng góp quan trọng cho các dự án PMNM tầm quốc tế như thông qua dự án Linux, các dự án PMNM dạng BSD, GNU,... Đặc biệt, trang web của dự án Jun đã được nhiều nơi trên thế giới truy cập, tải về và sử dụng ngày càng nhiều (http://www.sra.co.jp/people/aoki/jun/).

Theo những điều tra của Nhật Bản gần đây nhiều công ty, xí nghiệp, trường học, hành chính đã đưa PMNM vào sử dụng ngày càng nhiều [7]. Người ta dự báo trong 3 năm nữa ở Nhật Bản có thể có tới 40% xí nghiệp và công ty sẽ dùng Linux trên các máy chủ của mình, nhất là những công ty mới bắt đầu sử dụng PMNM. Cơn bùng nổ Linux những năm gần đây đã thu hút nhiều công ty cuốn theo Linux. Nhưng SRA, với kinh nghiệm 35 năm làm phần mềm của mình, vẫn xem việc phát triển PMNM chỉ là một mảng việc nhỏ của họ. 5. Nhận xét và kiến nghị Như đã đề cập ở phần đầu bài viết này: PMNM đã có từ lâu và Nhật Bản quan tâm đến PMNM hàng chục năm qua. Bổ sung thêm những điều đã trình bầy ở trên, những điều dưới đây được rút ra từ những quan sát và tìm hiểu thực tế tại Nhật Bản về PMNM của tác giả bài viết này:

• Nhật Bản có khá nhiều tạp chí cho phổ biến kiến thức về công nghệ thông tin (CNTT), trao đổi kinh nghiệm và trao đổi nghiên cứu. Các bài viết của họ đều mang tính chuyên nghiệp rất cao và viết rất cẩn thận cả về lời văn lẫn tính chính xác của từng ký hiệu trong một chương trình ví dụ. Những tạp chí mà cả người chuyên nghiệp CNTT lẫn sinh viên đều đọc thường xuyên như UNIX Magazine (http://www.ascii.co.jp/books/magazines/unix.html), ASCII DOS/V ISSUE (http://www.ascii.co.jp/pb/dosvissue/), Bit,... trong đó có phần nội dung đáng kể về PMNM. Riêng về các PMNM dòng BSD và GNU thì có tạp chí UNIX USER (http://www.unixuser.jp/), ASCII PC Explorer (http://review.ascii24.com/db/pcex), BSD magazine (http://www.ascii.co.jp/books/magazines/bsd.html), các PMNM kiểu GNU như GCC, Nemacs, Newsletter (http://www.sra.co.jp/public/doc/gnu/). Các tạp chí về Linux thì có Linux World (http://www.fujisan.co.jp/Product/5754/), Linux Magazine (http://www.ascii.co.jp/linuxmag/), Nikkei Linux (http://linux.nikkeibp.co.jp/),... Chính nhờ có những tạp chí này mà sinh viên tiếp cận nhanh với thông tin và kiến thức mới nhất mà mình quan tâm. Đó là chưa kể các tạp chí bằng tiếng Anh về CNTT nhập khẩu từ các nước khác và các tạp chí chuyên ngành (tiếng Nhật và tiếng Anh) của Hội Tin học Nhật Bản, của Viện Điện tử, Tin học và Truyền thông Nhật Bản;

• PMNM được dùng khá nhiều ở Nhật Bản, nhất là tại các trường. Ngay tại các phòng thí nghiệm hoặc trung tâm tính toán cỡ vừa trở xuống, việc cài đặt và sử dụng PMNM đều

Nguyễn Ngọc Bình (ĐHBK HN, [email protected]): Phát triển phần mềm nguồn mở ở Nhật Bản … 13

Page 14: Open Source Software Development in Japan and Experiences

Hội thảo lần thứ 2 về PMNM ở Việt Nam – Hà Nội, 17-18 tháng 12 năm 2002 2nd Conference on Open Source Software in Vietnam – Hanoi, 17-18 December 2002

được khuyến khích và nhận được sự trợ giúp chuyên môn từ các tạp chí, các đồng nghiệp hoặc qua tư vấn trên mạng. Các phần mềm nguồn mở thường dùng ở Nhật Bản tại các trường đại học là PMNM dòng BSD (FreeBSD, OpenBSD, ...), PMNM dòng GNU (GCC, Emacs, Nemacs, Plot, ...), PMNM dòng Linux (RedHat, Turbo, Vine, ...), Perl, Sendmail, Distribute, Majordomo, X-Window, Tcl/tk, Tgif, TeX, LaTeX, Apache, PostgreSQL, UNIX for Windows, StarOffice, đó là chưa kể rất nhiều PMNM hoặc phần mềm tự do cho người dùng đầu cuối (end-users) xử lý tiếng Nhật, vân vân. Tất nhiên, để dùng được những PMNM này đôi khi phải có môi trường tính toán ở mức độ nhất định và tri thức của người dùng cũng phải ở trình độ nào đó và không ngừng học hỏi, cập nhật;

• Kỷ luật nghề nghiệp ở Nhật Bản rất cao, kể cả sinh viên. Họ tôn trọng bản quyền và cũng chú ý sử dụng PMNM đúng mức theo những quy định của từng loại PMNM [4]. PMNM thực sự giúp cho sinh viên và kỹ sư CNTT học hỏi được rất nhiều qua mã nguồn mở. Kiến thức của sinh viên được mở rộng từng ngày qua việc đọc, học và làm theo kinh nghiệm trao đổi trên các tạp chí dựa trên những chuẩn mực được cộng đồng quy định. Người Nhật Bản rất cởi mở với nhau khi trao đổi kinh nghiệm chuyên môn.

Nhìn lại hiện trạng PMNM Việt Nam: chúng ta mới chỉ biết một góc nhỏ của thế giới

PMNM như đã trình bầy và phân tích ở trên. Đến đây chúng ta có thể thấy Linux chỉ là một hệ PMNM trong nhiều PMNM khác (xem Bảng 2). Ngay cả dòng Linux, chúng ta dường như mới chỉ quan tâm chủ yếu đến RedHat. Do thiếu tìm hiểu một cách đầy đủ về PMNM nên đôi khi chúng ta chỉ nhìn thấy Linux là PMNM duy nhất và cứ nói đến PMNM là nghĩ ngay đến Linux! Các nước người ta đã có công nghiệp CNTT, có công nghiệp phần mềm nên khi chọn thêm giải pháp PMNM sẽ làm cho họ mạnh hơn trong xu thế CNTT hiện nay. Chúng ta thiếu nhiều yếu tố, ngay làm phần mềm theo kiểu công nghiệp cũng còn chưa ổn. Liệu việc chọn giải pháp PMNM là “duy nhất” có thể ảnh hưởng không thuận đến công nghiệp CNTT và công nghiệp phần mềm Việt Nam đang hình thành không?

Để có cái nhìn đúng về PMNM và sử dụng chúng một cách hợp lý, ngoài chính sách mười điểm về PMNM được đề nghị trong [4], những điều nên xem xét thêm có thể là:

• Phát động phong trào tìm hiểu và sử dụng PMNM, nhất là các cơ sở đào tạo. Nên sớm (có thể thống nhất quan điểm) sử dụng PMNM trong đào tạo. Cần có nhận thức rõ và đúng đắn về PMNM và quy trình phát triển PMNM. Kinh nghiệm trên đây ở Nhật Bản có thể là tham khảo tốt;

• Nên tạo ra một số dự án PMNM, có loại PMNM ta phải tham gia với thế giới (như Linux, PostgreSQL, GNU,...) , có loại PMNM ta phải tự làm cho ta (ví dụ như xử lý tiếng Việt, tuyển sinh, quản lý hành chính, các tiện ích, ...);

• Nhà nước, một số công ty CNTT và một số trường đại học có khoa CNTT hay khoa tin học cần có những hỗ trợ tích cực cho phát triển PMNM như lập các diễn đàn, các tạp chí, các chuẩn mực PMNM, các kho PMNM, vân vân. Cần tăng cường phổ biến kiến thức về CNTT nói chung và PMNM nói riêng. Tổ chức dịch thuật các tài liệu sao cho có chất lượng, có kiểm soát (phản biện trước khi xuất bản) để không làm hư hại kiến thức của người đọc, người học. Chúng ta nên học tập Nhật Bản điều này: mỗi khi có cuốn sách hay bài viết mới về CNTT bằng tiếng Anh, họ thường thảo luận trên các diễn đàn xem có nên dịch hay không, nếu có thì ai sẽ là người dịch, thời gian bao lâu,... Sau khi thống nhất họ thông báo rộng rãi khi nào sẽ có sách đó bằng tiếng Nhật. Người đọc có thể tìm kiếm hoặc xem trên Internet danh sách và thông tin thảo luận về các cuốn đã

Nguyễn Ngọc Bình (ĐHBK HN, [email protected]): Phát triển phần mềm nguồn mở ở Nhật Bản … 14

Page 15: Open Source Software Development in Japan and Experiences

Hội thảo lần thứ 2 về PMNM ở Việt Nam – Hà Nội, 17-18 tháng 12 năm 2002 2nd Conference on Open Source Software in Vietnam – Hanoi, 17-18 December 2002

dịch, đang dịch và sẽ dịch. Nên xem lại việc đề cao tiếng Anh thái quá trong CNTT, mà cần thực hiện đào tạo và phổ biến kiến thức trước tiên phải chuẩn xác trên chính tiếng mẹ đẻ (tiếng Việt) của mình;

• Phát triển PMNM và phát triển phần mềm thương mại là hai quy trình có những điểm khác biệt nhau, vì vậy cần nhận thức rõ ranh giới để sao cho PMNM không ảnh hưởng xấu tới đào tạo phong cách và tư cách kỹ sư CNTT chuyên nghiệp, nhất là tính tự do trong công việc và vai trò trong một dự án. Kết hợp với đào tạo đạo đức nghề nghiệp, chẳng hạn về bản quyền phần mềm, về các loại dịch vụ PMNM, vân vân.

Để có được chính sách thích hợp với PMNM và xác định hợp lý vị trí, vai trò của PMNM

đối với CNTT của Việt Nam, nên chăng chúng ta cần suy nghĩ lại để trả lời cặn kẽ câu hỏi: Việt Nam nên phát triển công nghiệp CNTT và công nghiệp phần mềm như thế nào cho hợp lý? Từ đó sẽ biết được những việc cần làm trong đào tạo nguồn nhân lực CNTT, trong kinh doanh CNTT (ở trong nước và quốc tế), trong việc dùng CNTT thúc đẩy kinh tế và phát triển xã hội Việt Nam... Bàn bạc về những chủ đề đó vượt ra ngoài phạm vi bài viết này. Lời cảm ơn Tác giả xin cảm ơn Giáo sư K. Nakakoji thuộc Trung tâm nghiên cứu Khoa học và Công nghệ tiên tiến, Đại học Tokyo, Nhật Bản và Ông N. Hikichi thuộc SRA đã cung cấp những tư liệu giá trị cho bài viết này, cũng như những trao đổi về phát triển PMNM ở Nhật Bản. Nghiên cứu này cũng được sự hỗ trợ của các đề tài nghiên cứu khoa học cơ bản cấp nhà nước (đề án nghiên cứu cơ bản mã số KHCB-230701 và KHCB-220202). Tài liệu tham khảo chính

1. S.A. Hissam, C.B. Weinstock, D. Plakosh, J. Asundi : “Perspectives on Open Source Software”, CMU/SEI-2001-TR-019 ESC-TR-2001-019, 2001.

2. Free Software Foundation (http://www.fsf.org). 3. “Kỷ yếu Hội thảo lần thứ 1 PhÇn mÒm nguån më và Linux ở Việt Nam”, Trung tâm Hỗ trợ Đào tạo - Khu

CNC Hòa Lạc, tháng 12-2000, 225 trang. 4. Trần Lưu Chương, Đỗ Văn Lộc : “Về một Kế hoạch khung cho việc triển khai Ứng dụng và Phát triển Phần

mềm nguồn mở ở Việt Nam trong giai đoạn đến năm 2005” (trong Kû yÕu nµy). 5. E. Raymond: “The Cathedral and the Bazzar”(http://www.ccil.org/~esr/writings). 6. K. Kishida: “Chiến lược kinh doanh Phần mềm nguồn mở của SRA”, Tokyo, 1999. (Bản tiếng Nhật, có tại

http://osb.sra.co.jp/k2/OSS-Strategy-Public.html). 7. “Điều tra về Phương hướng Kinh doanh Phần mềm nguồn mở”, JISA, Tokyo, 2001. (Bản tiếng Nhật) 8. K. Nakakoji, Y. Yamamoto, Y. Nishinaka, K. Kishida, Y. Yunwen: “Evolution Patterns of Open-Source

Software Systems and Communities”, Proceedings of 5th International Workshop on Principles of Software Evolution (IWPSE2002), ACM Press, Orlando, FL., pp.76-85, May, 2002.

9. SRA-Wingnut (http://www.sra.co.jp/wingnut). 10. Jun (http://www.sra.co.jp/people/aoki/jun/). 11. A. Aoki, K. Hayashi, K. Kishida, K. Nakakoji, Y. Nisinaka, B. Reeves, A. Takashima, Y. Yamamoto: “A

Case Study of the Evolution of Jun: an Object-Oriented Open-Source 3D Multimedia Library”, Proceedings of International Conference on Software Engineering (ICSE2001), Toronto, CA., IEEE Computer Society, Los Alamos, CA., pp.524-533, May, 2001.

12. SRA-PostgreeSQL (http://www.sra.co.jp/people/t-ishii/PostgreSQL/). 13. SRA Linux-Support (http://osb.sra.co.jp/Linux/ ). 14. Y. Ye, K. Kishida, K. Nakakoji, Y. Yamamoto, A. Aoki: “Creating and Maintaining Sustainable Open

Source Software Communities”, Proceedings of ISFST2002, Wuhan, China, October, 2002.

Ngày 9-12-2002

Nguyễn Ngọc Bình (ĐHBK HN, [email protected]): Phát triển phần mềm nguồn mở ở Nhật Bản … 15