- esbuild và Redis là những ví dụ về các codebase có tài liệu hóa xuất sắc.
- Thông qua README, changelog, tài liệu kiến trúc và chú thích trong mã, ngay cả người dùng mới cũng có thể hiểu được cấu trúc của codebase, cách nó hoạt động và lý do đằng sau.
- Đây là những nghiên cứu điển hình tốt cho các lập trình viên muốn cải thiện việc tài liệu hóa mã và kiến trúc phần mềm.
Vì sao tài liệu tốt lại quan trọng
- Khi viết phần mềm, tài liệu tốt là điều thiết yếu, đặc biệt khi người khác xem hoặc đóng góp vào codebase, hoặc khi chính bạn cần tham chiếu lại sau này.
- Người dùng phần mềm thường gặp khó khăn vì tài liệu bị thiếu sót.
- Nếu bạn đóng góp vào một codebase, chất lượng tài liệu càng tốt thì bạn càng có thể đóng góp nhanh hơn.
- Chất lượng tài liệu ảnh hưởng trực tiếp hoặc gián tiếp đến trải nghiệm của tác giả, người đóng góp và người dùng.
- Lợi ích của tài liệu tốt rất đa dạng: tiết kiệm thời gian, tăng đóng góp từ bên ngoài cho các dự án mã nguồn mở, lưu lại các quyết định trong quá khứ, giúp nhiều người dùng tiếp cận hơn, cấu trúc hóa tư duy và phát hiện vấn đề.
Tài liệu của esbuild
- esbuild là một JavaScript bundler do Evan Wallace tạo ra.
- README của esbuild tập trung vào người dùng cuối của công cụ.
- Thông qua các liên kết đến những phần chính trong tài liệu và mục "Tại sao?", README giải thích ngắn gọn vì sao nên chọn esbuild thay vì các bundler khác.
- Tài liệu kiến trúc của esbuild gồm các tệp
architecture.md và development.md trong thư mục docs.
- Tài liệu kiến trúc giải thích các nguyên tắc thiết kế và không chỉ có văn bản mà còn bao gồm đồ họa minh họa các khái niệm.
- Changelog của esbuild rất chi tiết, bao gồm tóm tắt, phần giải thích mở rộng và mã ví dụ trước/sau thay đổi.
Tài liệu của Redis
- Redis là một cơ sở dữ liệu in-memory.
- README của Redis chia sẻ nhiều đặc điểm tốt tương tự README của esbuild, đồng thời tập trung vào cả người đóng góp lẫn người dùng cuối.
- Phần nói về nội bộ của Redis bao gồm bố cục của mã nguồn và phần giải thích về các tệp chính.
- Các chú thích trong mã nguồn Redis cung cấp phần giải thích kéo dài nhiều đoạn cho chỉ một dòng mã.
Kết luận
- Nhiều dự án mã nguồn mở có tài liệu rất xuất sắc.
- esbuild và Redis đặc biệt gây ấn tượng nhờ chất lượng tài liệu nổi bật.
- Việc viết tài liệu có thể tạo ra áp lực thời gian trong ngắn hạn, nhưng về lâu dài lại giúp tiết kiệm thời gian.
- Với những dự án có nhiều người sử dụng hoặc đóng góp, việc không làm tài liệu là điều cần được cân nhắc lại.
Ý kiến của GN⁺
- Các ví dụ tài liệu của esbuild và Redis nhấn mạnh tầm quan trọng của tài liệu trong việc giúp lập trình viên dễ hiểu và bảo trì codebase hơn.
- Tài liệu là yếu tố cốt lõi giúp nâng cao tính bền vững của dự án và thúc đẩy sự tham gia của cộng đồng.
- Với esbuild, ngoài vai trò là một JavaScript bundler tốc độ cao, tài liệu xuất sắc dường như cũng góp phần vào sự phát triển của dự án.
- Redis tạo ảnh hưởng tích cực đến cộng đồng lập trình viên nhờ tài liệu giúp họ dễ hiểu một hệ thống cơ sở dữ liệu in-memory phức tạp.
- Những ví dụ này cũng có thể giúp lan tỏa tầm quan trọng của tài liệu đến các dự án mã nguồn mở khác, và đặc biệt hữu ích trong việc giúp các kỹ sư phần mềm mới vào nghề hiểu cách tài liệu hóa dự án của mình.
2 bình luận
esbuild thì khỏi nói đến file README.md, nhưng file architecture.md được giới thiệu trong bài cũng đẹp một cách đáng kinh ngạc!
Ý kiến Hacker News
Antirez, người sáng lập Redis, đã viết một bài trên blog của mình giải thích chi tiết suy nghĩ về chú thích trong mã. Ông xác định 9 loại chú thích được sử dụng trong Redis.
Một bài viết được viết tốt, có các ví dụ cụ thể và ảnh chụp màn hình về cách tài liệu dự án có thể trở nên xuất sắc đối với người dùng/nhà phát triển/người đóng góp.
Điều này cho thấy những người quản lý dự án quan tâm đến chất lượng của kho mã.
Nó gợi nhớ đến loạt "The Architecture of Open Source Applications". Có nhiều góc nhìn thú vị.
GitLab có tiếng là có tài liệu rất tốt, nhưng người bình luận chưa từng cần dùng trực tiếp nhiều. Họ tự hỏi liệu tài liệu kiến trúc của GitLab có tốt không.
Dự án Postgres cũng rất chú ý đến tài liệu, các tệp readme và chú thích trong mã.
Người bình luận rất ấn tượng với tài liệu kiến trúc của dự án esbuild. Họ ước những codebase mình từng làm việc trước đây cũng có loại tài liệu như vậy.
Người bình luận rất thích changelog của các dự án mã nguồn mở. Chúng chuyên nghiệp và giàu thông tin hơn nhiều so với các thực thể khác theo đuổi lợi nhuận. Có lời phê bình rằng changelog ứng dụng của ngân hàng ING nên tập trung cung cấp thông tin thay vì cố gắng hài hước.
"Thiếu hụt lớn nhất trong cộng đồng phần mềm tự do ngày nay không phải là phần mềm, mà là sự thiếu vắng tài liệu tự do tốt có thể đi kèm với phần mềm tự do."
Có nhắc rằng Redis không còn là mã nguồn mở nữa. Redis là phần mềm "source-available", theo giấy phép Redis Source Available License v2 (RSALv2) và Server Side Public License v1 (SSPLv1).