Asciinema เครื่องมือบันทึกเทอร์มินัลยอดนิยม ได้เปิดตัวเวอร์ชัน 3.0 พร้อมการเขียนโค้ดใหม่ทั้งหมดด้วย Rust และความสามารถในการสตรีมแบบสดที่ล้ำสมัย การเปิดตัวครั้งนี้นำเสนอการเปลี่ยนแปลงครั้งสำคัญในวิธีที่นักพัฒนาบันทึกและแชร์เซสชันเทอร์มินัล โดยเปลี่ยนจาก Python เป็น Rust เพื่อประสิทธิภาพที่ดีกว่าและการติดตั้งที่ง่ายขึ้น
คุณสมบัติหลักของ Asciinema 3.0
- การเขียนใหม่ด้วย Rust อย่างสมบูรณ์ จาก Python เพื่อประสิทธิภาพที่ดีขึ้น
- การสตรีมสด ในโหมดท้องถิ่นและระยะไกล
- รูปแบบ asciicast v3 พร้อมการจับเวลาแบบช่วงเวลา
- เวิร์กโฟลว์ที่เน้นความเป็นส่วนตัว ที่ต้องการชื่อไฟล์ที่ชัดเจน
- การแจกจ่ายไบนารีแบบสแตติก เพื่อการติดตั้งที่ง่ายขึ้น
- ความสามารถเทอร์มินัลเสมือนแบบบูรณาการ
การสตรีมแบบสดทำให้โครงสร้างพื้นฐานต้องรับการทดสอบ
ฟีเจอร์การสตรีมแบบสดใหม่ได้แสดงให้เห็นทั้งศักยภาพและความท้าทายด้านโครงสร้างพื้นฐานที่มาพร้อมกัน การสาธิตแบบสดของ btop system monitor ที่ทำงานบน asciinema.org ดึงดูดผู้ชมหลายร้อยคน ทำให้บริการประสบปัญหาโหลดหนักบนเซิร์ฟเวอร์ที่มี RAM เพียง 2GB ผู้สร้างต้องขยายโครงสร้างพื้นฐานอย่างรวดเร็วระหว่างการสาธิต ซึ่งเน้นย้ำว่าแม้แต่ซอฟต์แวร์ที่มีประสิทธิภาพก็สามารถถูกครอบงำได้จากความนิยมที่เกิดขึ้นอย่างกะทันหัน
ฟีเจอร์สตรีมทำงานในสองโหมด: การสตรีมแบบท้องถิ่นใช้เซิร์ฟเวอร์ HTTP ในตัวสำหรับเครือข่ายที่เชื่อถือได้ ในขณะที่การสตรีมระยะไกลเผยแพร่ผ่าน asciinema.org หรือเซิร์ฟเวอร์ที่โฮสต์เอง วิธีการคู่นี้ให้ความยืดหยุ่นแก่ผู้ใช้ในการแชร์เซสชันเทอร์มินัล ไม่ว่าจะเป็นการทำงานร่วมกันภายในทีมหรือการสาธิตสาธารณะ
ข้อมูลจำเพาะด้านโครงสร้างพื้นฐาน
- การโฮสต์ปัจจุบัน: เครื่องเสมือน 2 เครื่องที่มี RAM 2GB แต่ละเครื่อง
- เทคโนโลยีที่ใช้: เซิร์ฟเวอร์ Elixir/Phoenix บน BEAM
- ผู้ให้บริการโฮสต์: Brightbox (สนับสนุน)
- ขีดจำกัดการสตรีมพร้อมกัน: 1 ใน asciinema.org
- การบันทึกสตรีม: ปิดใช้งานในอินสแตนซ์สาธารณะ
แนวทางที่ให้ความสำคัญกับความเป็นส่วนตัวตอบสนองความกังวลที่มีมานาน
เวอร์ชัน 3.0 ใช้แนวทางที่เน้นการทำงานแบบท้องถิ่นเป็นหลัก โดยกำหนดให้ผู้ใช้ระบุชื่อไฟล์อย่างชัดเจนเมื่อทำการบันทึก การเปลี่ยนแปลงนี้ตอบสนองความกังวลของชุมชนเกี่ยวกับการอัปโหลดโดยไม่ได้ตั้งใจและความเป็นส่วนตัวของข้อมูลที่มีอยู่ตั้งแต่วันแรกของเครื่องมือนี้ ก่อนหน้านี้ผู้ใช้อาจเผยแพร่เซสชันเทอร์มินัลที่มีข้อมูลสำคัญไปยัง asciinema.org โดยไม่รู้ตัว
เวิร์กโฟลว์ใหม่แยกการบันทึกออกจากการอัปโหลดอย่างสมบูรณ์ ตอนนี้ผู้ใช้ต้องใช้คำสั่งอัปโหลดเฉพาะเพื่อแชร์การบันทึก ทำให้กระบวนการมีเจตนาและปลอดภัยมากขึ้น นอกจากนี้ผู้ใช้ครั้งแรกจะเห็นพรอมต์ URL เซิร์ฟเวอร์ เพื่อส่งเสริมให้พิจารณาตัวเลือกการโฮสต์เองแทนการใช้บริการสาธารณะเป็นค่าเริ่มต้น
วิวัฒนาการทางเทคนิคสะท้อนความต้องการของนักพัฒนา
การเขียนใหม่จาก Python เป็น Rust แสดงถึงวิวัฒนาการล่าสุดในการเดินทางทางเทคนิคของ asciinema ซึ่งก่อนหน้านี้ได้มีการทดลองกับ Go, ClojureScript และ Elixir สำหรับส่วนประกอบต่างๆ แม้ว่าสมาชิกชุมชนบางคนจะมองว่านี่เป็นการไล่ตามเทรนด์ แต่นักพัฒนายอมรับอย่างเปิดเผยว่าใช้โปรเจกต์นี้เพื่อสำรวจเทคโนโลยีใหม่ๆ พร้อมทั้งปรับปรุงความสามารถของเครื่องมือ
การใช้งาน Rust นำมาซึ่งเวลาเริ่มต้นที่เร็วขึ้น การติดตั้งที่ง่ายขึ้นผ่าน static binaries และการจัดการ system calls และ concurrency ที่ดีกว่า การปรับปรุงเหล่านี้เปิดใช้งานฟีเจอร์ใหม่อย่างเทอร์มินัลเสมือนแบบบูรณาการและความสามารถในการสตรีมแบบเรียลไทม์ที่จะยากกว่าในการใช้งานกับ Python
รูปแบบไฟล์ใหม่เปิดใช้งานการแก้ไขที่ดีขึ้น
การแนะนำรูปแบบ asciicast v3 ตอบสนองข้อจำกัดเชิงปฏิบัติที่ผู้ใช้ประสบมาหลายปี รูปแบบใหม่ใช้ช่วงเวลาแทนการประทับเวลาแบบสัมบูรณ์ ทำให้การแก้ไขการบันทึกง่ายขึ้นมากโดยไม่ต้องคำนวณข้อมูลเวลาที่ตามมาใหม่ทั้งหมด การเปลี่ยนแปลงนี้ พร้อมกับการสนับสนุนความคิดเห็นและการจัดระเบียบเมตาดาต้าที่ดีขึ้น ทำให้รูปแบบเป็นมิตรกับนักพัฒนามากขึ้นสำหรับการสร้างการสาธิตและบทช่วยสอนที่ขัดเกลา
รูปแบบยังแนะนำประเภทเหตุการณ์ใหม่ รวมถึงการติดตาม exit status ของเซสชันและเหตุการณ์การปรับขนาดเทอร์มินัล ให้ภาพที่สมบูรณ์ยิ่งขึ้นของเซสชันเทอร์มินัลสำหรับทั้งการเล่นซ้ำและการวิเคราะห์
การเปลี่ยนแปลงรูปแบบ asciicast v3
- วิธีการจับเวลา: ช่วงเวลา/เดลต้าแทนที่จะเป็นการประทับเวลาแบบสัมบูรณ์
- โครงสร้างส่วนหัว: จัดระเบียบใหม่ด้วยการจัดกลุ่มข้อมูลเมตา
- ประเภทเหตุการณ์ใหม่: สถานะการออก ("x") และเหตุการณ์ปรับขนาด ("r")
- การรองรับคอมเมนต์: บรรทัดที่ขึ้นต้นด้วยอักขระ ""
- การจัดกลุ่มข้อมูลเมตา: การตั้งค่าเทอร์มินัลภายใต้ออบเจ็กต์ "term"
การตอบสนองของชุมชนเน้นแนวโน้มที่กว้างขึ้น
การเปิดตัวได้จุดประกายการอภิปรายเกี่ยวกับปรัชญาโครงสร้างพื้นฐานและการโฮสต์ที่ยั่งยืนสำหรับโปรเจกต์โอเพนซอร์ส การทำงานบนเวอร์ชวลแมชชีนเพียงสองเครื่องที่มี RAM 2GB, asciinema.org แสดงให้เห็นว่าซอฟต์แวร์ที่ออกแบบมาอย่างดีสามารถให้บริการผู้ชมจำนวนมากด้วยทรัพยากรที่น้อยที่สุด แม้ว่าความท้าทายในการขยายระบบทันทีจะแสดงข้อจำกัดของแนวทางนี้
ในยุคที่ทุกอย่างเกี่ยวกับคลาวด์ มันน่าทึ่งมากที่ได้เห็นบริการระดับสูงอย่างนี้ทำงานได้อย่างราบรื่นบน VM 2 GB เพียงสองสามเครื่อง
ความกระตือรือร้นของชุมชนต่อฟีเจอร์สตรีม รวมกับข้อเสนอแนะสำหรับการผสานรวมกับเครื่องมือและเวิร์กโฟลว์ที่มีอยู่ ชี้ให้เห็นว่าการแชร์เทอร์มินัลแบบสดอาจกลายเป็นส่วนมาตรฐานของการทำงานร่วมกันและการศึกษาของนักพัฒนา ผู้ใช้บางคนกำลังสำรวจการประยุกต์ใช้อย่างสร้างสรรค์แล้ว ตั้งแต่การสตรีมการเขียนโปรแกรมไปจนถึงการสาธิตการดูแลระบบ
อ้างอิง: asciinema blog