0
0
Lập trình
Admin Team
Admin Teamtechmely

Kinh nghiệm đóng góp mã nguồn mở trong dự án OSD 600

Đăng vào 4 tháng trước

• 4 phút đọc

Giới thiệu

Trong bài viết này, tôi sẽ chia sẻ kinh nghiệm của mình khi đóng góp một thay đổi mã cho một dự án mã nguồn mở lần đầu tiên. Tôi chưa bao giờ tham gia vào một dự án mã nguồn mở nào trước đây và việc thực hiện lần đầu tiên này thực sự rất đáng sợ. Tuy nhiên, đây là một cơ hội tuyệt vời để cải thiện kỹ năng phát triển hợp tác, kỹ năng lập trình và quan trọng hơn là hiểu rõ hơn về mã nguồn mà tôi chưa từng làm việc trước đó.

Dự án và Tính năng Được Đề Xuất

Tôi đã đóng góp một tính năng mới cho kho lưu trữ repository-context-packager, một công cụ dòng lệnh được thiết kế để đóng gói nội dung kho lưu trữ cho việc sử dụng với các mô hình ngôn ngữ lớn. Tính năng tôi đề xuất là cờ --recent hoặc -f, cho phép CLI chỉ bao gồm các tệp đã được sửa đổi trong 7 ngày qua. Điều này rất hữu ích khi làm việc với các kho lưu trữ lớn, giúp tập trung vào các tệp liên quan và mới thay đổi thay vì đóng gói toàn bộ kho lưu trữ.

Quy trình Thực hiện Tính năng

Bước 1: Nghiên cứu và Thảo luận

Ban đầu, tôi gặp rất nhiều khó khăn với kho lưu trữ này vì hướng dẫn trong tệp README.md không rõ ràng và các lệnh để chạy mã không hoạt động. Chúng tôi đã lên lịch một cuộc họp trực tuyến cùng nhau, và tôi đã chỉ ra các vấn đề cho chủ sở hữu kho lưu trữ cũng như các lệnh mà tôi đã sử dụng để chạy mã từ terminal của mình.

Bước 2: Thực hiện Tính năng

Tôi đã làm việc trên issue-1. Các bước chính bao gồm:

  • Kiểm tra dấu thời gian của tệp: Tôi đã phải nghiên cứu vì tôi không quen thuộc với Python. Tôi đã triển khai hàm os.path.getmtime() của Python để lấy thời gian sửa đổi cuối cùng của mỗi tệp và so sánh nó với ngày hiện tại để xác định xem nó có nằm trong 7 ngày qua hay không.
  • Tích hợp các tùy chọn CLI hiện có, đảm bảo rằng cờ --recent hoạt động tốt cùng với các tùy chọn hiện có như --include.
  • Kiểm tra tính năng, bằng cách chạy nó riêng lẻ (--recent), hoặc kết hợp với các tính năng khác (--recent --include "\*.py").

Bước 3: Tạo Pull Request

Sau khi hoàn thành các bước trên, tôi đã commit các thay đổi trên issue-1, đẩy nhánh issue-1 lên GitHub và tạo một pull request.

Học Hỏi Từ Quá Trình Đóng Góp

Như đã đề cập trước đó, rất khó để hiểu mã này và đảm bảo rằng tính năng --recent hoạt động chính xác cùng với các tùy chọn CLI khác mà không phá vỡ các chức năng hiện có. Tôi cũng đã học cách viết một pull request rõ ràng, giúp người khác dễ dàng hiểu mục đích và cách triển khai tính năng của tôi.

Phản Hồi Từ Cộng Đồng

Đây cũng là một trải nghiệm tốt khi nhận được phản hồi từ kho công cụ CLI của tôi, vì thành viên đóng góp đã nhận xét rằng tệp README.md của tôi rõ ràng và dễ hiểu. Anh ấy có thể theo dõi các bước và chạy mã một cách mượt mà, và có thể triển khai tính năng mới của mình mà không cần thay đổi nhiều. Đó chỉ là việc thêm tính năng mới và cập nhật tệp README.md để phản ánh điều đó.

Những Điều Học Được Từ Đánh Giá Mã

Tôi đã học được về đánh giá mã, vì nó cho phép bạn có cái nhìn về công việc của mình từ một người khác, và từ đó bạn có thể dễ dàng biết mình đã làm đúng hay không, nếu mọi thứ hoạt động như mong đợi hoặc nếu bạn đã bỏ lỡ một số điều.

Kết Luận

Việc đóng góp vào một dự án mã nguồn mở lần đầu tiên có thể khá khó khăn, nhưng với sự hỗ trợ và hướng dẫn đúng đắn, bạn có thể vượt qua những thử thách này. Tôi khuyến khích mọi người nên tham gia vào các dự án mã nguồn mở, không chỉ để cải thiện kỹ năng lập trình mà còn để học hỏi từ cộng đồng phát triển. Hãy bắt đầu tham gia ngay hôm nay!

Câu hỏi thường gặp

Tôi cần chuẩn bị gì trước khi đóng góp vào một dự án mã nguồn mở?

Bạn cần tìm hiểu về dự án, đọc tài liệu và hiểu rõ cách thức hoạt động của mã nguồn.

Làm thế nào để tôi biết tính năng của mình có hữu ích không?

Bạn có thể tham khảo ý kiến từ cộng đồng hoặc chủ dự án trước khi thực hiện.

Tôi có thể tìm các dự án mã nguồn mở ở đâu?

Có nhiều nền tảng như GitHub, GitLab nơi bạn có thể tìm kiếm các dự án phù hợp với sở thích của mình.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào