yamlfmt ของ Google ซึ่งเป็นเครื่องมือบรรทัดคำสั่งสำหรับจัดรูปแบบไฟล์ YAML ได้จุดประกายการสนทนาในชุมชนเกี่ยวกับความยั่งยืนในระยะยาวและภาพรวมของโซลูชันการจัดรูปแบบ YAML เครื่องมือนี้ซึ่งปัจจุบันได้รับการดูแลโดยนักพัฒนาคนเดียวในเวลาว่างโดยไม่มีการสนับสนุนอย่างเป็นทางการจาก Google แสดงให้เห็นทั้งประโยชน์และความเปราะบางของโครงการโอเพนซอร์สจากบริษัทเทคโนโลยีใหญ่
ข้อกำหนดการติดตั้ง
- ต้องใช้ Go เวอร์ชัน 1.21 หรือสูงกว่า
- มีให้ใช้งานเป็นไฟล์เดียวโดยไม่ต้องพึ่งพาไลบรารีอื่น
- สามารถติดตั้งได้ผ่าน:
go install github.com/google/yamlfmt/cmd/yamlfmt@latest
- สามารถติดตั้งผ่าน Homebrew ได้เช่นกัน:
brew install yamlfmt
ข้อกังวลเรื่องการดูแลรักษาและประวัติของ Google
ชุมชนได้แสดงความสงสัยเกี่ยวกับอนาคตของ yamlfmt โดยเปรียบเทียบกับโครงการอื่นๆ ของ Google ที่ถูกละทิ้งไป คำปฏิเสธความรับผิดชอบของเครื่องมือที่ระบุว่ายังไม่ได้รับการสนับสนุนอย่างเป็นทางการจาก Google และได้รับการดูแลเป็นหลักในเวลาว่างได้ทำให้เกิดสัญญาณเตือนสำหรับนักพัฒนาที่เคยประสบสถานการณ์คล้ายกันกับเครื่องมืออื่นๆ ของ Google เช่น Kaniko ความไม่แน่นอนนี้ทำให้ผู้ใช้บางคนแสวงหาทางเลือกที่มั่นคงกว่าก่อนที่จะลงทุนเวลาในการนำมาใช้
ตำแหน่งที่ถกเถียงของ YAML ในการพัฒนาสมัยใหม่
การสนทนาได้จุดประกายการถกเถียงเกี่ยวกับ YAML เองในฐานะรูปแบบการกำหนดค่าอีกครั้ง แม้ว่า YAML จะกลายเป็นสิ่งที่แพร่หลายในการพัฒนาสมัยใหม่ผ่านเครื่องมือเช่น Kubernetes และ Ansible แต่นักพัฒนาบางคนยังคงวิพากษ์วิจารณ์ความซับซ้อนและผลกระทบด้านความปลอดภัย วิวัฒนาการของรูปแบบจากเวอร์ชันแรกๆ ที่เรียบง่ายไปสู่ข้อกำหนดที่มีฟีเจอร์มากขึ้นได้นำมาซึ่งช่องโหว่ด้านความปลอดภัยที่อาจเกิดขึ้น โดยเฉพาะเกี่ยวกับการอ้าง YAML ที่สามารถเรียกใช้งานได้และการเรียกใช้โค้ดโดยพลการระหว่างการ deserialization
ข้อกังวลด้านความปลอดภัยทั้งหมดเกี่ยวกับข้อกำหนด YAML รุ่นหลัง แท็ก และโค้ด นั่นเป็นเหตุผลที่ส่วนใหญ่ยังคงใช้เวอร์ชันแรกๆ พร้อมกับ API รายการอนุญาตบางส่วน
ข้อพิจารณาด้านความปลอดภัยของ YAML
- YAML เวอร์ชันแรกๆ (เช่น syck) มีปัญหาด้านความปลอดภัยน้อยกว่า
- ข้อกำหนดในเวอร์ชันหลังๆ ได้เพิ่มความสามารถในการรันโค้ดที่สามารถทำงานได้
- การใช้งานสมัยใหม่ควรใช้ API ที่อยู่ในรายการอนุญาตสำหรับข้อมูลที่ไม่น่าเชื่อถือ
- การ deserialization แบบไม่จำกัดสามารถสร้างช่องโหว่ด้านความปลอดภัยได้
โซลูชันการจัดรูปแบบทางเลือก
ชุมชนได้เน้นทางเลือกที่มีอยู่หลายตัวที่อาจให้ความมั่นคงและการสนับสนุนภาษาที่กว้างขึ้น Prettier ซึ่งเพิ่มการสนับสนุน YAML ในปี 2020 ให้ความสามารถในการจัดรูปแบบหลายภาษาแต่ประสบปัญหาประสิทธิภาพในโครงการขนาดใหญ่ เครื่องมือจัดรูปแบบของ Deno ได้กลายเป็นทางเลือกที่รวดเร็วอย่างน่าประหลาดใจ สามารถประมวลผลไฟล์หลายพันไฟล์ต่อวินาที เครื่องมือแบบดั้งเดิมเช่น yq ก็ให้ความสามารถในการจัดรูปแบบ YAML และมีประวัติที่มั่นคงในระบบนิเวศ
เครื่องมือจัดรูปแบบ YAML ทางเลือก
- Prettier: รองรับหลายภาษา, รองรับ YAML ตั้งแต่ปี 2020, มีปัญหาด้านประสิทธิภาพในโปรเจกต์ขนาดใหญ่
- Deno fmt: เร็วมาก (หลายพันไฟล์ต่อวินาที), การรองรับ YAML อยู่ภายใต้ unstable flag
- yq: เครื่องมือที่มีชื่อเสียงพร้อมความสามารถในการจัดรูปแบบ
- yamlfmt: ไฟล์เดียว, ขยายได้, อนาคตการบำรุงรักษายังไม่แน่นอน
ความท้าทายของระบบนิเวศในวงกว้าง
สถานการณ์นี้สะท้อนความท้าทายทั่วไปในระบบนิเวศโอเพนซอร์สที่เครื่องมือที่มีประโยชน์จากบรรษัทใหญ่อยู่ในสถานะของความไม่แน่นอน แม้ว่า yamlfmt จะมีข้อได้เปรียบเฉพาะเช่นการแจกจ่ายแบบไบนารีเดียวและความสามารถในการขยาย แต่สถานะการดูแลรักษาที่ไม่แน่นอนบังคับให้นักพัฒนาต้องชั่งน้ำหนักระหว่างประโยชน์กับความเสี่ยงของการถูกละทิ้งในอนาคต ความพร้อมใช้งานของทางเลือกหลายตัวแสดงให้เห็นว่าชุมชนได้รับรู้รูปแบบนี้และพัฒนาโซลูชันสำรองไว้
การสนทนาเรื่อง yamlfmt ในท้ายที่สุดเน้นความตึงเครียดระหว่างนวัตกรรมและความมั่นคงในเครื่องมือนักพัฒนา ที่แม้แต่เครื่องมือที่ออกแบบมาอย่างดีก็อาจเผชิญอนาคตที่ไม่แน่นอนเนื่องจากลำดับความสำคัญขององค์กรและการจัดสรรทรัพยากร
อ้างอิง: yamlfmt