Khi bạn duy trì một repository phần mềm mã nguồn mở, bạn đang đảm nhận một vai trò lãnh đạo. Cho dù bạn là người sáng lập ra dự án và đã phát hành nó cho công chúng sử dụng và đóng góp, hay bạn đang làm việc trong một nhóm và chịu trách nhiệm duy trì một khía cạnh cụ thể của dự án, bạn đang cung cấp một dịch vụ quan trọng cho cộng đồng các nhà phát triển rộng lớn.
Mặc dù đóng góp cho các dự án mã nguồn mở thông qua các pull request từ cộng đồng phát triển là rất cần thiết nhằm đảm bảo phần mềm được tối ưu cho người dùng cuối, nhưng các maintainer (người duy trì repository) thực sự có tác động lớn trong việc định hình toàn bộ dự án. Họ tham gia sâu vào các dự án mã nguồn mở mà họ quản lý, từ việc tổ chức và phát triển hàng ngày, đến việc giao tiếp với công chúng và cung cấp phản hồi nhanh chóng, hiệu quả cho những người đóng góp.
DataOnline sẽ mang đến cho bạn một số mẹo hữu ích để duy trì các repository công khai của phần mềm mã nguồn mở. Trở thành người lãnh đạo của một dự án mã nguồn mở đi kèm với cả những trách nhiệm về mặt kỹ thuật lẫn phi kỹ thuật nhằm giúp xây dựng cộng đồng và người dùng cho dự án của bạn. Đảm nhận vai trò của một maintainer là cơ hội để học hỏi từ người khác, tích lũy kinh nghiệm về quản lý dự án, và chứng kiến dự án của bạn phát triển, thay đổi khi người dùng dần trở thành những người đóng góp tích cực.
Viết tài liệu hữu ích
Tài liệu đầy đủ, được tổ chức tốt và phục vụ đúng đối tượng người dùng của dự án sẽ giúp mở rộng cơ sở người dùng của bạn. Theo thời gian, cơ sở người dùng của bạn sẽ dần trở thành những người đóng góp cho dự án mã nguồn mở của bạn.
Vì bạn đã và đang suy nghĩ qua các đoạn mã bạn tạo ra, và thậm chí có thể đang ghi chú lại ý tưởng, việc tích hợp tài liệu vào quy trình phát triển trong khi tất cả các ý tưởng vẫn còn mới mẻ là rất hữu ích. Bạn thậm chí có thể cân nhắc viết tài liệu trước khi viết mã, theo triết lý “phát triển theo hướng dẫn tài liệu” – ghi chép các tính năng trước và sau đó phát triển chúng dựa trên nội dung đã viết.
Cùng với mã nguồn của bạn, có một số file tài liệu bạn nên giữ trong thư mục gốc của dự án:
-
README.md: cung cấp tóm tắt về dự án và mục tiêu của bạn.
-
CONTRIBUTING.md: chứa hướng dẫn đóng góp.
-
License: giấy phép phần mềm của bạn, điều này có thể khuyến khích thêm nhiều đóng góp. (Bạn có thể tìm hiểu thêm về việc lựa chọn giấy phép mã nguồn mở tại choosealicense.com.)
Tài liệu có thể xuất hiện dưới nhiều hình thức và hướng đến các đối tượng khác nhau. Tùy theo phạm vi công việc, bạn có thể thực hiện một hoặc nhiều hình thức sau:
-
Hướng dẫn tổng quan để giới thiệu dự án cho người dùng.
-
Các bài hướng dẫn (tutorial) để hướng dẫn từng trường hợp sử dụng.
-
Mục Hỏi đáp (FAQs) để trả lời các câu hỏi thường gặp của người dùng.
-
Hướng dẫn khắc phục sự cố giúp người dùng giải quyết vấn đề.
-
Tài liệu tham khảo API để người dùng nhanh chóng tra cứu thông tin API.
-
Ghi chú phát hành (release notes) kèm theo danh sách các lỗi đã biết để người dùng nắm bắt được những gì có thể xảy ra trong mỗi phiên bản.
-
Các tính năng dự kiến để theo dõi và giải thích những gì sắp được bổ sung trong tương lai.
-
Video hướng dẫn cung cấp phương pháp đa phương tiện cho phần mềm của bạn.
Dự án của bạn có thể phù hợp với một loại tài liệu nhất định, nhưng cung cấp nhiều cách tiếp cận sẽ giúp người dùng hiểu rõ hơn về cách tương tác với sản phẩm của bạn.
Khi viết tài liệu hoặc ghi âm giọng nói cho video, điều quan trọng là phải rõ ràng nhất có thể. Bạn nên không đưa ra bất kỳ giả định nào về khả năng kỹ thuật của độc giả. Ngoài ra, hãy xây dựng tài liệu theo chiều từ trên xuống – tức là, giải thích tổng quan về chức năng phần mềm (ví dụ: tự động hóa các tác vụ máy chủ, xây dựng website, tạo hoạt hình sprite cho phát triển game) trước khi đi sâu vào chi tiết.
Mặc dù tiếng Anh đã trở thành ngôn ngữ chung trong lĩnh vực công nghệ, bạn vẫn nên cân nhắc đối tượng người dùng dự kiến và cách tiếp cận họ. Tiếng Anh có thể là lựa chọn tốt nhất để tiếp cận một cơ sở người dùng rộng lớn, nhưng hãy nhớ rằng nhiều người tiếp cận tài liệu của bạn không phải là người nói tiếng Anh bản ngữ, vì vậy hãy sử dụng ngôn ngữ dễ hiểu, tránh gây nhầm lẫn cho người đọc hay người xem.
Hãy viết tài liệu như thể bạn đang giải thích cho một cộng tác viên cần nhanh chóng nắm bắt thông tin về dự án hiện tại; sau cùng, bạn muốn khuyến khích những người có khả năng đóng góp thực hiện các pull request cho dự án.
Tổ chức các Issue
Issue thường được sử dụng để theo dõi hoặc báo cáo lỗi, hoặc đề xuất thêm các tính năng mới cho cơ sở mã nguồn. Các dịch vụ lưu trữ repository mã nguồn mở như GitHub, GitLab và Bitbucket sẽ cung cấp giao diện để bạn và những người khác theo dõi các issue trong repository của mình. Khi phát hành mã nguồn mở cho công chúng, bạn nên kỳ vọng sẽ có các issue được mở bởi cộng đồng người dùng.
Việc tổ chức và ưu tiên các issue sẽ cho bạn một lộ trình rõ ràng cho các công việc sắp tới của dự án.
Bởi vì bất kỳ người dùng nào cũng có thể tạo issue, không phải tất cả các issue đều là báo cáo lỗi hoặc yêu cầu tính năng; bạn có thể nhận được các câu hỏi thông qua công cụ theo dõi issue, hoặc nhận các yêu cầu cải tiến giao diện người dùng, ví dụ. Tốt nhất là hãy tổ chức các issue càng chặt chẽ càng tốt và luôn giao tiếp với người dùng tạo issue đó.
Các issue nên biểu thị những nhiệm vụ cụ thể cần được thực hiện trên mã nguồn, và bạn cần ưu tiên chúng một cách phù hợp. Bạn và nhóm của mình sẽ có cái nhìn về lượng thời gian và công sức có thể dành cho các issue đã được tạo, và cùng nhau đưa ra quyết định cũng như lập kế hoạch hành động cụ thể. Khi bạn biết rằng mình sẽ không thể giải quyết một issue nào đó trong thời gian ngắn, bạn vẫn có thể bình luận để cho người dùng biết rằng bạn đã nhận được issue và sẽ xử lý nó khi có thể, đồng thời nếu có thể cung cấp thời gian dự kiến để xem lại issue đó.
Đối với những issue là yêu cầu tính năng hoặc cải tiến, bạn có thể hỏi người tạo issue xem họ có thể tự đóng góp mã nguồn không. Bạn có thể hướng họ đến file CONTRIBUTORS.md và các tài liệu liên quan khác.
Vì các câu hỏi thường không biểu thị nhiệm vụ cụ thể, việc bình luận trên issue để hướng dẫn người dùng đến các tài liệu liên quan có thể là một lựa chọn tốt nhằm giữ cho giao tiếp luôn chuyên nghiệp và thân thiện. Nếu tài liệu cho câu hỏi đó chưa có, đây có thể là thời điểm tốt để bổ sung tài liệu liên quan, đồng thời gửi lời cảm ơn đến người dùng vì đã chỉ ra thiếu sót này. Nếu bạn nhận được quá nhiều câu hỏi thông qua issue, bạn có thể cân nhắc tạo một phần Hỏi đáp (FAQ) trong tài liệu, hoặc xây dựng một wiki hay diễn đàn để mọi người cùng tham gia trả lời.
Mỗi khi người dùng báo cáo một issue, hãy cố gắng thật tử tế và nhã nhặn. Các issue là dấu hiệu cho thấy người dùng yêu thích phần mềm của bạn và mong muốn cải thiện nó!
Việc tổ chức các issue một cách hiệu quả sẽ giúp dự án của bạn luôn cập nhật và phù hợp với cộng đồng người dùng. Hãy xóa bỏ những issue nằm ngoài phạm vi dự án hoặc không còn giá trị, và ưu tiên các issue còn lại để đảm bảo bạn có thể tiến hành công việc một cách liên tục.
Tự động hóa các tác vụ
Bạn có thể cải thiện hiệu quả và chất lượng của dự án bằng cách tự động hóa các tác vụ bảo trì và kiểm thử. Việc tự động hóa bảo trì và kiểm thử giúp kiểm tra liên tục tính chính xác của mã nguồn và tạo ra một quy trình chính thức để phê duyệt các đóng góp từ cộng đồng. Điều này giúp bạn tiết kiệm thời gian để tập trung vào các khía cạnh quan trọng nhất của dự án.
Tin vui là có rất nhiều công cụ đã được phát triển và có thể đáp ứng nhu cầu của dự án bạn.
Một số gợi ý:
-
Thiết lập kiểm thử tự động cho các đóng góp mới bằng cách yêu cầu kiểm tra trạng thái. Hãy đảm bảo bao gồm thông tin về cách thức hoạt động của kiểm thử trong file
CONTRIBUTING.md
. -
Tìm hiểu và sử dụng các công cụ đã được phát triển để tự động hóa các tác vụ bảo trì. Có thể bao gồm tự động hóa phát hành, review code, hoặc tự động đóng các issue nếu tác giả không phản hồi khi được yêu cầu cung cấp thông tin.
Hãy nhớ rằng, “ít hơn là tốt hơn”. Hãy chủ động chọn lọc các quy trình và tác vụ cần tự động hóa theo cách tối ưu hóa hiệu quả, năng suất và chất lượng cho dự án, cho bản thân và cho những người đóng góp.
Tạo sự hài lòng khi đóng góp
Càng chào đón và tôn vinh những người đóng góp cho dự án, bạn càng có nhiều khả năng nhận được thêm đóng góp từ cộng đồng. Để giúp người khác bắt đầu, bạn nên bao gồm file CONTRIBUTING.md trong thư mục gốc của repository và tạo một liên kết đến file đó trong README.md.
Một file hướng dẫn đóng góp tốt sẽ mô tả cách bắt đầu làm việc trên dự án với tư cách là nhà phát triển. Bạn có thể đưa ra hướng dẫn từng bước hoặc cung cấp danh sách kiểm tra (checklist) cho các nhà phát triển theo dõi, giải thích cách để mã nguồn của họ được hợp nhất vào dự án thông qua pull request.
Ngoài tài liệu hướng dẫn cách đóng góp cho dự án, đừng quên giữ cho mã nguồn của bạn nhất quán và dễ đọc. Mã nguồn dễ hiểu nhờ các bình luận và cách viết rõ ràng, nhất quán sẽ giúp những người đóng góp cảm thấy tự tin hơn khi tham gia vào dự án.
Cuối cùng, hãy duy trì một danh sách các người đóng góp hoặc tác giả. Bạn có thể mời gọi người đóng góp tự thêm tên của họ vào danh sách, bất kể đóng góp của họ là gì (thậm chí việc sửa lỗi chính tả cũng có giá trị và có thể dẫn đến nhiều đóng góp hơn trong tương lai). Điều này không chỉ công nhận công sức của họ một cách công khai mà còn giúp những người khác biết được cách đối xử và tôn trọng các đóng góp.
Xây dựng cộng đồng
Bằng cách trao quyền cho người dùng thông qua tài liệu, phản hồi kịp thời với các issue và khuyến khích họ tham gia, bạn đã đi đúng hướng để xây dựng cộng đồng xung quanh dự án mã nguồn mở của mình. Người dùng mà bạn giữ hài lòng và đối xử như những cộng tác viên sẽ tự động quảng bá phần mềm của bạn.
Ngoài ra, bạn có thể thúc đẩy dự án qua nhiều kênh khác nhau:
-
Viết blog
-
Phát hành video tổng quan hoặc hướng dẫn
-
Duy trì danh sách email (mailing list)
-
Hoạt động trên các kênh truyền thông xã hội
-
Hợp tác với các dự án tương tự hoặc liên quan và cùng quảng bá
Hãy điều chỉnh cách thức quảng bá phù hợp với phạm vi dự án và số lượng thành viên cũng như người đóng góp tích cực của bạn.
Khi cộng đồng của bạn phát triển, bạn có thể cung cấp thêm không gian để các nhà đóng góp, người dùng và maintainer tương tác, ví dụ như:
-
Wiki cho tài liệu được duy trì ở cấp cộng đồng.
-
Diễn đàn thảo luận về các tính năng có thể bổ sung và giải đáp thắc mắc.
-
Listserv cho tương tác qua email.
Hãy cân nhắc đối tượng người dùng cốt lõi và phạm vi của dự án – bao gồm số lượng người duy trì dự án và nguồn lực sẵn có – trước khi triển khai các không gian này, và hãy thu thập ý kiến phản hồi từ cộng đồng để biết phương án nào hiệu quả nhất.
Trên hết, điều quan trọng là hãy tử tế và thể hiện sự quan tâm trong mọi tương tác với cộng đồng. Là một maintainer hiền hậu, dù đôi khi điều đó không dễ dàng, nhưng sẽ mang lại lợi ích lâu dài cho dự án của bạn.