Ruffle: อีมูเลเตอร์ Flash Player
(ruffle.rs)- Ruffle คืออีมูเลเตอร์ Flash Player แบบโอเพนซอร์สที่เขียนด้วย Rust ช่วยให้คอนเทนต์ Flash ที่ไม่รองรับโดยค่าเริ่มต้นอีกต่อไปกลับมาทำงานได้บนระบบปฏิบัติการและเบราว์เซอร์สมัยใหม่
- รองรับทั้งเดสก์ท็อปและเว็บ โดยในสภาพแวดล้อมเว็บจะใช้ WebAssembly
- มีเป้าหมายเพื่อหลีกเลี่ยง ความเสี่ยงด้านความปลอดภัย ที่เคยเป็นปัญหาของ Flash โดยใช้การรับประกันความปลอดภัยจาก Rust และ WASM
- ออกแบบให้ทั้งผู้ใช้ทั่วไปและเจ้าของเว็บไซต์ติดตั้งและเริ่มใช้งานได้อย่างรวดเร็ว
- เป็นโปรเจกต์โอเพนซอร์สฟรีที่ให้ใช้งานได้อย่างเสรีภายใต้ไลเซนส์ MIT/Apache 2.0
รันคอนเทนต์ Flash บนสภาพแวดล้อมสมัยใหม่
- Ruffle คืออีมูเลเตอร์ Flash Player สำหรับรันคอนเทนต์ Flash บนสภาพแวดล้อมสมัยใหม่
- สร้างขึ้นให้ทำงานแบบเนทีฟบนระบบปฏิบัติการและเบราว์เซอร์สมัยใหม่ โดยมุ่งเน้นการปลุกคอนเทนต์ Flash ให้กลับมาใช้งานได้โดยไม่ยุ่งยาก
- ภาษาที่ใช้พัฒนาคือ Rust และรองรับทั้งเดสก์ท็อปและเว็บ
- เป้าหมายการรันบนเว็บใช้ WebAssembly
แนวทางด้านความปลอดภัยและเงื่อนไขการเผยแพร่
- พยายามหลีกเลี่ยงกับดักด้านความปลอดภัยที่ Flash เคยมี โดยใช้การรับประกันจาก Rust และ WASM
- ออกแบบมาให้ทั้งผู้ใช้และเจ้าของเว็บไซต์ติดตั้งและเริ่มใช้งานได้อย่างรวดเร็ว
- เป็นโปรเจกต์โอเพนซอร์สฟรีที่เผยแพร่ภายใต้ไลเซนส์ MIT/Apache 2.0
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
สมัยเรียนผมเสียเวลาไปกับเกม Flash มากเกินไปเหมือนคนอีกมากมาย และรู้สึกเสียดายที่ส่วนหนึ่งของประวัติศาสตร์เกมกำลังหายไป
ถึงอย่างนั้น Ruffle ก็อาจช่วยชุบชีวิตกลับมาได้บ้าง แต่ก็ทำให้นึกขึ้นได้ว่ายังไม่มีวิธีเล่น Wolfenstein RPG บน iOS อยู่ดี ผมมี iPod ที่ซื้อมาเมื่อปี 2010 แทบจะเพื่อเล่นเกมนั้นโดยเฉพาะ แต่แบตเตอรี่คงไม่อยู่ได้ตลอดไป ตอนนี้คงไปเล่น Adrenaline Challenge ก่อนแล้วกัน
ผมนึกว่าจะต้องใช้เวลาอีกหลายปี ระหว่างนั้นก็เลยติดตั้ง Flash เวอร์ชันสุดท้ายที่ไม่มีระเบิดเวลาไว้ใช้ ดีใจที่ผมคิดผิด :)
https://github.com/hikari-no-yume/touchHLE/pull/139
หน้า The Merchant's House ในนิทรรศการ Slavery in New York ของ New York Historical Society แสดงสิ่งของทีละชิ้นและอธิบายว่า “ทุกสิ่งล้วนเชื่อมโยงกับระบบทาส” ในนิทรรศการออนไลน์มีชิ้นส่วนข้อมูลจำนวนมากที่พึ่งพา Flash และหน้านี้เป็นหน้าที่ผมชอบที่สุดเป็นการส่วนตัว
โปรเจกต์อย่าง Ruffle ช่วยให้ผลงานแบบนี้คงอยู่ได้ ตอนนี้เมื่อนิทรรศการหายไปแล้ว นี่คือวิธีเดียวที่จะอ่านเนื้อหานี้ได้ และช่วยให้ผลลัพธ์จากการวิจัยทางประวัติศาสตร์ขนาดใหญ่ยังถูกนำมาใช้ต่อได้
อย่างไรก็ตาม video galleries ในไซต์นิทรรศการเดียวกันกลับไม่สำเร็จ มันควรเป็นคลิปวิดีโอที่ผู้เข้าชมนิทรรศการฝากไว้ในบูธเฉพาะ และจากที่อ่านบทความที่เกี่ยวข้องมามาก ดูเหมือนจะเป็นแหล่งข้อมูลที่ดีที่แสดงให้เห็นว่าชาวนิวยอร์กในเวลานั้นมองระบบทาสอย่างไร มีข้อความจาก New York Times ด้วยว่า “มีความเก้ ๆ กัง ๆ แบบโฮมวิดีโอสมัครเล่น เสียงรบกวนพื้นหลัง ความเงียบที่ยาวนาน และสายตาที่หลบกล้อง”
น่าจะเป็นบางส่วนจากวิดีโอราว 400 รายการ แต่ในหน้านี้ Ruffle ทำงานไม่ถูกต้อง เคยมีเสียงจากแท็บดังขึ้นมาสั้น ๆ ตอนพยายามเปิดดู จึงเหมือนมีอะไรเกิดขึ้นอยู่ แต่ไม่เคยเห็นวิดีโอเลย ถ้ามีคนที่รู้เรื่องนี้มากกว่าช่วยบอกได้ว่าเกิดอะไรขึ้นก็คงดี และน่าเสียดายถ้าข้อมูลเหล่านี้หายไป
สามารถเล่นแบบออฟไลน์ด้วยเครื่องมืออย่าง VLC หรือ ffplay ได้ และยังแปลงเป็นรูปแบบการเล่นที่ทันสมัยกว่านี้ได้ด้วย
AS3 ในหลายแง่ก็คือ ECMAScript 4 และผมมองว่ามันล้ำยุคพอสมควร หลายสิ่งที่ทุกวันนี้เราคาดหวังกัน ในระบบนิเวศของ Flash Player เคยรู้สึกเหมือนเป็นฟีเจอร์ที่ใช้กันเป็นเรื่องปกติอยู่แล้ว
แน่นอนว่าก็มีช่วงเวลาฝันร้ายเหมือนกัน แต่ในยุคที่แม้แต่ JavaScript ข้ามเบราว์เซอร์ยังทำได้ยาก เราก็สามารถปล่อยของที่ยอดเยี่ยมได้ไม่น้อย
ไม่ใช่ว่า AS3 ล้ำยุคเท่าไร แต่พอเราทิ้ง Flash เพราะ Steve Jobs กับ CEO ของ Adobe ตอนนั้น มันรู้สึกเหมือนเราถอยกลับไปสู่อดีตมากกว่า
AS3 ดีจริง ๆ เรียนรู้ง่าย และปลอดภัยสำหรับการให้หลาย ๆ นักพัฒนาช่วยกันขยาย Flash เองช่วงท้าย ๆ ก็เร็วขึ้นมากแล้ว แต่สุดท้ายทุกอย่างก็ถูกกดทิ้งลงชักโครกไป
AS3 เป็นภาษาที่ยอดเยี่ยม Brendan Eich เคยกล่าวถึงสั้น ๆ ในบทสัมภาษณ์กับ Lex Fridman ซึ่งน่าสนใจตรงที่มันใกล้เคียงกับผู้สืบทอดที่เป็นไปได้ของ JavaScript ที่ไม่ได้เข้าไปอยู่ในเบราว์เซอร์ น่าเสียดายที่มันไม่กลายเป็นมาตรฐานใหม่
ถ้ามีกฎหมายบอกว่าเมื่อไม่ขายซอฟต์แวร์อีกแล้วต้องปล่อยให้อยู่ใน public domain ก็คงดี
ถึงอย่างนั้น Adobe ก็เปิดเผยสเปกที่เกี่ยวข้องให้ใช้ฟรีอยู่
การลดระยะเวลาลิขสิทธิ์ให้สมเหตุสมผลอย่าง 5 ปีก็คงดี หรือจะไปไกลกว่านั้น ให้ถ้าต้องการรักษาลิขสิทธิ์ไว้ก็ต้องจ่ายภาษีรายปีที่เพิ่มขึ้นแบบทวีคูณอาจดีกว่า
การเปลี่ยนกฎหมายอาจแก้ได้ เช่น ออกกฎหมายอนุรักษ์ซอฟต์แวร์โบราณ ให้สามารถเปิดซอร์สซอฟต์แวร์ใด ๆ ก็ได้ และป้องกันคดีความที่เกี่ยวข้องกับการดำเนินการตามกฎหมายนั้น
อาจเพิ่มแรงจูงใจเพิ่มเติมได้ด้วย เช่น กำหนดให้ซอฟต์แวร์ทุกตัวที่เคยขายเชิงพาณิชย์ต้องถูกเก็บถาวรอย่างถาวรหรือเปิดซอร์ส การเก็บถาวรอย่างถาวรในทางกฎหมายมีค่าใช้จ่ายสูง ดังนั้นหลายแห่งอาจเลือกเปิดซอร์ส
ดังนั้นหลายครั้งจึงไม่สามารถเปิดซอร์สได้โดยไม่ตัดโค้ดเบสส่วนใหญ่ออก และงานนั้นมีค่าใช้จ่ายสูง แถมยังทำให้โค้ดที่เผยแพร่ออกมามีประโยชน์ลดลงอย่างมาก
หรือเครื่องมือต่าง ๆ เสื่อมสภาพไปถึงขั้นฟื้นคืนได้ยากแล้ว จนสุดท้ายใช้ได้แค่กู้แคตตาล็อกเก่า ๆ เป็นหลัก?
แน่นอนว่าแคตตาล็อกเก่านั้นมหาศาลมาก แต่เคยได้ยินว่านักพัฒนาหลายคนชอบทำเกม Flash ถ้ามีใครดื้อพอจะพยายามปลุก ซีนเกม Flash ให้กลับมา ก็น่าจะน่าสนใจ
ตอนนี้มันอาจไม่จำเป็นนัก และก็มีเว็บสแตนดาร์ดที่มีอนาคตซึ่งพัฒนาขึ้นทุกวัน แต่ของพวกนั้นไม่เคยหยุดคนที่มุ่งมั่นได้ ยังมีคนที่หาวิธีทำเกมใหม่สำหรับฮาร์ดแวร์ Nintendo รุ่นเก่าอยู่เลย
ถ้าต้องการ AS2 อย่างน้อยต้องย้อนกลับไปถึง CS6 และผมคิดว่า CS5.5 ดีกว่าเพราะรองรับ FLA ได้กว้างกว่ามาก อย่าถามว่าทำไมพวกเขาถึงเอาสิ่งนั้นออกใน CS6
ถ้าไม่อยากจ่ายเงินให้ Adobe ก็ใช้ Apache Flex ซึ่งเป็นเวอร์ชันเสรีและโอเพนซอร์สของ toolchain จาก Adobe ได้ แน่นอนว่ามันเป็นเครื่องมือคอมไพเลอร์แบบ command line และคอมไพล์ได้เฉพาะไฟล์ AS3 ดังนั้นกราฟิกต้องสร้างแยกแล้วค่อยเชื่อมเข้ามา
ถ้าเป็นเวกเตอร์อาร์ต ก็มีโอกาสสูงที่ต้องหาวิธีแปลง SVG เป็น SWF, รวมมันเข้าไปใน SWF หลักด้วยเวทมนตร์การประกาศคลาสแปลก ๆ ใน Flex และรับมือกับปัญหา masking อันละเอียดอ่อนที่ตามมา
มันเป็น เครื่องมือสร้างสรรค์ที่เข้าถึงง่าย สำหรับทำแอนิเมชันไฟล์เดียว ข้ามแพลตฟอร์ม ปรับขนาดได้ และทำงานได้แม้บนแบนด์วิดท์ต่ำ
เรายังชดเชยการสูญเสียนั้นไม่ได้เลย JavaScript + canvas + เว็บสแต็กนี่เละเทะ ถ้า runtime ของ Ruffle เริ่มทำงานได้เร็ว ผมคงเริ่มทำ Flash ใหม่ ๆ
บน macOS จะซับซ้อนกว่า เพราะเวอร์ชันเหล่านั้นทั้งหมดเป็น 32 บิต บน M1 Mac น่าจะดีกว่าถ้าตั้งค่า Windows VM แล้วรัน Flash ในนั้น ส่วนบน Intel Mac สามารถติดตั้ง macOS Mojave ซึ่งเป็นเวอร์ชันสุดท้ายที่รองรับ 32 บิต ไว้ในพาร์ทิชันแยกได้
จริง ๆ แล้วมันรัน Linux ทั้งชุดใน VM ภายใน WebAssembly แล้วรัน Adobe Flash Player ที่มีไลเซนส์อย่างเป็นทางการในนั้น และดูเหมือนว่าไลเซนส์ Flash นั้นต้องขอแยกจาก Harman ตอนนี้ดูเหมือนฝั่งนั้นจะถือทรัพย์สินทางปัญญาของ Flash อยู่
https://labs.leaningtech.com/cheerpx/for-flash
ไม่ได้เกี่ยวข้องอะไรกับพวกเขา แค่เคยไปค้นดูเพราะน่าสนใจ
แต่ไม่ได้อีมูเลต Linux ทั้งชุดเพื่อรัน Flash มันอีมูเลต PPAPI และรัน Flash Player บน CheerpX ซึ่งเป็น x86 JIT
Yuri อธิบายสถาปัตยกรรม CXFF ไว้ที่นี่:
https://youtu.be/7JUs4c99-mo?t=1045
ถ้าต้องการอีมูเลชันระบบ Linux แบบเต็ม ก็มีเช่นกัน: https://webvm.io
ยังรู้สึกอยู่ว่าอินเทอร์เน็ตและ โปรแกรมเมอร์มือใหม่ วัยเยาว์สูญเสียเครื่องมือที่มีคุณค่าจริง ๆ ไปพร้อมกับ Flash น่าเสียดายที่ทำให้โมเดลความปลอดภัยทำงานได้ไม่ดีพอ แอปเพล็ต Flash มีฟีเจอร์มาก และมีอุปสรรคในการเริ่มต้นต่ำอย่างหาได้ยาก
มันมีปัญหาจริง แต่ซอฟต์แวร์ส่วนใหญ่ก็เป็นแบบนั้น และ Flash ล้ำหน้ากว่ายุคของมันจริง ๆ ราว 20 ปี หลังจาก Flash ตาย เว็บก็จืดชืดลงอย่างไร้เหตุผล
ทฤษฎีสมคบคิดของผมคือ Apple กับ Google จ่ายเงินให้ Adobe เพื่อฆ่า Flash จะได้บังคับให้รองรับมือถือ
ผมไม่เคยเขียน Flash สักบรรทัด และก็ไม่อยากเขียน แต่ยังจำได้ไม่ดีว่าเว็บ Flash พังเละแค่ไหน
วิดเจ็ตทำงานไม่เหมือน native จนเห็นชัด, ใน Firefox ก็มีปัญหา keyboard focus ไม่หยุดหย่อน, การเร่งวิดีโอก็ดูเหมือนทำงานไม่ถูกต้องจนกินแบตเตอรี่ มีฝันร้ายด้านความเป็นส่วนตัวอย่าง persistent cookie ที่ต้องเปิดแอป Flash ของ Adobe เพื่อลบ และการจัดการสิทธิ์ก็เมินทั้งระบบโฮสต์และเบราว์เซอร์
ปัญหาด้านความปลอดภัยและเสถียรภาพที่แทบเกิดตลอดเวลาก็ลืมยาก โดยส่วนตัวแล้วดีใจที่ Flash ตายไป
Flash แย่อยู่แล้วบนเดสก์ท็อป แต่ในช่วงที่มือถือเริ่มสำคัญ มันแย่กว่านั้นมากบนมือถือ จึงตายไป
มันทำแอนิเมชันได้ แต่ตอนนั้นนั่นไม่ใช่สิ่งที่พวกเราส่วนใหญ่ต้องการหรือคาดหวัง
กลุ่มที่ชอบ Flash มีแค่ฝ่ายการตลาด และคนที่อยากเป็นนักพัฒนาเกมกับวัยรุ่นที่เล่นเกมเหล่านั้น
อย่างน้อยจากมุมมองนักพัฒนา การทำงานกับ SDK แบบ batteries included จากผู้ขายรายเดียว ยังดีกว่าก้อนมะเร็ง node_modules นี่มาก
เมื่อไปดูโพสต์เก่าใน blogs.adobe.com ตอนนี้จะเห็นข้อผิดพลาดแบบสดดังนี้:
Fastly error: unknown domain: blogs.adobe.com. Please check that this domain has
been added to a service.
ข้อผิดพลาดข้างต้นมาจาก URL นี้: https://blogs.adobe.com/asset/2012/06/inside-flash-player-pr...
ใช้เวลาหลายปี แต่สุดท้ายก็ทำงานได้เพียงบางส่วนเท่านั้น ตอนนั้น Flash ยังครองตลาดบนเบราว์เซอร์อยู่ แต่ก็ไม่มีใครพอร์ต Gnash ได้อย่างจริงจังก่อนที่มันจะตายไป
เลยสงสัยว่า Ruffle ทำให้มันใช้งานได้เร็วขนาดนี้ได้อย่างไร