Ruffle: emulador do Flash Player
(ruffle.rs)- Ruffle é um emulador de Flash Player de código aberto escrito em Rust, que permite executar novamente conteúdo Flash, que não é mais suportado por padrão, em sistemas operacionais e navegadores modernos
- Suporta desktop e web, e no ambiente web usa WebAssembly
- Tem como objetivo evitar os riscos de segurança pelos quais o Flash ficou conhecido, aproveitando as garantias de Rust e WASM
- Foi projetado para que tanto usuários comuns quanto proprietários de sites possam instalar e executar rapidamente
- É um projeto gratuito e de código aberto, disponibilizado sob a licença MIT/Apache 2.0
Executando conteúdo Flash em ambientes modernos
- Ruffle é um emulador de Flash Player para executar conteúdo Flash em ambientes modernos
- Foi criado para funcionar nativamente em sistemas operacionais e navegadores modernos, com foco em trazer de volta conteúdo Flash sem complicação adicional
- A linguagem de implementação é Rust e o projeto atende tanto desktop quanto web
- Para execução na web, é usado WebAssembly
Abordagem de segurança e condições de distribuição
- Busca evitar as armadilhas de segurança que o Flash tinha, aproveitando as garantias de Rust e WASM
- Foi projetado para que tanto usuários quanto proprietários de sites possam instalar e executar rapidamente
- É um projeto gratuito e de código aberto distribuído sob a licença MIT/Apache 2.0
1 comentários
Opiniões no Hacker News
Como muita gente, passei tempo demais jogando jogos em Flash na época da escola, e era triste ver uma parte da história dos games desaparecer.
Ainda assim, o Ruffle consegue trazer pelo menos uma parte disso de volta. Só que também me lembra que ainda não há como jogar Wolfenstein RPG no iOS. Tenho um iPod que comprei em 2010 quase só para jogar esse jogo, mas acho que a bateria não vai durar para sempre. Por enquanto, vou jogar Adrenaline Challenge.
Achei que ainda levaria alguns anos; enquanto isso, usei a última versão do Flash sem bomba-relógio instalada, mas fico feliz por estar errado :)
https://github.com/hikari-no-yume/touchHLE/pull/139
A página The Merchant's House, da exposição Slavery in New York da New York Historical Society, mostra objetos um por um e explica que “tudo estava ligado à escravidão”. A exposição on-line tem muitos trechos informativos que dependem de Flash, e essa página era pessoalmente a minha favorita.
Projetos como o Ruffle permitem manter esse tipo de trabalho. Agora que a exposição desapareceu, é a única forma de ver esse texto, e permite continuar aproveitando o resultado de uma enorme pesquisa histórica.
Porém, as galerias de vídeo do mesmo site da exposição falham. Deveriam ser clipes de vídeo deixados por pessoas que visitaram a exposição em uma cabine dedicada; pelo que li em vários textos relacionados, pareciam ser um ótimo material para mostrar como nova-iorquinos da época viam a escravidão. Havia também uma frase do New York Times: “Há a estranheza dos vídeos caseiros amadores. Ruído de fundo, longos silêncios, olhares desviando da câmera.”
Devem ser parte de cerca de 400 vídeos, mas nessa página o Ruffle não funciona direito. Ao tentar assistir, em algum momento saiu um pouco de áudio da aba, então parece que algo está acontecendo, mas nunca vi o vídeo. Seria bom se alguém que entende melhor disso soubesse o que está acontecendo; é uma pena perder esses materiais.
Dá para reproduzir offline com ferramentas como VLC ou ffplay, e também é possível convertê-los para um formato de reprodução mais moderno.
Em muitos aspectos, AS3 era ECMAScript 4, e considero que estava bem à frente de seu tempo. Muitas coisas que hoje esperamos já pareciam recursos usados como algo natural no ecossistema do Flash Player.
Claro que também houve momentos de pesadelo, mas, numa época em que até fazer JavaScript funcionar em diferentes navegadores era difícil, conseguimos entregar coisas muito boas.
Mais do que AS3 estar à frente do tempo, a sensação é que voltamos ao passado quando abandonamos o Flash por causa de Steve Jobs e do CEO da Adobe na época.
AS3 era realmente bom, fácil de aprender e seguro para vários desenvolvedores expandirem juntos. O Flash também ficou bem rápido no fim, mas no final tudo foi jogado descarga abaixo.
AS3 era uma linguagem excelente. Brendan Eich a mencionou brevemente na entrevista com Lex Fridman, e achei interessante o fato de ela ter sido quase uma sucessora em potencial do JavaScript que não chegou aos navegadores. É uma pena; teria sido bom se tivesse virado o novo padrão.
Seria bom se existisse uma lei dizendo que, quando um software não é mais vendido, ele deve ser deixado em domínio público.
Ainda assim, a Adobe disponibiliza gratuitamente as especificações relacionadas.
Também seria bom reduzir o prazo de copyright para algo razoável, como 5 anos. Indo além, talvez fosse melhor exigir o pagamento de um imposto anual que crescesse exponencialmente para manter o copyright.
Mudar a lei poderia resolver. Por exemplo, criar algo como uma lei de preservação de software antigo, permitindo que qualquer software seja publicado como open source e impedindo processos relacionados a medidas tomadas sob essa lei.
Também daria para oferecer incentivos adicionais. Por exemplo, exigir que todo software vendido comercialmente seja preservado permanentemente ou publicado como open source. Como a preservação permanente por meios legais é cara, muitas empresas provavelmente escolheriam abrir o código.
Por isso, muitas vezes é impossível abrir o código sem cortar grandes partes da base de código, e esse trabalho é caro, além de reduzir muito a utilidade do código publicado
Ou será que as ferramentas já estão em um estado tão difícil de ressuscitar que, na prática, isso vai se limitar a recuperar catálogos antigos?
Claro que o catálogo antigo é gigantesco, mas ouvi dizer que muitos desenvolvedores gostavam de criar jogos em Flash, então seria interessante se alguém insistisse o bastante para tentar reviver a cena de jogos em Flash
Hoje isso não é exatamente necessário, e há padrões web promissores que evoluem todos os dias, mas coisas assim nunca impediram pessoas obstinadas. Ainda há gente encontrando formas de criar jogos novos para hardware antigo da Nintendo
Se você quiser AS2, precisa voltar pelo menos até o CS6, e eu diria que o CS5.5 é melhor, porque tem uma cobertura muito maior de suporte a FLA. Não me pergunte por que removeram isso no CS6
Se não quiser pagar à Adobe, você pode usar o Apache Flex, a versão livre e open source da toolchain da Adobe. Claro, é uma ferramenta de compilação de linha de comando e só compila arquivos AS3, então você precisa criar os gráficos separadamente e vinculá-los
Se for arte vetorial, é bem provável que você tenha que encontrar uma forma de converter SVG para SWF, incluí-la no SWF principal com alguma magia estranha de declaração de classes no Flex e ainda lidar com os problemas sutis de mascaramento que surgirem daí
Era uma ferramenta de criação acessível para produzir animações multiplataforma em arquivo único, escaláveis e que funcionavam mesmo com baixa largura de banda
Ainda não compensamos essa perda. JavaScript + canvas + a stack web são uma bagunça. Se o runtime do Ruffle conseguir iniciar rapidamente, acho que eu começaria a criar Flash novo
No macOS, é mais complicado porque todas essas versões são 32 bits. Em um Mac M1, é melhor configurar uma VM Windows e executar o Flash dentro dela; em Macs Intel, dá para instalar o macOS Mojave, a última versão com suporte a 32 bits, em uma partição separada
Na prática, ela roda um Linux inteiro dentro de uma VM em WebAssembly e, dentro dele, executa o Adobe Flash Player oficialmente licenciado. E parece que essa licença do Flash precisa ser obtida separadamente com a Harman. Pelo visto, hoje os direitos de propriedade intelectual do Flash ficam com eles
https://labs.leaningtech.com/cheerpx/for-flash
Não tenho nenhuma relação com eles; só pesquisei isso um dia por curiosidade
Porém, ele não emula um Linux inteiro para rodar Flash. Ele emula a PPAPI e executa o Flash Player no CheerpX, que é um JIT x86
O Yuri explica a arquitetura do CXFF aqui:
https://youtu.be/7JUs4c99-mo?t=1045
Se você precisa de emulação de um sistema Linux completo, isso também existe: https://webvm.io
Ainda acho que a internet e jovens programadores iniciantes perderam uma ferramenta realmente valiosa com o Flash. É uma pena que não tenham conseguido fazer o modelo de segurança funcionar direito. Applets em Flash tinham muitos recursos e uma barreira de entrada raramente baixa
Sim, ele tinha problemas, mas a maior parte dos softwares também tem, e o Flash estava de fato uns 20 anos à frente de seu tempo. Depois que o Flash morreu, a web ficou ridiculamente sem graça
Minha teoria da conspiração é que a Apple e o Google pagaram a Adobe para matar o Flash a fim de forçar o suporte a mobile
Nunca escrevi uma linha de Flash e nem quero, mas ainda guardo más lembranças de como os sites em Flash eram quebrados
Os widgets chamavam atenção por não se comportarem como nativos, no Firefox havia problemas constantes de foco do teclado, a aceleração de vídeo nunca parecia funcionar direito e devorava a bateria. Havia também pesadelos de privacidade, como cookies persistentes que exigiam abrir o app Flash da Adobe para apagar, e o tratamento de permissões ignorava o sistema hospedeiro ou o navegador
Também é difícil esquecer os problemas quase constantes de segurança e estabilidade. Pessoalmente, fico feliz que o Flash tenha morrido
O Flash já era ruim no desktop, mas morreu porque, na época em que o mobile estava se tornando importante, era muito pior no mobile
Dava para criar animações, mas isso não era o que a maioria de nós precisava ou queria na época
Os únicos grupos que gostavam de Flash eram departamentos de marketing e pessoas que queriam ser desenvolvedores de jogos, além dos adolescentes que jogavam esses jogos
Pelo menos do ponto de vista de desenvolvimento, trabalhar com um SDK de um único fornecedor, com tudo incluído, é muito melhor do que esse tumor de node_modules
Ao acessar posts antigos em blogs.adobe.com, agora aparece este erro ao vivo:
Fastly error: unknown domain: blogs.adobe.com. Please check that this domain has
been added to a service.
O erro acima veio desta URL: https://blogs.adobe.com/asset/2012/06/inside-flash-player-pr...
Levou alguns anos, mas no fim só funcionava parcialmente. Na época, o Flash ainda dominava os navegadores, mas ninguém conseguiu portar direito o Gnash antes de ele morrer
Fico curioso para saber como o Ruffle conseguiu fazer isso funcionar tão rápido