1 pontos por GN⁺ 2023-10-23 | 1 comentários | Compartilhar no WhatsApp
  • 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

 
GN⁺ 2023-10-23
Opiniões no Hacker News
  • Dou uma olhada neste projeto mais ou menos uma vez por ano, e é bom ver que o suporte a AS3 está chegando perto de ficar completo.
    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.
    • Há uns 18 meses, o Ruffle praticamente não tinha suporte a AS3, o que para mim era um bloqueio decisivo.
      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 :)
    • Da última vez que vi, eles estavam só começando com AS3, então é surpreendente ver que chegou tão rápido.
    • A impossibilidade de jogar Wolfenstein RPG no iOS talvez mude em breve :)
      https://github.com/hikari-no-yume/touchHLE/pull/139
    • Eu também ainda estou procurando uma forma de jogar Inishie Dungeon de novo.
    • Seria ótimo se os PRs antigos do Ruffle fossem realmente mesclados.
  • Quando se fala em emulação de Flash, a conversa sempre acaba indo para jogos em Flash, mas há também a grande vantagem de preservar sites informativos que ainda dependem de Flash.
    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.
    • Os arquivos de vídeo ainda estão lá. Por exemplo, https://www.slaveryinnewyork.org/flash/Gallery7Responses2.fl..., e também é possível ver as URLs solicitadas no inspetor de rede do navegador.
      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.
    • Encaminhei isso para a equipe do Ruffle. Eles estão trabalhando para melhorar o suporte a vídeos externos, que foi adicionado há alguns meses.
  • Escrevi AS3 e mxml para Adobe Flex durante alguns anos.
    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.
    • Eu também fiz isso por vários anos.
      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.
    • Concordo totalmente. Criei um motor de renderização 3D com Flash e AS3, e ele está entre as plataformas de desenvolvimento de que mais gostei até hoje.
      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.
  • O Adobe Flash morreu? Se a Adobe não o vende mais como produto, fico me perguntando por que não abriu o código da parte do Flash Player.
    Seria bom se existisse uma lei dizendo que, quando um software não é mais vendido, ele deve ser deixado em domínio público.
    • Fiz a mesma pergunta em um tópico antigo, e a resposta que recebi foi que o Flash Player tinha tanto código de terceiros licenciado que provavelmente seria muito difícil, ou impossível, removê-lo ou relicenciá-lo para abrir o código.
      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.
    • O motivo pelo qual as empresas normalmente não fazem isso é o risco jurídico. Algumas das bibliotecas usadas podem ter sido licenciadas de uma forma que não permite abertura de código.
      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.
    • O motivo de o Flash Player não ter sido publicado como open source pode ser que a qualidade do código fosse embaraçosa. Imagino que ainda haja muitas vulnerabilidades não descobertas.
    • Eles já publicaram uma boa parte[1]. Claro que dá para argumentar que não é suficiente.
  1. https://github.com/adobe/avmplus
  • O problema é que produtos assim geralmente usavam componentes proprietários de terceiros
    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
  • Fico curioso para saber se ainda será possível criar obras novas depois que isso for lançado
    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
    • A Adobe ainda oferece o Animate como parte da Creative Cloud, e com ele é possível criar filmes em AS3
      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í
    • O Flash não deveria ter morrido
      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 Windows, ainda é possível executar versões antigas do Flash sem problemas
      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 nossa empresa, ainda escrevemos código AS3 novo. Todas as IDEs e ferramentas rodam bem no W10/W11
    • O Newgrounds tem um evento flashforward mais ou menos uma vez por ano
  • Também existe uma ferramenta comercial que transforma Flash em WebAssembly
    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
    • Sou desenvolvedor. O CheerpX for Flash executa a versão do Flash para Pepper API, e a parte da licença está correta
      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
  • Legal. Eu nunca tinha visto isso antes
    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
  • Odeio o jeito como a Adobe matou o Flash
    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
    • Não é preciso conspiração. Basta que o produto crie uma experiência de usuário horrível daquele jeito
      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
    • O Flash era ruim. Era péssimo para acessibilidade, fechado, lento e um meio de enfiar anúncios goela abaixo
      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
    • Se o Flash não tivesse sido descontinuado, projetos como o Ruffle teriam a tarefa difícil de continuar correndo atrás de um runtime proprietário ainda amplamente usado
    • A Adobe se rendeu, mas quem de fato matou foi a Apple, ao não dar suporte no iOS
    • Lembro de ter comemorado quando ele morreu, mas, olhando para trás, não era tão ruim assim
      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
  • Fugindo do assunto, mas se houver algum funcionário da Adobe aqui com acesso à conta Fastly da Adobe, acho que seria bom verificar a configuração do Fastly

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

  • Lembro de ter acompanhado, quando eu era estudante, a tentativa do GNU Gnash de dar suporte a AS2 e AS3
    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
    • É bem provável que não tenham sido rígidos demais com licenças, como o GNU