นักพัฒนาตั้งคำถามเกี่ยวกับแนวทางที่ใช้ YAML ในเครื่องมือสคริปต์เชลล์ใหม่ "Shef"

BigGo Editorial Team
นักพัฒนาตั้งคำถามเกี่ยวกับแนวทางที่ใช้ YAML ในเครื่องมือสคริปต์เชลล์ใหม่ "Shef"

เครื่องมือคำสั่งใหม่ที่เรียกว่า Shef ได้จุดประเด็นถกเถียงในหมู่นักพัฒนาเกี่ยวกับข้อดีของแนวทางที่ใช้ YAML สำหรับการเขียนสคริปต์เชลล์ เครื่องมือนี้ซึ่งอธิบายตัวเองว่าเป็นเครื่องมือ CLI ที่ทรงพลังสำหรับการปรุงสูตรเชลล์ ได้ผสมผสานองค์ประกอบของ Make, GitHub Actions และ CyberChef เพื่อสร้างอินเตอร์เฟซที่ขับเคลื่อนด้วย YAML สำหรับคำสั่งเชลล์

ความเหนื่อยล้ากับ YAML ในหมู่นักพัฒนา

การตอบสนองของชุมชนต่อ Shef ได้เน้นย้ำความรู้สึกที่เพิ่มขึ้นเกี่ยวกับความเหนื่อยล้ากับ YAML DSL ในหมู่นักพัฒนาที่มีประสบการณ์ ผู้แสดงความคิดเห็นหลายคนแสดงความสงสัยเกี่ยวกับคุณค่าของการห่อหุ้มคำสั่งเชลล์ในภาษาเฉพาะทางที่ใช้ YAML อีกอันหนึ่ง การเปรียบเทียบกับความพยายามก่อนหน้านี้ในแนวทางที่คล้ายกันเกิดขึ้นทันที โดยนักพัฒนาคนหนึ่งได้เปรียบเทียบกับ Maven 1 และ Apache Jelly โดยอธิบายว่าการเขียนสคริปต์แบบ XML ดังกล่าวถูกละทิ้งไปในที่สุด

ผมไม่เห็นกรณีการใช้งานสำหรับการเขียนสูตรใน YAML แทนที่จะใช้ฟังก์ชันเชลล์ (หรือ Python ซึ่งใช้ได้หลายแพลตฟอร์ม)... มันจะกลายเป็นภาษาโปรแกรมเทียมอย่างรวดเร็วโดยไม่มีข้อดีของไวยากรณ์การประกอบที่ดีกว่า

ความรู้สึกนี้ถูกสะท้อนในความคิดเห็นหลายรายการ โดยนักพัฒนาที่ทำงานเป็นประจำกับ Kubernetes และเครื่องมืออื่นๆ ที่ใช้ YAML มาก แสดงการต่อต้านเป็นพิเศษต่อการเพิ่มชั้นของ YAML อีกชั้นหนึ่งในเวิร์กโฟลว์ของพวกเขา

สคริปต์เชลล์แบบดั้งเดิม vs. แนวทางแบบมีโครงสร้าง

ประเด็นหลักในการอภิปรายคือ Shef มีข้อได้เปรียบมากพอเหนือการเขียนสคริปต์เชลล์แบบดั้งเดิมเพื่อให้เหตุผลในการมีอยู่หรือไม่ ในขณะที่ผู้สร้างเครื่องมือปกป้องพรอมต์ผู้ใช้แบบโต้ตอบและคุณสมบัติเพิ่มเติมว่าเป็นประโยชน์นอกเหนือจากการเขียนสคริปต์ bash พื้นฐาน นักพัฒนาหลายคนยืนยันว่าด้วยความพยายามเพียงเล็กน้อย การเขียนสคริปต์เชลล์ก็ไม่ได้ยากเย็นอะไร

ผู้แสดงความคิดเห็นหลายคนแนะนำว่าเมื่อสคริปต์เชลล์เติบโตจนซับซ้อนเกินไป แนวทางที่ดีกว่าคือการเปลี่ยนไปใช้ภาษาโปรแกรมเต็มรูปแบบเช่น Python แทนที่จะแนะนำชั้นนามธรรมใหม่ คนอื่นๆ ชี้ไปที่เครื่องมือที่มีอยู่เช่น Taskfile ที่ให้ฟังก์ชันการทำงานที่คล้ายกันแต่นักพัฒนามักจะกลับไปใช้คำสั่งเชลล์ดิบอยู่ดี

คุณสมบัติหลักของ Shef

  • การแจ้งเตือนผู้ใช้แบบโต้ตอบ
  • การเชื่อมต่อคำสั่งเข้าด้วยกัน
  • โครงสร้างควบคุมและลูปที่ซับซ้อน
  • เวิร์กโฟลว์ที่นำกลับมาใช้ใหม่ได้พร้อมตรรกะเงื่อนไข
  • รูปแบบสูตรที่ใช้ YAML เป็นพื้นฐาน

ข้อกังวลของชุมชน

  • YAML ในฐานะภาษาการเขียนโปรแกรมเทียม
  • ความซับซ้อนเมื่อเทียบกับสคริปต์เชลล์แบบดั้งเดิม
  • ข้อกำหนดในการติดตั้ง (เริ่มแรกต้องใช้เครื่องมือ Go)
  • รูปแบบที่คล้ายคลึงกับแนวทางที่เคยถูกละทิ้งไปแล้ว (เช่น Apache Jelly)

อุปสรรคในการติดตั้งและข้อพิจารณาในทางปฏิบัติ

การเปิดตัวครั้งแรกของ Shef ถูกวิจารณ์เรื่องกระบวนการติดตั้ง ซึ่งกำหนดให้ผู้ใช้ต้องติดตั้งเครื่องมือ Go เพื่อทดลองใช้ซอฟต์แวร์ นักพัฒนายอมรับข้อจำกัดนี้และอัปเดตโปรเจกต์อย่างรวดเร็วเพื่อรวมไบนารีในการเผยแพร่ ซึ่งแสดงให้เห็นถึงการตอบสนองต่อข้อเสนอแนะของชุมชน

ผู้ใช้บางรายชื่นชมแง่มุมบางอย่างของเครื่องมือ เช่น ชื่อที่ฉลาด (การเล่นคำระหว่าง chef และ shell) และศักยภาพในการนำสูตรกลับมาใช้ใหม่ภายในสูตรอื่นๆ ผู้แสดงความคิดเห็นคนหนึ่งแนะนำให้เพิ่มการบันทึก asciinema ใน README เพื่อแสดงฟังก์ชันการทำงานของเครื่องมือได้ดีขึ้น ซึ่งเป็นข้อเสนอแนะที่นักพัฒนาได้นำไปปฏิบัติทันที

แนวทางทางเลือก

การอภิปรายเกี่ยวกับ Shef กระตุ้นให้นักพัฒนาหลายคนแบ่งปันแนวทางทางเลือกของตนเองสำหรับปัญหาที่คล้ายกัน บางคนอธิบายเครื่องมือที่ใช้ Python ที่ได้รับแรงบันดาลใจจาก Ansible แต่ออกแบบมาสำหรับการดำเนินงานในระดับเล็กกว่า คนอื่นๆ กล่าวถึงประโยชน์ของแนวทางแบบ strongly-typed คล้าย CDK มากกว่าการรวมกันระหว่าง Go และ YAML

ทางเลือกเหล่านี้เน้นย้ำความหลากหลายของความคิดเห็นเกี่ยวกับวิธีที่ดีที่สุดในการจัดการกับการดำเนินงานเชลล์ที่ซับซ้อน โดยนักพัฒนาหลายคนชอบที่จะใช้ประโยชน์จากภาษาโปรแกรมที่มีอยู่แล้วมากกว่าการสร้างภาษาเฉพาะทางใหม่

ในขณะที่ Shef เป็นแนวทางที่น่าสนใจในการทำให้สคริปต์เชลล์เข้าถึงได้ง่ายขึ้นและมีการโต้ตอบมากขึ้น การตอบสนองของชุมชนนักพัฒนาบ่งชี้ว่าความต้องการสำหรับโซลูชันการเขียนสคริปต์ที่ใช้ YAML อาจกำลังลดลงเพื่อเปิดทางให้กับแนวทางการเขียนโปรแกรมแบบดั้งเดิมมากขึ้น อย่างไรก็ตาม ผู้สร้างเครื่องมือยังคงกระตือรือร้นเกี่ยวกับโปรเจกต์และตอบสนองต่อข้อเสนอแนะ ซึ่งบ่งชี้ว่า Shef อาจจะยังคงพัฒนาต่อไปตามข้อมูลจากชุมชน

อ้างอิง: Shef: A Powerful CLI Tool for Cooking Up Shell Recipes