การต่อสู้ที่ไม่มีวันสิ้นสุดระหว่างความเรียบง่ายและฟังก์ชันการทำงานได้จุดประกายการถกเถียงใหม่ในชุมชนนักพัฒนา การอภิปรายล่าสุดมุ่งเน้นไปที่ว่าควรสร้าง static site generator แบบกำหนดเองหรือยอมรับความซับซ้อนของเครื่องมือที่มีอยู่แล้วอย่าง Emacs Org-mode สำหรับ workflow การเขียนบล็อก
การสนทนาเริ่มต้นขึ้นเมื่อนักพัฒนาคนหนึ่งแสดงความหงุดหงิดต่อระบบ publishing ของ Org-mode โดยอธิบายว่าเป็นเหมือนกล่องดำที่มีโค้ดมากกว่า 20,000 บรรทัดซึ่งยากต่อการเข้าใจหรือแก้ไข ความรู้สึกนี้สะท้อนกับหลายคนที่รู้สึกลำบากใจระหว่างความน่าดึงดูดของโซลูชันแบบกำหนดเองที่เรียบง่ายกับฟีเจอร์ที่ทรงพลังของเครื่องมือที่มีชื่อเสียง
ความซับซ้อนของระบบ Publishing ใน Org-mode:
- โค้ดสำหรับ export เป็น HTML (ox-html.el): 5,000 บรรทัด
- กรอบงานสำหรับ export ทั่วไป (ox-publish.el และ ox.el): 8,000 บรรทัด
- โค้ดสำหรับ parse Org (org-element.el): 9,000+ บรรทัด
- ความซับซ้อนรวม: 20,000+ บรรทัดของโค้ด
ความน่าดึงดูดของโซลูชันแบบกำหนดเอง
นักพัฒนาหลายคนถูกดึงดูดไปยังแนวคิดของการสร้าง static site generator ของตัวเอง คำสัญญานั้นน่าดึงดูด: โค้ดเบสที่สะอาดและเข้าใจง่ายเพียง 2,000 บรรทัดที่คุณสามารถควบคุมและขยายได้อย่างสมบูรณ์ สมาชิกชุมชนหลายคนได้ใช้เส้นทางนี้อย่างประสบความสำเร็จ โดยนักพัฒนาคนหนึ่งได้แบ่งปันประสบการณ์ของการใช้เวลาสุดสัปดาห์ที่มีสมาธิในการสร้าง generator แบบกำหนดเองที่กลายเป็นโปรเจ็กต์ที่เขาหวงแหนที่สุด
ประโยชน์นั้นชัดเจน โซลูชันแบบกำหนดเองให้ความโปร่งใสอย่างสมบูรณ์ การ debug ที่ง่ายขึ้น และความพึงพอใจจากการเข้าใจทุกส่วนประกอบ เมื่อมีสิ่งใดเสีย คุณรู้ว่าต้องไปดูที่ไหนและแก้ไขอย่างไร
พลังของฟีเจอร์ขั้นสูง
อย่างไรก็ตาม การอภิปรายเผยให้เห็นว่าทำไมหลายคนยังคงยึดติดกับเครื่องมือที่ซับซ้อนแม้จะมีข้อเสีย ฟีเจอร์ Babel ของ Org-mode โดดเด่นในฐานะตัวเปลี่ยนเกมสำหรับการเขียนเทคนิค ระบบนี้สามารถรันบล็อกโค้ดระหว่างการ export แสดงผลลัพธ์เป็นตารางหรือรูปภาพ รักษา session ข้ามบล็อกโค้ด และจัดการภาษาโปรแกรมหลายภาษาได้อย่างราบรื่น
สำหรับบล็อกเกอร์ที่รวมการแสดงข้อมูลเป็นภาพ ชาร์ต หรือตัวอย่างโค้ดแบบสดเป็นประจำ ฟังก์ชันนี้มีค่าอย่างยิ่ง ความสามารถในการร่างข้อมูล ภาพประกอบ และข้อความพร้อมกันในขณะที่รักษาทุกอย่างให้ซิงค์กันทำให้ความซับซ้อนคุ้มค่าสำหรับผู้ใช้หลายคน
แนวทางทางเลือกเกิดขึ้น
การอภิปรายของชุมชนเน้นโซลูชันแบบผสมผสานหลายแบบ นักพัฒนาบางคนใช้แนวทางไฮบริดอย่าง ox-hugo ซึ่งแปลงไฟล์ Org-mode เป็น Markdown สำหรับการประมวลผลโดย Hugo คนอื่นๆ ได้นำเครื่องมืออย่าง Quarto มาใช้ ซึ่งให้ความสามารถในการรันโค้ดที่คล้ายกันแต่อาจมีความซับซ้อนน้อยกว่า
เครื่องมือบล็อกที่เรียบง่าย 2,000 บรรทัดจะเป็นโปรเจ็กต์สุดสัปดาห์ที่สนุก การทำฟีเจอร์ของ Babel ที่ฉันใช้ให้เหมือนกันจะกลายเป็นงานหลายเดือน
ทางเลือก Static Site Generator ยอดนิยมที่ถูกกล่าวถึง:
- โซลูชันแบบกำหนดเอง: ประมาณ 2,000 บรรทัดของโค้ด
- Hugo: พร้อมตัวแปลง ox-hugo สำหรับรองรับ Org-mode
- Pelican: ใช้ Python เป็นฐานพร้อม Org-mode plugins ที่มีให้ใช้งาน
- Zola: แจกจ่ายแบบ binary มีการเรนเดอร์ที่รวดเร็ว
- Quarto: มีฟีเจอร์การรันโค้ดคล้ายกับ Babel
- Jekyll , Astro: ทางเลือกอื่นๆ ที่ชุมชนกล่าวถึง
ความเป็นจริงของการลงทุนเวลา
การถกเถียงท้ายที่สุดมาถึงการจัดสรรเวลาและลำดับความสำคัญ การสร้าง generator แบบกำหนดเองอาจใช้เวลาสุดสัปดาห์ แต่การทำฟีเจอร์ขั้นสูงอย่างการรันโค้ด การไฮไลต์ syntax และการรองรับหลายภาษาให้เหมือนกันอาจต้องใช้เวลาหลายเดือนในการพัฒนา สำหรับนักพัฒนาที่มีเวลาจำกัด การแลกเปลี่ยนมักจะเอื้อต่อโซลูชันที่มีอยู่แล้วแม้จะมีความซับซ้อน
การอภิปรายยังได้สัมผัสทางเลือกที่เรียบง่ายกว่า โดยบางคนแนะนำว่าไฟล์ข้อความธรรมดาที่เสิร์ฟโดยตรงอาจเพียงพอสำหรับความต้องการบล็อกพื้นฐาน ย้อนกลับไปสู่ความเรียบง่ายของการเผยแพร่เว็บยุคแรกๆ
การถกเถียงที่ดำเนินต่อไปนี้สะท้อนความตึงเครียดที่กว้างขึ้นในการพัฒนาซอฟต์แวร์ระหว่างความปรารถนาในความเรียบง่ายและความต้องการฟีเจอร์ที่ทรงพลัง แม้จะไม่มีคำตอบสากล แต่แนวทางที่หลากหลายของชุมชนแสดงให้เห็นว่าทั้งสองเส้นทางสามารถนำไปสู่ผลลัพธ์ที่ประสบความสำเร็จได้ ขึ้นอยู่กับความต้องการและข้อจำกัดของแต่ละบุคคล
อ้างอิง: Why I Keep Blogging With Emacs