1 điểm bởi GN⁺ 2023-10-23 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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

 
GN⁺ 2023-10-23
Các ý kiến trên Hacker News
  • Tôi kiểm tra dự án này khoảng mỗi năm một lần, và thật vui khi thấy hỗ trợ AS3 đang tiến gần đến mức hoàn thiện
    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
    • Khoảng 18 tháng trước, Ruffle hầu như chưa có hỗ trợ AS3, nên đó là rào cản quyết định đối với tôi
      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 :)
    • Lần cuối tôi xem thì AS3 mới chỉ ở giai đoạn bắt đầu, nên thật ngạc nhiên khi nó tiến nhanh đến vậy
    • Việc không chơi được Wolfenstein RPG trên iOS có thể sắp thay đổi :)
      https://github.com/hikari-no-yume/touchHLE/pull/139
    • Tôi cũng vẫn đang tìm cách chơi lại Inishie Dungeon
    • Mong là các PR cũ trong Ruffle thực sự được merge
  • Nhắc đến giả lập Flash thì lúc nào câu chuyện cũng trôi sang game Flash, nhưng ngoài ra còn có một lợi ích lớn là bảo tồn các website cung cấp thông tin vẫn phụ thuộc vào Flash
    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ác file video vẫn còn. Ví dụ https://www.slaveryinnewyork.org/flash/Gallery7Responses2.fl..., và cũng có thể thấy URL được request trong trình kiểm tra mạng của trình duyệ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
    • Tôi đã chuyển nội dung này cho đội Ruffle. Họ đang làm việc để cải thiện hỗ trợ video bên ngoài, vốn được thêm vào vài tháng trước
  • Tôi đã viết AS3 và mxml cho Adobe Flex trong vài năm
    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
    • Tôi cũng làm việc đó trong nhiều năm
      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
    • Hoàn toàn đồng ý. Tôi từng tạo một engine render 3D bằng Flash và AS3, và đó vẫn là một trong những nền tảng phát triển tôi thích nhất trong số đã dùng
      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
  • Adobe Flash đã chết rồi sao? Nếu Adobe không còn bán nó như một sản phẩm nữa thì tôi thắc mắc tại sao họ không công khai mã nguồn mở phần Flash Player
    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
    • Tôi từng hỏi câu tương tự trong một thread cũ, và được trả lời rằng Flash Player có quá nhiều mã bên thứ ba có ràng buộc giấy phép, nên việc loại bỏ hoặc xin cấp lại giấy phép để mở mã nguồn có khả năng rất khó hoặc bất khả thi
      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
    • Lý do các công ty thường không làm vậy là vì rủi ro pháp lý. Một số thư viện họ dùng có thể đã được cấp phép theo cách không cho phép mở mã nguồ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ở
    • Việc không công khai mã nguồn mở Flash Player có thể là vì chất lượng mã đáng xấu hổ. Tôi đoán vẫn còn nhiều lỗ hổng chưa được phát hiện
    • Một phần đáng kể đã được công khai rồi[1]. Tất nhiên cũng có thể cho rằng như vậy là chưa đủ
  1. https://github.com/adobe/avmplus
  • Vấn đề là các sản phẩm kiểu này thường dùng thành phần độc quyền của bên thứ ba
    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
  • Tôi tò mò liệu sau khi cái này ra mắt thì có còn có thể tạo tác phẩm mới không
    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ũ
    • Adobe vẫn cung cấp Animate như một phần của Creative Cloud, và có thể dùng nó để tạo movie AS3
      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ừ đó
    • Flash lẽ ra không nên chế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 Windows, vẫn có thể chạy các phiên bản Flash cũ mà không gặp vấn đề gì
      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
    • Ở công ty chúng tôi, chúng tôi vẫn viết mã AS3 mới. Tất cả IDE và công cụ đều chạy tốt trên W10/W11
    • Newgrounds có sự kiện flashforward khoảng mỗi năm một lần
  • Cũng có công cụ thương mại chuyển Flash sang WebAssembly
    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
    • Tôi là nhà phát triển. CheerpX for Flash chạy phiên bản Pepper API của Flash, và phần nói về giấy phép là đúng
      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
  • Hay thật. Trước đây tôi chưa từng thấy
    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
  • Tôi rất ghét cách Adobe giết Flash như thế
    Đú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
    • Không cần âm mưu. Một sản phẩm tạo ra trải nghiệm người dùng tệ hại như vậy là đủ rồi
      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
    • Flash không tốt. Nó tệ cho khả năng truy cập, đóng, chậm và là phương tiện ép hiển thị quảng cáo
      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 đó
    • Nếu Flash chưa bị chấm dứt hỗ trợ, các dự án như Ruffle hẳn sẽ phải làm một việc khó là liên tục đuổi theo một runtime độc quyền vẫn còn được dùng rộng rãi
    • Adobe đã đầu hàng, nhưng thứ thực sự giết nó là Apple, vì không hỗ trợ trên iOS
    • Tôi nhớ lúc nó chết mình đã ăn mừng, nhưng nhìn lại thì nó cũng không tệ đến vậy
      Í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
  • Hơi lạc đề, nhưng nếu có nhân viên Adobe nào ở đây có quyền truy cập tài khoản Adobe Fastly thì có lẽ nên kiểm tra cấu hình Fastly

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...

  • Tôi nhớ hồi còn là sinh viên đã theo dõi việc GNU Gnash cố gắng hỗ trợ AS2 và AS3
    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
    • Rất có khả năng họ không quá khắt khe về giấy phép như GNU