Ngày open source: đọc source và đóng góp

Thực hành nghề nghiệp mã nguồn mở: chọn repo, đọc kiến trúc, sửa một issue thật và gửi pull request đúng chuẩn.
KhóThuật toán ~90 phút

Giới thiệu

Bạn đóng góp một issue thật cho repo mở. Sửa ít nhưng đúng chuẩn.

Kiến thức cần nhớ

Chọn repo và issue

  • Chọn repo có nhãn người mới và còn hoạt động.
  • Issue vừa sức sửa trong 30 phút.
  • Ví dụ đời thường: giống chọn việc vừa tay trong ngày đầu.
  • Bộ kiểm thử của repo phải chạy được.

Đọc kiến trúc

  • Vẽ sơ đồ module bằng lời của mình.
  • Xác định issue nằm ở hàm nào.
  • Ví dụ đời thường: giống vẽ sơ đồ nhà trước khi sửa điện.
  • Đọc quy ước code trước khi viết một dòng.

Sửa và gửi pull request

  • Tái hiện lỗi trước, sửa tối thiểu sau.
  • Một việc một commit, thông điệp rõ ràng.
  • Ví dụ đời thường: giống vá đúng lỗ thủng, không sơn lại nhà.
  • Trao đổi với maintainer lịch sự và kiên nhẫn.
# tái hiện lỗi trước khi sửa
def cong(a, b):
    return a + b  # hàm nghi lỗi ở đây
print(cong(2, 3))  # chạy thử xem sai không

Ví dụ

  • Repo thỏa 4 tiêu chí chọn -> chốt được.
  • Sơ đồ module chỉ đúng tới hàm chứa issue -> đạt.

💻 Bài tập

Nộp vào day-177/ gồm ghi chép và link pull request.

Bài 1: Chọn repo và issue

Tiêu chí chọn repo:

  1. Có nhãn good first issue hoặc help wanted.
  2. Có commit trong 30 ngày gần nhất.
  3. Có CONTRIBUTING.md hoặc hướng dẫn build.
  4. Bộ test chạy được trên máy bạn.

Ưu tiên repo dùng kiến thức đã học (thư viện cấu trúc dữ liệu, công cụ đồ thị, thư viện ML nhỏ). Ghi vào choice.md: repo, issue, 4 tiêu chí thỏa thế nào.

Bài 2: Đọc hiểu codebase

  1. Build và chạy toàn bộ test. Ghi thời gian và chỗ vấp.
  2. architecture.md: sơ đồ module bằng lời của bạn, chỉ ra đường đi từ điểm vào (CLI, API) tới hàm chứa issue.
  3. Đọc quy ước code: format, đặt tên, cách viết test, cách viết commit.

Bài 3: Sửa và gửi PR (nâng cao)

  1. Viết test tái hiện lỗi trước (test phải fail).
  2. Sửa tối thiểu cho test pass. Chạy toàn bộ test và linter của repo.
  3. Commit theo quy ước repo. Mô tả PR gồm: issue liên quan, nguyên nhân, cách sửa, cách kiểm tra.
  4. Trả lời góp ý của maintainer lịch sự. Ghi lại trao đổi vào pr-log.md.

Không tìm được issue phù hợp trong 60 phút thì làm PR sửa tài liệu (lỗi chính tả, ví dụ sai), vẫn đủ các bước.

✅ Tiêu chí hoàn thành

  • choice.md giải thích 4 tiêu chí.
  • architecture.md chỉ tới đúng hàm chứa issue.
  • PR có test tái hiện lỗi và mô tả đủ 4 mục.
  • pr-log.md ghi lại trao đổi.

❓ Câu hỏi ôn tập

  1. Chọn repo theo mấy tiêu chí?
  2. Issue vừa sức sửa trong bao lâu?
  3. Viết dòng nào trước khi sửa?
  4. Pull request cần có gì?

🌕 Bạn đã hoàn thành ngày 177. Làm hết bài tập phía trên rồi sang ngày tiếp theo.

Bớt paste mù, hiểu sâu từng dòng mình viết.

180 Days Challenge. 180 ngày cai nghiện vibe code.