Skip to main content

Xu hướng phát triển phần mềm mã nguồn mở ngày nay

Thời gian gần đây, ở Việt Nam thường xuyên đề cập đến cụm từ mã nguồn mở - Open source hoặc phần mềm mã nguồn mở (OSS) - Open Source là một giải pháp tốt cho các tổ chức, cơ quan và chính phủ điện tử. Ở một số nước phát triển đã chuyển sang dùng phần mềm mã nguồn mở trong các cơ quan nhà nước như Pháp, Hàn Quốc, Đức... Nhưng vấn đề là ở chỗ hiện nay số lượng lớn các nhà phát triển phần mềm và người sử dụng có trình độ tay nghề về lập trình cao lại dành một lượng lớn thời gian, tiền bạc và công sức của mình để sáng tạo, mở rộng và bảo trì “miễn phí” liên tục cho các sản phẩm phần mềm mã nguồn mở.
Vậy cái gì đã thúc đẩy các nhà phát triển phần mềm làm điều đó? Bài viết này sẽ đi vào tìm hiểu các xu hướng phát triển phần mềm mã nguồn mở của các lập trình viên trên toàn thế giới. 
Phần mềm mã nguồn mở là phần mềm mà mã nguồn của phần mềm cung cấp sẵn cho người dùng sửa đổi, sử dụng và tái phân phối lại. Mã nguồn của phần mềm là hoàn toàn được cung cấp cho người dùng sử dụng với các mục đích khác nhau như học tập, nghiên cứu, phân tích, sửa đổi, phân phối lại. Cụm từ “Nguồn mở - Open source” hay “Phần mềm nguồn mở - Open Source software” được Eric S.Raymond đưa ra vào năm 1998 thay cho cụm từ “Phần mềm tự do - Free software” để làm rõ và tránh sự nhầm lẫn gây ra bởi sự mơ hồ của từ “miễn phí - Free” trong tiếng anh và nó đang được sử dụng phổ biến hiện nay. Từ “Miễn phí” ở đây có nghĩa là “Tự do - Freedom” và đôi khi còn được gọi là “Libre”. Một cách định nghĩa khác của từ miễn phí đó là “Miễn phí như trong ngôn luận - Free as in Speech, không miễn phí như trong bia - not free as in beer” (Weber, 2004), với cách định nghĩa này, từ “Miễn phí” có nghĩa là miễn phí trong việc phân phối nhưng không miễn phí về mặt chi phí.
Thị trường sử dụng máy chủ trên toàn thế giới từ tháng 08/1995 đến 04/2012
Thị trường sử dụng máy chủ trên toàn thế giới từ tháng 08/1995 đến 04/2012

Tính đến tháng 7/2011, trên trang Web SourceForget.netlưu trữ hơn 300.000 dự án phần mềm mã nguồn mở được phát triển bởi hơn 2triệu nhà phát triển phần mềm; 

Tính đến tháng 05/2012, trên trang Web GitHub (github.com) có khoảng 1.623.568 người lưu trữ hơn 2.814.969 triệu dự án
Tính đến tháng 1/2012, trình duyệt Web mã nguồn mở Google Chromegiữ 25 - 28% thị phần thị trường trình duyệt Web kể từ khi được ban hành vào tháng 9/2008 và hiện nay đang rất phát triển
Tính đến tháng 05/2012, trình duyệt Web FireFoxđược phát triển bởi quỹ phi lợi nhuận Mozilla chiếm 25% thị phần sử dụng trình duyệt Web trên toàn thế giới và ở một số nước như Indonesia, Đức và Ba Lan thì phần sử dụng trình duyệt Web này tưng ứng là 67%, 50% và 44%(2)
Dựa trên số liệu điều tra của công ty dịch vụ Internet Netcraft đến tháng 04/2012 [Netcraft 2012], máy chủ Web mã nguồn mở Apachenắm giữ 64.46% (tăng 0,22% so với tháng 03/2012) thị trường máy chủ Web, đứng tiếp theo là Microsoft với 13,66% (giảm 0,15% so với tháng 03/2012). Apache được phát triển bởi hàng ngàn lập trình viên có tay nghề cao, đóng góp thời gian và kiến thức vào để phát triển mà không lấy một đồng thù lao nào. Vậy động lực nào đã làm cho các lập trình viên này đóng góp mã nguồn mà họ không cần một sự khích lệ về kinh tế nào?


Động lực phát triển phần mềm mã nguồn mở

Cho tới hiện nay đã có rất nhiều nhà nghiên cứu đi sâu vào việc tìm hiểu các động lực của các lập trình viên để nhằm giải thích được tại sao họ lại sẵn sàng phát triển OSS. Đã liệt kê một số công trình nghiên cứu, có thể kể đến các công trình của Raymond (năm 2000), Lerner và Tirole (năm 2002), Torvalds và Diamond (năm 2001) sử dụng phương pháp phân tích dựa trên trường hợp, trong đó họ chủ yếu tập trung đi vào nghiên cứu một số dự án nổi tiếng và được sử dụng phổ biến như máy chủ Web Apache, Perl và 
Sendmail. Hertel đã sử dụng phương pháp thực nghiệm dựa trên việc phân tích các trang Web để làm rõ việc phát triển rất nhanh chóng của Linux.
Biểu đồ các đối tượng tham gia phát triển OSS
Biểu đồ các đối tượng tham gia phát triển OSS
Xác định được hai nhóm động lức chính: Động lực bên trong (intrinsic motivation) và động lực bên ngoài (extrinsic motivation). Động lực bên trong mô tả một số tình huống mà một ai đó làm một cái gì đó vì họ xem đó là điều họ đang quan tâm, nó là điều thú vị, hoặc nó đang là một thách thức đối với mọi người và kể cả chính họ. Trong khi đó, động lực bên ngoài lại đề cập tới việc một ai đó làm một cái gì đó nhằm hy vọng có được một kết quả riêng biệt phục vụ cho mục đích của họ. Động lực bên trong bắt nguồn từ trong tâm lý của cá nhân và Động lực bên ngoài là những phần thưởng hay món quà (rewards) mà các lập trình viên nhận được khi tham gia vào cộng đồng phát triển mã nguồn mở. Độ tuổi trung bình tham gia phát triển OSS là khoảng 30 tuổi và có trình độ học vấn cao. Kết quả của một cuộc khảo sát do Tập đoàn Tư vấn Boston vào năm 2002 về việc các nhà phát triển OSS trên SourceForge, kết quả cho thấy với 684 người được điều tra thì độ tuổi trung bình là 30 và có kinh nghiệm 11 năm trong lập trình. Và đặc biệt, thành phần tham gia phát triển OSS rất đa dạng, không chỉ là các sinh viên ở các trường đại học hoặc những người mới bắt đầu làm việc nhưng có kinh nghiệm trong lĩnh vực Công nghệ  Thông tin. Cụ thể, lập trình viên chiếm 45%, Quản trị hệ thống 6% hoặc Quản lý CNTT (6%), các đối tượng khác như học sinh (20%) và giới học thuật (7%).


 

Động lực bên trong của lập trình viên

Để phân tích các động lực bên trong của các lập trình viên phát triển OSS, đã chia động lực bên trong thành ba chủ đề:
1. Các lập trình viên, người dùng cần một giải 
pháp phần mềm cụ thể,
2. Làm cho vui - thú vui của các lập trình viên,
3. Mong muốn 
tặng cộng đồng lập trình viên một món quà.


Lập trình viên, người đứng đầu một công ty hoặc là nhóm trưởng của một nhóm phát triển phần mềm muốn phát triển một phần mềm OSS vì họ chưa hài lòng với phần mềm mà họ đang có hoặc chỉ đơn giản là vì các phần mềm mà họ cần chưa tồn tại. Linus Torvalds là một ví dụ, Linus cần một hệ điều hành Unix phù hợp và chạy tốt trên máy của mình, và kết quả là hệ điều hành Linux ra đời. Hay Eric Allman cần một máy chủ thư điện tử (Email Server) hiệu quả hơn dẫn đến phần mềm Sendmail ra đời, Larry Wall cần một công cụ để tự động tạo ra các Web và kết quả là ngôn ngữ lập trình Perl ra đời, Don Knuth cần một công cụ thuận tiện cho việc soạn thảo văn bản khoa học và kết quả là T E
X ra đời. Phát biểu rằng, những người phát triển phần mềm cho thấy sự quan tâm của họ trong việc tham gia phát triển phần mềm OSS do nhu cầu của riêng họ đối với phần mềm đó và để thỏa mãn nhu cầu của mình họ góp phần vào việc cải tiến phần mềm đó. 

1. Làm cho vui - thú vui của các lập trình viên

Đối với nhiều lập trình viên, việc lập trình được coi là một hoạt động rất bổ ích. Và do đó, việc các lập trình viên tạo ra các chương trình phần mềm hoặc các trò chơi hoặc thậm chí là một dự án phần mềm và bắt đầu làm nó chỉ với một điều đơn giản là “sở thích” Ví mã nguồn mở như một ngành khoa học ứng dụng trong đó những người lập trình đóng vai trò giống như những nhà khoa học, khám phá ra những ý tưởng mới thú vị và hấp dẫn. Và họ không thể ngồi chờ đợi ai đó giải quyết ý tưởng đó trước họ mà họ muốn tự mình bắt tay vào viết code (trở lại phòng thí nghiệm - đối với nhà khoa học) để thử nghiệm và sửa lỗi. Họ được thúc đẩy bởi sự tò mò, ham muốn học hỏi và chia sẻ những phát hiện của họ với mọi người và mong muốn đóng góp một cái gì đó cho cộng đồng. Đối với những người phát triển OSS (hoặc các nhà khoa học), việc tạo ra các sản phẩm phần mềm rồi cho cộng đồng sử dụng là một điều thú vị để giải quyết một vấn đề và chính điều đó làm họ tự hào về bản thân họ. Để có được điều thú vị (thành quả) đó, họ đã bỏ ra rất nhiều thời gian để tạo ra một chương trình gốc hoàn chỉnh hoặc bổ sung những tính năng mới hữu ích, với sự sáng tạo và sự cống hiến hết mình vì khoa học, vì niềm vui và đôi khi nó là vì cộng đồng.


2. Tặng cho cộng đồng một món quà

Theo Raymond, món quà mà các lập trình viên cho cộng đồng đồng nghĩa với việc nó cũng xác định được địa vị xã hội của họ trong sản phẩn đó. Điều này thực sự đúng đối với giới Hacker, thể hiện qua việc các Hacker tạo danh tiếng của mình trên cộng đồng qua các gói phần mềm hoặc giải pháp của mình. Một cách tiếp cận khác do Hars và Ou đưa ra để giải thích cho ý này là “Các lập trình viên xem cộng đồng nguồn mở như là một gia đình, ở đó mọi người làm việc hướng tới một sự hội tụ giữa các mục tiêu cá nhân của họ và mục tiêu của cộng đồng”. Các thành viên trong cộng đồng xem như là người thân của nhau và từ đó họ sẵn sàng làm một cái gì đó mà có thể mang lại lợi ích cho cộng đồng ngay cả khi nó không phục vụ mục đích nào của bản thân họ. Cũng đưa ra một biến thể khác của động lực bên trong và nó cũng được xếp vào mục này đó là “Lòng nhân ái - altruism” của các lập trình viên. Lập trình viên mã nguồn mở cung cấp một cái gì đó cho người khác (viết chương trình và cho mã nguồn) với chi phí của họ tự bỏ ra (thời gian, sức lực, chi phí cơ hội) mà không lấy bất kì một khoản chi phí nào. 

Động lực bên ngoài

Hầu hết các nhà nghiên cứu đều đồng nhất rằng động lực bên ngoài để cá nhân hay một tổ chức phát triển OSS là vấn đề về kinh tế hoặc mong muốn có được cơ hội tốt hơn 
trong công việc hoặc sự thăng tiến của bản thân trong công việc. Động lực của các Tổ chức tham gia phát triển phần mềm mã nguồn mở đó là nhờ việc phát triển những phần mềm đã có từ cộng đồng, tổ chức của họ có thể tiết kiệm tài nguyên, chi phí trong tiến trình phát triển phần mềm [11], và họ có thể tồn tại để đấu tranh chống lại sự thống trị của các đối thủ cạnh tranh với họ, và nhờ việc tham gia và cộng đồng mã nguồn mở mà các công ty phần mềm trở nên nổi tiếng trên thị trường phát triển phần mềm và hệ quả của nó là giúp họ thu hút thêm nhiều khách hàng và nhân viên có trình độ và kinh nghiệm cao, nó giúp làm tăng áp lực lên các đối thủ cạnh tranh với họ. Cho rằng, một lập trình viên có thể tham gia các dự án mã nguồn mở để cải thiện kỹ năng của họ. Các kỹ năng cá nhân, các khả năng và kiến thức của các lập trình viên được coi như là một hình thức đầu tư vốn đặc biệt, đầu tư vào con người thông qua kinh tế của các công ty, tổ chức sử dụng nguồn lao động. Có nhiều cách khác nhau để phát triển tiềm năng của một con người, ví dụ như: giáo dục, đào tạo, học tập và thực hành,... nó sẽ tạo cơ hội việc làm tốt hơn, lương cao hơn và có khả năng đáp ứng được nhiều công việc hơn.


Tiếp cận mã nguồn mở cho phép các lập trình viên có được những kinh nghiệm và thấy được lợi ích của mã nguồn mở. Nó cũng cho phép các lập trình viên gia nhập vào cộng đồng phát triển mã nguồn mở giống như việc đi học việc từ thực tế.Nếu là một lập trình viên chuyên nghiệp thì việc viết phần mềm và cho cộng đồng phần mềm cùng với mã nguồn là một giải pháp hiệu quả để họ thể hiện khả năng và sự khéo léo của họ trong lập trình. Tham gia vào các dự án mã nguồn mở có thể là một kênh quảng cáo tốt để các lập trình viên tài năng quảng bá sự khéo léo và tất nhiên việc quảng cáo này sẽ liên quan đến lợi nhuận trong tương lai của họ. 

Động lực khác

Động lực để mọi người tham gia vào cộng đồng mã nguồn mở bao gồm các động cơ tâm lý xã hội, văn hóa hoặc động cơ về kinh tế. Ở góc nhìn về Văn hóa thì việc phát triển các ứng dụng mã nguồn mở được xem là một nền văn hóa “Món quà”, ở đây khi một lập trình viên cho cộng đồng một món quà thì danh tiếng của họ được xác định bởi món quà mà họ cho cộng đồng. Đứng ở góc nhìn tâm lý xã hội thì việc đóng góp mã nguồn cho cộng đồng của lập trình viên sẽ được không chỉ cộng đồng, đồng nghiệp ngưỡng mộ mà ngay cả bản thân họ cũng thấy mình có ích với cộng đồng và cũng muốn sống một cuộc sống vì cộng đồng. Đứng ở góc độ kinh tế, một lập trình viên sẽ lựa chọn tham gia một dự án mã nguồn mở nếu lợi ích họ nhận được cao hơn chi phí họ tham gia [7]. Theo Lerner và Tirole. lợi ích chia làm hai loại: lợi ích trực tiếp (immediate) và lợi ích gián tiếp/chậm (delayed). Lợi ích trực tiếp gồm sự gia tăng giá trị của một sản phẩm của một cá nhân và sự hài lòng của một ai đó về sản phẩm có giá trị của cá nhân đó. Lợi ích gián tiếp liên quan đến việc công nhận giữa các đồng nghiệp cũng như phần thưởng của người sử dụng lao động hiện tại hoặc trong tương lai, chẳng hạn như mức lương cao hơn hay đơn giản chỉ là công việc hấp dẫn hơn. 

Kết luận

Bài báo này đã đi sâu vào nghiên cứu các động lực phát triển phần mềm mã nguồn mở của các lập trình viên và của các công ty hoặc tổ chức sử dụng nguồn nhân lực công 
nghệ thông tin để phát triển phần mềm. Trong đó, động lực bên trong là việc họ đang cần một giải pháp, phần mềm để giải quyết vấn đề, hay có thể là một niềm đam mê công 
nghệ, sự thích thú trong việc lập trình và muốn cho cộng đồng sử dụng thành quả của mình. Động lực bên ngoài lại cho chúng ta thấy góc độ kinh tế của việc phát triển phần 
mềm mã nguồn mở, trong đó bao hàm cả chiến lược đào tạo con người của các tổ chức và phương pháp họ chọn lựa là cho các lập trình viên làm các dự án phần mềm nguồn mở để phát triển kỹ năng, trình độ và sự nhạy bén trong làm việc nhóm, cộng đồng. Ngoài ra, các động lực về tâm lý xã hội và cái gọi là văn hóa “Quà mã nguồn mở” cũng là một 
trong những động lực thúc đẩy các lập trình viên tham gia cộng đồng mã nguồn mở để họ thấy được “mình là một phần của cộng đồng và sống một cuộc sống vì cộng đồng”. 
Hình 3 cho thấy kết quả khảo sát của Tập đoàn Tư vấn Boston về mục đích tham gia cộng đồng mã nguồn mở của 648 lập trình viên đã đóng góp mã nguồn, phát triển dự án 
phần mềm và đưa lên trên trang Web SourceForge.
tham gia phát triển phần mềm OSS  từ 648 người được điều tra.
Các mục đích và % số người tham gia phát triển phần mềm OSS từ 648 người được điều tra
Và một điều rất thú vị mà trong quá trình nghiên cứu tác giả thấy được đó là thành phần tham gia phát triển phần mềm mã nguồn mở rất đa dạng, từ những người đã được 
đào tạo cơ bản đến các đối tượng là học sinh cũng đóng góp vào thế giới phần mềm mã nguồn mở. Và động lực của các đối lượng này cũng rất đa dạng, một phần là để phát 
triển trí tuệ, kỹ năng nhưng phần tiềm ẩn lại là những giá trị bên ngoài, “phần thưởng bên ngoài” mà họ sẽ nhận được trong tương lai.