1P by GN⁺ | ★ favorite | 댓글 1개
  • Ruffle은 Rust로 작성된 오픈소스 Flash Player 에뮬레이터로, 더 이상 기본 지원되지 않는 Flash 콘텐츠를 최신 운영체제와 브라우저에서 다시 실행하게 해줌
  • 데스크톱과 웹을 모두 지원하며, 웹 환경에서는 WebAssembly를 사용함
  • Rust와 WASM의 보장을 활용해 Flash에서 문제로 알려졌던 보안 위험을 피하는 것을 목표로 함
  • 일반 사용자와 웹사이트 소유자 모두 빠르게 설치하고 실행할 수 있도록 구성됨
  • MIT/Apache 2.0 라이선스로 제공되어 자유롭게 사용할 수 있는 무료 오픈소스 프로젝트임

Flash 콘텐츠를 최신 환경에서 실행

  • Ruffle은 Flash 콘텐츠를 최신 환경에서 실행하기 위한 Flash Player 에뮬레이터임
  • 최신 운영체제와 브라우저에서 네이티브로 동작하도록 만들어졌으며, 별도 번거로움 없이 Flash 콘텐츠를 되살리는 데 초점을 둠
  • 구현 언어는 Rust이며, 데스크톱과 웹을 모두 대상으로 함
  • 웹 실행 대상에는 WebAssembly가 사용됨

보안 접근과 배포 조건

  • Rust와 WASM의 보장을 활용해 Flash가 갖고 있던 보안상의 함정을 피하려고 함
  • 사용자와 웹사이트 소유자 모두 빠르게 설치하고 실행할 수 있도록 설계됨
  • MIT/Apache 2.0 라이선스로 배포되는 무료 오픈소스 프로젝트임

댓글과 토론

Hacker News 의견들
  • 이 프로젝트를 1년에 한 번쯤 확인하는데, AS3 지원이 완성에 가까워지는 걸 보니 반가움
    학교 다닐 때 많은 사람처럼 Flash 게임에 시간을 너무 많이 썼고, 게임 역사 일부가 사라지는 게 아쉬웠음
    그래도 Ruffle이 일부라도 되살려 줄 수 있음. 다만 iOS에서 Wolfenstein RPG를 할 방법이 아직 없다는 것도 떠오름. 2010년에 거의 그 게임만 하려고 산 iPod이 있지만 배터리가 영원하진 않을 것 같음. 일단은 Adrenaline Challenge나 하러 가야겠음
    • 18개월 전쯤에는 Ruffle에 AS3 지원이 사실상 없어서 나한테는 결정적인 장애물이었음
      몇 년은 더 걸릴 줄 알고, 그동안은 시한폭탄 없는 마지막 Flash 버전을 설치해서 썼는데 내가 틀려서 다행임 :)
    • 마지막으로 봤을 때는 AS3를 막 시작한 단계였는데, 이렇게 빨리 다가온 게 놀라움
    • iOS에서 Wolfenstein RPG를 못 한다는 건 곧 바뀔 수도 있음 :)
      https://github.com/hikari-no-yume/touchHLE/pull/139
    • 나도 Inishie Dungeon을 다시 할 방법을 아직 찾고 있음
    • Ruffle에 오래된 PR들이 실제로 병합되면 좋겠음
  • Flash 에뮬레이션 얘기는 늘 Flash 게임으로 흘러가지만, 그 밖에도 아직 Flash에 의존하는 정보성 웹사이트를 보존할 수 있다는 큰 장점이 있음
    New York Historical Society의 Slavery in New York 전시에 있는 The Merchant's House 페이지는 물건들을 하나씩 보여 주며 “모든 것이 노예제와 연결되어 있었다”는 걸 설명함. 온라인 전시에는 Flash에 의존하는 정보 조각이 많고, 그중 이 페이지가 개인적으로 가장 좋았음
    Ruffle 같은 프로젝트 덕분에 이런 작업을 유지할 수 있음. 전시가 사라진 지금은 이 글을 볼 수 있는 유일한 방법이고, 방대한 역사 연구의 결과를 계속 활용할 수 있게 해 줌
    다만 같은 전시 사이트의 video galleries는 실패함. 전시를 본 사람들이 전용 부스에서 남긴 영상 클립이어야 하는데, 관련 글을 많이 읽어 보니 당시 뉴욕 시민들이 노예제를 어떻게 봤는지 보여 주는 좋은 자료였던 듯함. “아마추어 홈비디오의 어색함이 있다. 배경 소음, 긴 침묵, 카메라를 피하는 시선들.”이라는 New York Times 문구도 있었음
    약 400개 영상 중 일부일 텐데, 이 페이지에서는 Ruffle이 제대로 동작하지 않음. 보려고 할 때 탭에서 오디오가 잠깐 나온 적은 있어서 뭔가 일어나고는 있는 듯하지만 영상을 본 적은 없음. 이쪽을 더 잘 아는 사람이 무슨 상황인지 알면 좋겠고, 이 자료들이 사라지는 건 아까움
    • 영상 파일은 아직 남아 있음. 예를 들면 https://www.slaveryinnewyork.org/flash/Gallery7Responses2.fl...이고, 브라우저 네트워크 검사기에서도 요청되는 URL을 볼 수 있음
      VLC나 ffplay 같은 도구로 오프라인 재생이 가능하고, 더 현대적인 재생 형식으로 변환하는 것도 가능함
    • 이 내용을 Ruffle 팀에 전달했음. 몇 달 전에 추가된 외부 영상 지원을 개선하는 작업을 하고 있음
  • 몇 년 동안 Adobe Flex용 AS3와 mxml을 작성했음
    AS3는 여러 면에서 ECMAScript 4였고, 시대를 꽤 앞서갔다고 봄. 요즘 우리가 기대하는 많은 것들이 Flash Player 생태계에서는 이미 당연하게 쓰던 기능처럼 느껴짐
    물론 악몽 같은 순간도 있었지만, 브라우저별 JavaScript가 가능하긴 한 건지조차 힘들던 시절에 우리는 꽤 훌륭한 것들을 배포할 수 있었음
    • 나도 여러 해 동안 그 일을 했음
      AS3가 시대를 앞섰다기보다, Steve Jobs와 당시 Adobe CEO 때문에 Flash를 버리면서 우리가 과거로 되돌아간 느낌임
      AS3는 정말 좋았고 배우기 쉬웠으며 여러 개발자가 함께 확장하기에도 안전했음. Flash도 말기에는 꽤 빨라졌는데, 결국 전부 변기로 내려가 버렸음
    • 완전히 동의함. Flash와 AS3로 3D 렌더링 엔진을 만들었고, 지금까지 써 본 개발 플랫폼 중 가장 좋아하는 쪽임
      AS3는 훌륭한 언어였음. Brendan Eich가 Lex Fridman 인터뷰에서 짧게 언급했는데, 브라우저에 들어가지 못한 JavaScript의 잠재적 후계자에 가까웠다는 점이 흥미로웠음. 새로운 표준이 되었으면 좋았을 텐데 아쉬움
  • Adobe Flash는 죽은 건가? Adobe가 더 이상 제품으로 팔지 않는다면 왜 Flash Player 부분을 오픈소스로 공개하지 않았는지 궁금함
    더 이상 소프트웨어를 판매하지 않으면 퍼블릭 도메인으로 남겨야 한다는 법이 있으면 좋겠음
    • 예전 스레드에서 같은 질문을 했는데, Flash Player에 라이선스가 걸린 제3자 코드가 너무 많아서 제거하거나 재라이선스해 오픈소스화하기가 너무 어렵거나 불가능할 가능성이 크다는 답을 들었음
      그래도 관련 명세는 Adobe가 무료로 공개하고 있음
      저작권 기간을 5년 같은 합리적인 수준으로 줄이는 것도 좋겠음. 더 나아가 저작권을 유지하려면 매년 기하급수적으로 늘어나는 세금을 내게 하는 편이 나을 수도 있음
    • 회사들이 보통 그렇게 하지 않는 이유는 법적 위험 때문임. 사용한 라이브러리 중 일부가 오픈소스화를 허용하지 않는 방식으로 라이선스됐을 수 있음
      법을 바꾸면 해결될 수 있음. 예를 들어 골동 소프트웨어 보존법 같은 걸 만들어 어떤 소프트웨어든 오픈소스로 공개할 수 있게 하고, 그 법에 따른 조치와 관련된 소송은 막을 수 있음
      추가 유인도 줄 수 있음. 상업적으로 판매된 모든 소프트웨어는 영구 보관하거나 오픈소스로 공개하도록 요구하는 식임. 법적으로 영구 보관하는 건 비싸니 많은 곳이 오픈소스를 택할 가능성이 큼
    • Flash Player를 오픈소스로 공개하지 않은 건 코드 품질이 망신스러울 수준이어서일 수 있음. 아직 발견되지 않은 취약점도 많을 것 같음
    • 상당 부분은 이미 공개했음[1]. 물론 충분하지 않다고 볼 수도 있음
      1. https://github.com/adobe/avmplus
    • 문제는 이런 제품들이 대개 제3자 독점 구성요소를 썼다는 데 있음
      그래서 코드베이스의 큰 부분을 잘라내지 않고서는 오픈소스화가 불가능한 경우가 많고, 그 작업은 비싸며 공개된 코드의 유용성도 크게 떨어짐
  • 새 작품을 만드는 게 이게 출시된 뒤에도 가능한지 궁금함
    아니면 도구들이 이미 되살리기 어려운 수준이라 사실상 과거 카탈로그를 되살리는 용도에 그칠까?
    물론 과거 카탈로그는 엄청나게 방대하지만, 많은 개발자가 Flash 게임 만들기를 좋아했다는 얘기를 들어서 누군가 충분히 집요하게 Flash 게임 씬을 되살리려 한다면 흥미로울 것 같음
    지금은 꼭 필요하지 않고 매일 발전하는 유망한 웹 표준도 있지만, 그런 게 집요한 사람들을 막은 적은 없음. 아직도 오래된 Nintendo 하드웨어용 새 게임을 만드는 방법을 찾는 사람들이 있음
    • Adobe는 아직 Animate를 Creative Cloud 일부로 제공하고, 이걸로 AS3 무비를 만들 수 있음
      AS2를 원하면 최소 CS6까지는 돌아가야 하고, FLA 지원 범위가 훨씬 넓어서 CS5.5가 더 낫다고 봄. 왜 CS6에서 그걸 제거했는지는 묻지 말 것
      Adobe에 돈 내기 싫다면 Adobe 툴체인의 자유 오픈소스 버전인 Apache Flex를 쓸 수 있음. 물론 명령줄 컴파일러 도구이고 AS3 파일만 컴파일하므로, 그래픽은 따로 만들고 연결해야 함
      벡터 아트라면 SVG를 SWF로 변환하는 방법을 찾고, Flex에서 이상한 클래스 선언 마법으로 메인 SWF에 포함하고, 그로 인해 생기는 미묘한 마스킹 문제까지 처리해야 할 가능성이 큼
    • Flash는 죽지 말았어야 함
      낮은 대역폭에서도 동작하고 크기 조절이 가능한, 플랫폼 간 단일 파일 애니메이션을 만들어 내는 접근성 높은 제작 도구였음
      우리는 아직 그 손실을 메우지 못했음. JavaScript + canvas + 웹 스택은 엉망임. Ruffle 런타임이 빠르게 시작될 수 있다면 새 Flash를 만들기 시작할 것 같음
    • Windows에서는 오래된 Flash 버전을 여전히 문제없이 실행할 수 있음
      macOS에서는 그 버전들이 모두 32비트라 더 복잡함. M1 Mac에서는 Windows VM을 구성해 그 안에서 Flash를 실행하는 편이 낫고, Intel Mac에서는 32비트를 지원하는 마지막 버전인 macOS Mojave를 별도 파티션에 설치할 수 있음
    • 우리 회사에서는 아직도 새로운 AS3 코드를 작성함. 모든 IDE와 도구가 W10/W11에서 잘 돌아감
    • Newgrounds에는 1년에 한 번쯤 flashforward 이벤트가 있음
  • Flash를 WebAssembly로 바꾸는 상용 도구도 있음
    실제로는 WebAssembly 안의 VM에서 Linux 전체를 돌리고, 그 안에서 공식 라이선스가 있는 Adobe Flash Player를 실행함. 그리고 그 Flash 라이선스는 별도로 Harman한테 받아야 하는 듯함. 지금은 Flash 지식재산권을 그쪽이 가진 것으로 보임
    https://labs.leaningtech.com/cheerpx/for-flash
    이들과 아무 관련은 없고, 언젠가 흥미로워서 찾아본 것뿐임
    • 개발자임. CheerpX for Flash는 Flash의 Pepper API 버전을 실행하고, 라이선스 얘기는 맞음
      다만 Flash를 돌리려고 Linux 전체를 에뮬레이션하지는 않음. PPAPI를 에뮬레이션하고 Flash Player를 x86 JIT인 CheerpX에서 실행함
      Yuri가 CXFF 아키텍처를 여기서 설명함:
      https://youtu.be/7JUs4c99-mo?t=1045
      완전한 Linux 시스템 에뮬레이션이 필요하다면 그것도 있음: https://webvm.io
  • 멋지다. 전에는 본 적이 없었음
    인터넷과 젊은 초보 프로그래머들이 Flash와 함께 정말 가치 있는 도구를 잃었다는 생각은 여전히 듦. 보안 모델을 제대로 작동시키지 못한 게 안타까움. Flash 애플릿은 기능이 많았고 진입 장벽도 드물게 낮았음
  • Adobe가 Flash를 그런 식으로 죽인 게 너무 싫음
    문제가 있었던 건 맞지만 대부분의 소프트웨어가 그렇고, Flash는 진짜 시대를 20년쯤 앞섰음. Flash가 죽은 뒤 웹은 말도 안 되게 밋밋해졌음
    내 음모론은 Apple과 Google이 모바일 지원을 강제하려고 Adobe에 돈을 주고 Flash를 죽였다는 것임
    • 음모가 필요 없음. 제품이 그렇게 끔찍한 사용자 경험을 만들면 충분함
      Flash를 한 줄도 써 본 적 없고 쓰고 싶지도 않지만, Flash 사이트들이 얼마나 망가져 있었는지는 아직도 나쁜 기억으로 남아 있음
      위젯이 네이티브처럼 동작하지 않아 눈에 띄었고, Firefox에서는 키보드 포커스 문제가 끊이지 않았으며, 영상 가속은 제대로 되는 것 같지 않아 배터리를 갈아먹었음. 지우려면 Adobe의 Flash 앱을 띄워야 했던 영속 쿠키 같은 개인정보 악몽도 있었고, 권한 처리도 호스트 시스템이나 브라우저를 무시했음
      거의 상시적이던 보안과 안정성 문제도 잊기 어려움. 개인적으로는 Flash가 죽어서 다행임
      Flash는 데스크톱에서도 별로였지만, 모바일이 중요해지던 시기에 모바일에서는 그보다 훨씬 더 나빴기 때문에 죽었음
    • Flash는 별로였음. 접근성에 나빴고, 닫혀 있었고, 느렸고, 광고를 강제로 보여 주는 수단이었음
      애니메이션은 만들 수 있었지만, 당시 우리 대부분이 필요로 하거나 바라던 건 그게 아니었음
      Flash를 좋아한 집단은 마케팅 부서, 그리고 게임 개발자가 되고 싶던 사람들과 그 게임을 하던 10대들뿐이었음
    • Flash가 지원 종료되지 않았다면 Ruffle 같은 프로젝트는 아직 널리 쓰이는 독점 런타임을 계속 따라잡아야 하는 어려운 일을 했을 것임
    • Adobe가 항복하긴 했지만, 실제로 죽인 건 iOS에서 지원하지 않은 Apple이었음
    • 죽었을 때는 축하했던 기억이 있는데, 돌아보면 그렇게 나쁘지만은 않았음
      적어도 개발자 관점에서는 단일 벤더의 배터리 포함 SDK로 작업하는 편이 이 node_modules 암 덩어리보다 훨씬 나음
  • 주제에서 벗어나지만, 여기 Adobe Fastly 계정에 접근할 수 있는 Adobe 직원이 있다면 Fastly 설정을 확인해 봐야 할 것 같음
    오래된 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...
  • 학생이었을 때 GNU Gnash가 AS2와 AS3 지원을 하려던 걸 따라봤던 기억이 있음
    몇 년이 걸렸지만 결국 부분적으로만 동작했음. 당시에는 Flash가 브라우저에서 여전히 지배적이었는데도, Gnash가 죽기 전까지 누구도 제대로 포팅하지 못했음
    Ruffle은 어떻게 이렇게 빨리 동작하게 만들었는지 궁금함
    • GNU처럼 라이선스에 지나치게 엄격하지 않았을 가능성이 큼