- esbuild และ Redis เป็นตัวอย่างของโค้ดเบสที่มีการจัดทำเอกสารได้ยอดเยี่ยม
- ผ่าน README, changelog, เอกสารสถาปัตยกรรม และคอมเมนต์ในโค้ด แม้แต่ผู้ใช้ใหม่ก็สามารถเข้าใจโครงสร้างของโค้ดเบส วิธีการทำงาน และเหตุผลเบื้องหลังได้
- นับเป็นกรณีศึกษาที่ดีสำหรับนักพัฒนาที่ต้องการปรับปรุงการจัดทำเอกสารของโค้ดและสถาปัตยกรรมซอฟต์แวร์
ทำไมเอกสารที่ดีจึงสำคัญ
- เมื่อต้องพัฒนาซอฟต์แวร์ เอกสารที่ดีเป็นสิ่งจำเป็นอย่างยิ่ง โดยเฉพาะเมื่อผู้อื่นเข้ามาดูหรือร่วมพัฒนาโค้ดเบส หรือแม้แต่เมื่อตัวเราเองต้องกลับมาอ้างอิงในภายหลัง
- ผู้ใช้ซอฟต์แวร์มักประสบความยากลำบากเพราะเอกสารที่ขาดหายไป
- หากต้องมีส่วนร่วมกับโค้ดเบส ยิ่งเอกสารมีคุณภาพดี ก็ยิ่งช่วยให้เริ่มมีส่วนร่วมได้รวดเร็วขึ้น
- คุณภาพของเอกสารส่งผลทั้งทางตรงและทางอ้อมต่อประสบการณ์ของผู้เขียน ผู้ร่วมพัฒนา หรือผู้ใช้
- ประโยชน์ของเอกสารที่ดีมีหลายด้าน เช่น ประหยัดเวลา เพิ่มการมีส่วนร่วมจากภายนอกในโปรเจกต์โอเพนซอร์ส บันทึกการตัดสินใจในอดีต ทำให้ผู้ใช้เข้าถึงได้มากขึ้น ช่วยจัดโครงสร้างความคิด และช่วยค้นพบปัญหา
เอกสารของ esbuild
- esbuild เป็น JavaScript bundler ที่สร้างโดย Evan Wallace
- README ของ esbuild มุ่งเน้นไปที่ผู้ใช้งานปลายทางของเครื่องมือ
- ผ่านลิงก์ไปยังหัวข้อหลักของเอกสารและส่วน "ทำไม?" จึงอธิบายอย่างกระชับว่าทำไมควรเลือก esbuild แทน bundler อื่น
- เอกสารสถาปัตยกรรมของ esbuild อยู่ในไดเรกทอรี
docs โดยประกอบด้วยไฟล์ architecture.md และ development.md
- เอกสารสถาปัตยกรรมอธิบายหลักการออกแบบ และไม่ได้มีแค่ข้อความเท่านั้น แต่ยังมีกราฟิกที่ช่วยอธิบายแนวคิดด้วย
- changelog ของ esbuild มีรายละเอียดมาก โดยมีทั้งสรุป คำอธิบายเพิ่มเติม และตัวอย่างโค้ดก่อน-หลังการเปลี่ยนแปลง
เอกสารของ Redis
- Redis เป็นฐานข้อมูลในหน่วยความจำ
- README ของ Redis มีจุดเด่นที่ดีคล้ายกับ README ของ esbuild แต่ให้ความสำคัญทั้งกับผู้ร่วมพัฒนาและผู้ใช้งานปลายทาง
- ส่วนที่อธิบายภายในของ Redis มีทั้งผังของซอร์สโค้ดและคำอธิบายเกี่ยวกับไฟล์สำคัญต่าง ๆ
- คอมเมนต์ในซอร์สโค้ดของ Redis ให้คำอธิบายยาวหลายย่อหน้าแม้กระทั่งกับโค้ดเพียงบรรทัดเดียว
บทสรุป
- มีโปรเจกต์โอเพนซอร์สจำนวนมากที่มีเอกสารยอดเยี่ยม
- esbuild และ Redis น่าประทับใจเป็นพิเศษในด้านการจัดทำเอกสาร
- แม้การทำเอกสารอาจสร้างข้อจำกัดด้านเวลาในระยะสั้น แต่ในระยะยาวจะช่วยประหยัดเวลาได้
- สำหรับโปรเจกต์ที่มีผู้ใช้หรือผู้ร่วมพัฒนาจำนวนมาก การไม่ทำเอกสารเป็นเรื่องที่ควรกลับมาทบทวน
ความเห็นของ GN⁺
- กรณีศึกษาด้านเอกสารของ esbuild และ Redis ตอกย้ำถึงความสำคัญของเอกสารที่ช่วยให้นักพัฒนาเข้าใจและดูแลโค้ดเบสได้ง่ายขึ้น
- เอกสารเป็นองค์ประกอบสำคัญที่ช่วยเพิ่มความยั่งยืนของโปรเจกต์และส่งเสริมการมีส่วนร่วมของชุมชน
- ในกรณีของ esbuild นอกจากความสามารถในฐานะ JavaScript bundler ที่รวดเร็วแล้ว เอกสารที่ยอดเยี่ยมก็ดูจะมีส่วนช่วยให้โปรเจกต์เติบโตด้วย
- Redis สร้างผลกระทบเชิงบวกต่อชุมชนนักพัฒนาด้วยเอกสารที่ช่วยให้ระบบฐานข้อมูลในหน่วยความจำที่ซับซ้อนเข้าใจได้ง่ายขึ้น
- กรณีเหล่านี้สามารถช่วยเผยแพร่ความสำคัญของเอกสารไปยังโปรเจกต์โอเพนซอร์สอื่น ๆ และมีประโยชน์อย่างยิ่งต่อวิศวกรซอฟต์แวร์ระดับเริ่มต้นในการทำความเข้าใจวิธีจัดทำเอกสารสำหรับโปรเจกต์ของตนเอง
2 ความคิดเห็น
esbuild ไม่ใช่แค่ไฟล์ README.md เท่านั้น แต่ไฟล์ architecture.md ที่แนะนำในบทความก็ยอดเยี่ยมมากเช่นกัน!
ความคิดเห็นจาก Hacker News
Antirez ผู้ก่อตั้ง Redis ได้เขียนบทความในบล็อกของเขาอธิบายแนวคิดเกี่ยวกับคอมเมนต์ในโค้ดไว้อย่างละเอียด โดยระบุคอมเมนต์ 9 ประเภทที่ใช้ใน Redis
บทความที่เขียนได้ดี พร้อมตัวอย่างที่เป็นรูปธรรมและภาพหน้าจอ ว่าเอกสารของโปรเจ็กต์จะยอดเยี่ยมสำหรับผู้ใช้/นักพัฒนา/ผู้ร่วมพัฒนาได้อย่างไร
แสดงให้เห็นว่าผู้ดูแลให้ความสำคัญกับคุณภาพของ repository
ชวนให้นึกถึงชุด "The Architecture of Open Source Applications" ซึ่งมีมุมมองที่น่าสนใจ
GitLab มีชื่อเสียงว่าเอกสารดีมาก แต่ยังไม่เคยจำเป็นต้องใช้งานโดยตรงมากนัก จึงสงสัยว่าเอกสารสถาปัตยกรรมของพวกเขาดีหรือไม่
โปรเจ็กต์ Postgres ก็ใส่ใจรายละเอียดของเอกสาร ไฟล์ readme และคอมเมนต์ในโค้ดอย่างมากเช่นกัน
ประทับใจกับการทำเอกสารสถาปัตยกรรมของโปรเจ็กต์ esbuild มาก และรู้สึกว่าถ้าโค้ดเบสที่เคยทำงานด้วยในอดีตมีเอกสารแบบนี้ก็คงดี
ชอบบันทึกการเปลี่ยนแปลงของโปรเจ็กต์โอเพนซอร์สมาก เพราะดูเป็นมืออาชีพและให้ข้อมูลมากกว่าเอนทิตีอื่นที่มุ่งหากำไร พร้อมวิจารณ์ว่า changelog ของแอป ING Bank ควรเน้นให้ข้อมูลมากกว่าจะพยายามทำให้ตลก
"สิ่งที่ขาดแคลนมากที่สุดในชุมชนซอฟต์แวร์เสรีทุกวันนี้ไม่ใช่ซอฟต์แวร์ แต่คือการขาดเอกสารเสรีที่ดีซึ่งสามารถแนบไปกับซอฟต์แวร์เสรีได้"
มีการกล่าวถึงว่า Redis ไม่ใช่โอเพนซอร์สอีกต่อไป โดย Redis เป็นซอฟต์แวร์แบบ "source-available" ภายใต้ Redis Source Available License v2 (RSALv2) และ Server Side Public License v1 (SSPLv1)