Ruffle: Trình giả lập Flash Player
(ruffle.rs)- Ruffle là trình giả lập Flash Player mã nguồn mở được viết bằng Rust, giúp chạy lại nội dung Flash không còn được hỗ trợ mặc định trên các hệ điều hành và trình duyệt hiện đại
- Hỗ trợ cả desktop lẫn web, và trong môi trường web sử dụng WebAssembly
- Hướng tới việc tránh các rủi ro bảo mật vốn nổi tiếng là vấn đề của Flash bằng cách tận dụng các ضمانات của Rust và WASM
- Được thiết kế để cả người dùng phổ thông lẫn chủ sở hữu website đều có thể cài đặt và chạy nhanh chóng
- Là dự án mã nguồn mở miễn phí được cung cấp theo giấy phép MIT/Apache 2.0, có thể tự do sử dụng
Chạy nội dung Flash trong môi trường hiện đại
- Ruffle là trình giả lập Flash Player để chạy nội dung Flash trong môi trường hiện đại
- Được tạo ra để hoạt động native trên các hệ điều hành và trình duyệt hiện đại, tập trung vào việc hồi sinh nội dung Flash mà không cần thêm các bước rườm rà
- Ngôn ngữ triển khai là Rust, nhắm đến cả desktop và web
- Với mục tiêu chạy trên web, WebAssembly được sử dụng
Cách tiếp cận bảo mật và điều kiện phân phối
- Tận dụng các bảo đảm của Rust và WASM để tránh những cạm bẫy bảo mật mà Flash từng có
- Được thiết kế để cả người dùng lẫn chủ sở hữu website có thể cài đặt và chạy nhanh chóng
- Là dự án mã nguồn mở miễn phí được phân phối theo giấy phép MIT/Apache 2.0
1 bình luận
Các ý kiến trên Hacker News
Hồi đi học, như nhiều người khác, tôi đã dành quá nhiều thời gian cho game Flash, và thấy tiếc khi một phần lịch sử game biến mất
Dù vậy Ruffle có thể hồi sinh được ít nhất một phần. Nhưng cũng nhớ ra là vẫn chưa có cách chơi Wolfenstein RPG trên iOS. Tôi có một chiếc iPod mua năm 2010 gần như chỉ để chơi game đó, nhưng pin chắc sẽ không sống mãi. Tạm thời chắc tôi đi chơi Adrenaline Challenge vậy
Tôi tưởng sẽ còn mất thêm vài năm nữa, và trong lúc đó tôi đã cài bản Flash cuối cùng không có “bom hẹn giờ” để dùng, nhưng thật may là tôi đã sai :)
https://github.com/hikari-no-yume/touchHLE/pull/139
Trang The Merchant's House trong triển lãm Slavery in New York của New York Historical Society cho xem từng món đồ và giải thích rằng “mọi thứ đều có liên hệ với chế độ nô lệ”. Triển lãm trực tuyến có nhiều mẩu thông tin phụ thuộc vào Flash, và trong số đó cá nhân tôi thích trang này nhất
Nhờ những dự án như Ruffle, các tác phẩm như vậy có thể được duy trì. Nay triển lãm đã biến mất, đây là cách duy nhất để đọc nội dung này, và giúp tiếp tục tận dụng kết quả của một khối lượng nghiên cứu lịch sử đồ sộ
Tuy nhiên các video galleries trên cùng website triển lãm thì thất bại. Đáng lẽ đó là các clip video do những người xem triển lãm để lại trong một gian riêng; đọc nhiều bài liên quan thì có vẻ chúng là tư liệu tốt cho thấy người dân New York thời đó nhìn nhận chế độ nô lệ như thế nào. Cũng có một câu của New York Times: “Có sự vụng về của video gia đình nghiệp dư. Tiếng ồn nền, những khoảng lặng dài, những ánh mắt tránh né camera.”
Chắc đây chỉ là một phần trong khoảng 400 video, nhưng trên trang này Ruffle không hoạt động đúng. Khi tôi thử xem, từng có lúc âm thanh phát ra thoáng qua từ tab, nên có vẻ có gì đó đang diễn ra, nhưng tôi chưa từng xem được video. Hy vọng ai hiểu rõ hơn về mảng này biết chuyện gì đang xảy ra, và thật đáng tiếc nếu các tư liệu này biến mất
Có thể phát offline bằng các công cụ như VLC hoặc ffplay, và cũng có thể chuyển đổi sang định dạng phát hiện đại hơn
AS3 ở nhiều khía cạnh chính là ECMAScript 4, và tôi nghĩ nó đi trước thời đại khá xa. Nhiều thứ mà ngày nay chúng ta kỳ vọng từng có cảm giác như các tính năng được dùng mặc nhiên trong hệ sinh thái Flash Player
Dĩ nhiên cũng có những khoảnh khắc ác mộng, nhưng vào thời mà JavaScript theo từng trình duyệt còn khiến người ta vất vả không biết liệu có làm được gì không, chúng tôi đã có thể triển khai những thứ khá tuyệt
Không hẳn là AS3 đi trước thời đại, mà cảm giác như chúng ta đã quay ngược về quá khứ khi từ bỏ Flash vì Steve Jobs và CEO Adobe khi đó
AS3 thực sự tốt, dễ học, và an toàn để nhiều lập trình viên cùng mở rộng. Đến giai đoạn cuối Flash cũng đã khá nhanh, nhưng rốt cuộc tất cả bị xả xuống bồn cầu
AS3 là một ngôn ngữ tuyệt vời. Brendan Eich có nhắc ngắn trong cuộc phỏng vấn với Lex Fridman, và thật thú vị khi nó gần như là một người kế nhiệm tiềm năng của JavaScript nhưng đã không được đưa vào trình duyệt. Tiếc là nó đã không trở thành chuẩn mới
Giá mà có luật quy định rằng nếu không còn bán phần mềm nữa thì phải để nó lại trong public domain
Dù vậy các đặc tả liên quan thì Adobe đang công bố miễn phí
Giảm thời hạn bản quyền xuống một mức hợp lý như 5 năm cũng sẽ tốt. Xa hơn nữa, có lẽ nên buộc phải trả một khoản thuế tăng theo cấp số nhân hằng năm nếu muốn duy trì bản quyền
Có thể giải quyết bằng cách thay đổi luật. Ví dụ tạo một luật bảo tồn phần mềm cổ, cho phép công khai mã nguồn mở bất kỳ phần mềm nào, và chặn các vụ kiện liên quan đến hành động theo luật đó
Cũng có thể tạo thêm động lực. Chẳng hạn yêu cầu mọi phần mềm đã được bán thương mại phải được lưu trữ vĩnh viễn hoặc công khai mã nguồn mở. Lưu trữ vĩnh viễn về mặt pháp lý thì tốn kém, nên nhiều nơi có khả năng sẽ chọn mã nguồn mở
Vì vậy nhiều trường hợp không thể mở nguồn nếu không cắt bỏ những phần lớn của codebase; việc đó tốn kém và cũng làm giảm đáng kể tính hữu ích của mã được công khai
Hay các công cụ đã ở mức khó hồi sinh, nên thực tế chỉ còn dùng để làm sống lại catalog cũ?
Dĩ nhiên catalog cũ thì khổng lồ, nhưng tôi nghe nói nhiều lập trình viên từng thích làm game Flash, nên nếu có ai đủ bền bỉ muốn hồi sinh scene game Flash thì sẽ rất thú vị
Bây giờ không nhất thiết cần đến nó và cũng có các chuẩn web đầy hứa hẹn đang tiến bộ hằng ngày, nhưng những thứ đó chưa bao giờ ngăn được những người bền bỉ. Vẫn có người tìm cách làm game mới cho phần cứng Nintendo cũ
Nếu muốn AS2 thì ít nhất phải quay về CS6, còn tôi nghĩ CS5.5 tốt hơn vì phạm vi hỗ trợ FLA rộng hơn nhiều. Đừng hỏi vì sao họ lại bỏ nó trong CS6
Nếu không muốn trả tiền cho Adobe, bạn có thể dùng Apache Flex, phiên bản tự do mã nguồn mở của toolchain Adobe. Tất nhiên đó là công cụ biên dịch dòng lệnh và chỉ biên dịch file AS3, nên phần đồ họa phải tạo riêng rồi liên kết vào
Nếu là vector art, khả năng cao bạn sẽ phải tìm cách chuyển SVG sang SWF, đưa nó vào SWF chính trong Flex bằng một kiểu phép màu khai báo class kỳ lạ, rồi xử lý cả những vấn đề masking tinh vi phát sinh từ đó
Nó từng là một công cụ sáng tác dễ tiếp cận, tạo ra animation một file duy nhất, chạy đa nền tảng, có thể co giãn và hoạt động được cả khi băng thông thấp
Chúng ta vẫn chưa bù đắp được mất mát đó. JavaScript + canvas + web stack là một mớ hỗn độn. Nếu runtime Ruffle có thể khởi động nhanh, tôi nghĩ mình sẽ bắt đầu làm Flash mới
Trên macOS thì phức tạp hơn vì tất cả các phiên bản đó đều là 32-bit. Trên Mac M1, tốt hơn là dựng một VM Windows rồi chạy Flash trong đó; còn trên Intel Mac thì có thể cài macOS Mojave, phiên bản cuối cùng hỗ trợ 32-bit, vào một phân vùng riêng
Thực tế là họ chạy cả Linux trong một VM bên trong WebAssembly, rồi trong đó chạy Adobe Flash Player có giấy phép chính thức. Và có vẻ giấy phép Flash đó phải lấy riêng từ Harman. Hiện có vẻ quyền sở hữu trí tuệ Flash nằm ở phía đó
https://labs.leaningtech.com/cheerpx/for-flash
Tôi không liên quan gì đến họ, chỉ là một lần thấy thú vị nên tìm hiểu thôi
Tuy nhiên chúng tôi không giả lập toàn bộ Linux chỉ để chạy Flash. Chúng tôi giả lập PPAPI và chạy Flash Player trên CheerpX, một JIT x86
Yuri giải thích kiến trúc CXFF ở đây:
https://youtu.be/7JUs4c99-mo?t=1045
Nếu cần giả lập một hệ thống Linux đầy đủ thì cũng có cái đó: https://webvm.io
Tôi vẫn nghĩ Internet và các lập trình viên mới vào nghề trẻ tuổi đã thật sự mất đi một công cụ có giá trị cùng với Flash. Thật đáng tiếc là họ không làm cho mô hình bảo mật hoạt động đúng được. Applet Flash có rất nhiều chức năng và rào cản gia nhập hiếm khi thấp đến vậy
Đúng là nó có vấn đề, nhưng phần lớn phần mềm đều vậy, và Flash thật sự đi trước thời đại khoảng 20 năm. Sau khi Flash chết, web trở nên nhạt nhẽo một cách vô lý
Thuyết âm mưu của tôi là Apple và Google đã trả tiền cho Adobe để giết Flash nhằm ép hỗ trợ di động
Tôi chưa từng viết một dòng Flash nào và cũng không muốn, nhưng tôi vẫn còn ký ức xấu về việc các site Flash hỏng hóc đến mức nào
Widget không hoạt động như native nên rất lộ, trên Firefox thì vấn đề focus bàn phím xảy ra liên tục, tăng tốc video dường như không hoạt động đúng nên ngốn pin. Còn có ác mộng quyền riêng tư như cookie dai dẳng mà muốn xóa phải mở ứng dụng Flash của Adobe, và cách xử lý quyền cũng phớt lờ hệ thống host hay trình duyệt
Cũng khó quên các vấn đề bảo mật và ổn định gần như thường trực. Cá nhân tôi thì mừng là Flash đã chết
Flash vốn đã không hay trên desktop, nhưng nó chết vì vào thời điểm di động trở nên quan trọng, trên di động nó còn tệ hơn nhiều
Nó có thể tạo animation, nhưng đó không phải thứ hầu hết chúng tôi khi ấy cần hay mong muốn
Những nhóm thích Flash chỉ là bộ phận marketing, cùng những người muốn trở thành nhà phát triển game và đám thiếu niên chơi các game đó
Ít nhất từ góc nhìn nhà phát triển, làm việc với một SDK của một nhà cung cấp duy nhất, có sẵn mọi thứ, vẫn tốt hơn rất nhiều so với khối ung thư node_modules này
Khi truy cập các bài viết cũ trên blogs.adobe.com, hiện sẽ thấy lỗi trực tiếp như sau:
Fastly error: unknown domain: blogs.adobe.com. Please check that this domain has
been added to a service.
Lỗi trên xuất hiện từ URL này: https://blogs.adobe.com/asset/2012/06/inside-flash-player-pr...
Mất vài năm nhưng cuối cùng cũng chỉ hoạt động một phần. Khi đó Flash vẫn còn thống trị trên trình duyệt, nhưng cho đến trước khi Gnash chết, không ai port nó cho tử tế được
Tôi tò mò Ruffle đã làm cách nào để khiến nó hoạt động nhanh đến vậy