Bạn không thích nó ư? Hãy tự lập trình cho nó!

Bài viết được dịch từ blog Coding Horror

Bạn đã từng bao giờ quan tâm đến việc trả tiền hoặc là tài trợ cho việc:

  • sửa một lỗi nào đó
  • tạo ra một tính năng mới
  • tạo ra một plugin mới
  • chỉnh sửa một chút chức năng đang tồn tại

… cho phần mềm mà bạn đang sử dụng?

Nếu muốn bổ sung một tính năng nào đó cho một phần mềm nguồn mở thì tôi có nên tải mã nguồn của nó về làm?Nếu muốn bổ sung một tính năng nào đó cho một phần mềm nguồn mở thì tôi có nên tải mã nguồn của nó về làm?


Ý tôi không phải là nói về việc đợi một phiên bản mới của phần mềm đó, cái mà sẽ chứa một bó các đặc trưng mới mà bạn có thể cũng chẳng quan tâm đến, đi cùng với rất nhiều lỗi mới. Tôi đang nói về việc tạo ra một yêu cầu rất xác định cho phần mềm đang tồn tại thông qua hình thức tài trợ về mặt tài chính.

Chắc chắn là, nếu phần mềm mà bạn đang sử dụng tình cờ lại là mã nguồn mở, thì về mặt lý thuyết bạn có thể tải mã nguồn của nó về, rồi xắn tay áo lên và tự tay lập trình ra nó.

Nếu bạn mong muốn có một chức năng đặc biệt nào đó được thực thi, tỉ lệ thành công của bạn sẽ tăng lên rất nhiều nếu thay vì việc bạn đi yêu cầu người ta làm, thì bạn hãy tải về mã nguồn mới nhất của nó về, và tự lập trình chức năng đó (thậm chí nếu không được hoàn thiện hoặc có nhiều lỗi đi nữa), và bạn đưa nó cho những nhà phát triển khác review lại. Những tổ chức kỹ thuật khác rất thích thú trong việc giúp bạn hoàn thành một tính năng mở rộng có giá trị mà bạn rõ ràng đã bỏ thời gian và công sức vào đó hơn là họ quan tâm làm cái mà bạn muốn từ con số 0 chỉ bởi vì bạn muốn nó.

Dĩ nhiên, không phải tất cả người dùng đều có khả năng kỹ thuật hoặc kinh nghiệm lập trình để biến điều đó trở thành hiện thực. Bạn có 3 sự lựa chọn: a) tìm một người bạn có khả năng lập trình và khiến anh ta cảm thấy hào hứng về ý tưởng của bạn và anh ta sẽ làm theo như những gì được nói ở phần trên, b) sống mà không cần tính năng đó, cảm thấy hài lòng với phần mềm mà bạn đã được cung cấp miễn phí hoặc c) tìm một gói phần mềm khác mà có thể làm điều bạn muốn.

Nhưng thế còn đối với những người dùng bình thường thì sao? Chết tiệt, và cả những lập trình viên trung bình trong thực tế nữa? Thậm chí nếu bạn là một lập trình viên hào hiệp và hăng hái, người mà có thể học một nền tảng lập trình hoàn toàn xa lạ chỉ để tạo ra một đặc trưng yêu thích hoặc chỉ để sửa một lỗi nhỏ — thành thật mà nói liệu bạn có thời gian để làm công việc kiểu như vậy không?

Có lẽ, khi người ta nói như thế này:

Mã nguồn phần mềm có sẵn miễn phí đấy. Nếu bạn cảm thấy muốn làm bugfix/tweak/feature/plugin, thì tại sao bạn không tự lập trình lấy đi?

Thì thực ra họ đang nói điều này:

Cái bà mẹ mày. (ND: câu gốc là “F**k you.” nhưng mình dịch lái đi cho nó lịch sự.)

Điều đó dường như một chút thô lỗ đối với tôi. Chắc chắn là có một cái gì đó ở giữa hai mức cực đoan là “từ bỏ” và “tự lập trình ra nó.”

Tại sao lại không có một dịch vụ tập trung và gây quỹ để tài trợ cho việc lập trình ra các chức năng đặc biệt hoặc sửa lỗi trong các phần mềm mã nguồn mở nhỉ?

Có rất nhiều người dùng cuối (end-user) sẵn sàng trả tiền cho việc cải tiến phần mềm miễn phí và viết những chương trình mới. Cũng có nhiều lập trình viên tài năng muốn được trả công để làm việc trên các phần mềm miễn phí. Cho phép người dùng tập hợp nhau lại để trả tiền cho các nhà phát triển thực thi các chức năng trong phần mềm. Một hội đồng gồm những chuyên gia về phần mềm miễn phí nổi tiếng sẽ xét duyệt những ý tưởng mới trước khi một giao kèo được tạo ra, và họ kiểm tra công việc của các lập trình viên xem có làm đúng yêu cầu hay không.

Tôi nhận ra rằng việc sử dụng những khích lệ về mặt tiền bạc trên các dự án mã nguồn mở có thể mang lại một số kết quả không dự tính trước được. Nhưng một dịch vụ kiểu này cho các dự án đang tồn tại — dựa trên tiền bạc, vì vậy bạn biết những người quan tâm là nghiêm túc — dường như là một lý do chính đáng. Nó thậm chí có thể thu hút sự quan tâm của những lập trình viên khác nếu số lượng tiền đóng góp đủ lớn.

Đối với tôi, ít ra thì hình thức tài trợ này giống như một cách để cho những người không có khả năng hoặc không sẵn lòng viết code có thể tác động đến hướng đi của một dự án. Ví dụ, tôi đã tài trợ cho việc fix bug trong một thư viện mã nguồn mở .NET mà chúng tôi sử dụng cho trang web Stack Overflow của mình. Có những lỗi mà họ cho là có độ ưu tiên thấp, nhưng lại là một vấn đề nghiêm trọng cho trang web của chúng tôi. Tôi đã rất hạnh phúc để trả tiền cho họ sửa những lỗi đó, và nó chắc chắn mang lại hiệu quả cao hơn việc chúng tôi phải cắt bớt thời gian phát triển sản phẩm của mình để nhảy vào tham gia việc sửa lỗi của thư viện đó.

Thực ra, tôi cũng hơi băn khoăn về hình thức tài trợ này vì nó không phải là cách phát triển tự nhiên cho lắm. Liệu nó có bền vững, hoặc nó có thích hợp với những kiểu có động cơ thúc đẩy bên trong mà đã dẫn dắt hầu hết sự phát triển của mã nguồn mở từ xưa đến nay?

Các bài viết liên quan:

Về tác giả bài viết:

Jeff_atwood_coding_horrorJeff Atwood là một chuyên gia công nghệ tại Mỹ, hiện đang sinh sống và làm việc tại Berkeley, CA. Anh là một kỹ sư phần mềm chuyên về công nghệ Microsoft .NET, và là một blogger nổi tiếng trong cộng đồng công nghệ với blog Coding Horror, anh là người sáng lập và kiêm Giám đốc điều hành (CEO) của trang web hỏi đáp uy tín Stack Overflow và cũng là đồng sáng lập của Stack ExchangeDiscourse.

Advertisements

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s