Gnash () – otwartoźródłowy projekt, którego celem jest istnienie odtwarzacza animacji i aplikacji zapisanych w formacie SWF. Jest rozwijany jako część projektu GNU i stanowi wolną alternatywę dla własnościowego odtwarzacza Adobe Flash Player. Program może działać zarówno jako samodzielna aplikacja, jak i jako wtyczka do przeglądarek internetowych obsługujących interfejs NPAPI. W inicjatywie One Laptop per Child Gnash wykorzystywano jako domyślny odtwarzacz treści Flash w laptopach XO (wtyczka dla aktywności przeglądarki internetowej Browse).

Historia Kontekst i potrzeba wolnej alternatywy W połowie lat 2000. format SWF i wtyczka Flash były powszechnie wykorzystywane w sieci do animacji, multimediów i uruchamiania programów w ActionScript (języku zgodnym z ECMAScript). Jednocześnie odtwarzanie tych treści w przeglądarce wymagało zainstalowania własnościowej wtyczki, co było postrzegane jako jedna z barier dla użytkowników wolnych systemów operacyjnych i urządzeń o mniej popularnych architekturach.

W materiałach opisujących genezę Gnasha wskazywano też na uwarunkowania licencyjne i brak pełnej dokumentacji potrzebnej do niezależnej implementacji odtwarzacza, co oznaczało konieczność prowadzenia inżynierii wstecznej formatu i zachowania wtyczki. Z perspektywy FSF i projektu GNU stworzenie wolnego odtwarzacza Flash było na tyle istotne, że Gnash był wymieniany jako projekt „wysokiego priorytetu” (High Priority Project).

Początki projektu Projekt został ogłoszony 20 grudnia 2005 przez Johna Gilmore’a jako nowy projekt GNU, którego celem było stworzenie odtwarzacza zgodnego ze standardami Macromedia „Shockwave Flash” i zdolnego do odtwarzania plików „.swf”, zarówno jako aplikacja samodzielna, jak i wtyczka przeglądarkowa (początkowo dla Firefoksa). W tym samym komunikacie wskazano, że Gnash powstał jako rozwidlenie (fork) projektu GameSWF, którego kod został dostosowany do celu odtwarzania „filmów” Flash i rozwijany dalej na licencji GNU GPL.

W styczniu 2006 FSF ogłosiła włączenie Gnasha do projektu GNU jako wolnego odtwarzacza Flash (SWF) oraz wtyczki dla Firefoksa. Pierwsze wydanie alpha (0.7.1) zostało udostępnione w maju 2006, m.in. z deklarowaną przenośnością na różne dystrybucje GNU/Linux i systemy BSD oraz obsługą architektur innych niż x86.

Przed uruchomieniem Gnasha istniały inne próby tworzenia wolnego odtwarzacza SWF, m.in. projekty Swfdec i GPLFlash. Według relacji jednego z późniejszych deweloperów Gnasha część społeczności związanej z GPLFlash dołączyła następnie do Gnasha po ogłoszeniu oficjalnego projektu GNU.

Projekt został zainicjowany przez Johna Gilmore’a. Głównym deweloperem jest Rob Savoye.

Rozwój i późniejsza aktywność W 2006 roku Gnash był opisywany jako próba wypełnienia „jednej z ostatnich większych luk” na pulpicie GNU/Linux, wynikającej z zależności od własnościowej wtyczki Flash, przy czym projekt wówczas szybko nadrabiał zaległości funkcjonalne i przenośnościowe (m.in. uruchamianie na kolejnych systemach i architekturach).

W lutym 2007, w relacji opublikowanej przez FSF, Rob Savoye informował o uruchomieniu Gnasha na laptopach XO inicjatywy One Laptop per Child jako wtyczki przeglądarkowej.

W kolejnych latach rozwijano m.in. obsługę wideo (w tym strumieniowanie z serwisów takich jak YouTube), a także implementację klas ActionScript 2 i części funkcji nowszych wersji SWF. Ostatnie oficjalne wydanie beta opublikowane na stronie GNU ma numer 0.8.10 i datowane jest na luty 2012.

FSF informowała, że Gnash został usunięty z listy projektów priorytetowych w 2017 roku. W dystrybucjach Linuksa spotykane były później przede wszystkim migawki z repozytorium projektu (np. paczki oznaczane jako 0.8.11~git20160608 w Debianie), co wskazuje na kontynuację utrzymania głównie w formie wersji rozwojowych, bez nowych wydań stabilnych na stronie GNU.

Znaczenie Gnasha jako zamiennika wtyczki przeglądarkowej zmniejszyło się wraz z wycofywaniem technologii Flash z sieci – Adobe zakończyło wsparcie dla Flash Playera 31 grudnia 2020.

Szczegóły techniczne Gnash do renderowania może używać AGG, Cairo lub OpenGL. Do odczytu plików FLV jest używana biblioteka FFmpeg lub GStreamer. W przeciwieństwie do większości projektów GNU, które są napisane w języku C, Gnash jest napisany w C++.

W odróżnieniu od własnościowej wtyczki Flash, dystrybuowanej na ograniczających zasadach licencyjnych (m.in. bez swobody redystrybucji przez dystrybucje), Gnash można kompilować i uruchamiać na wielu systemach i architekturach; podkreślano m.in. uruchamianie na różnych dystrybucjach GNU/Linux i systemach BSD oraz na wybranych platformach wbudowanych. Gnash był dostępny również jako wtyczka przeglądarkowa dla programów obsługujących NPAPI (m.in. Firefox i Konqueror).

Obecnie Gnash obsługuje pliki SWF do wersji 7 i część cech wersji 8 i 9, przy czym SWF w wersji 10 nie jest obsługiwany. W połowie lat 2000. deklarowano również obsługę strumieniowego wideo (m.in. z serwisów takich jak YouTube) oraz odtwarzanie plików FLV, zależne od zainstalowanych bibliotek multimedialnych.

Znaczenie i odbiór Projekt Gnash był przedstawiany w dokumentacji Ubuntu jako jedna z wolnych alternatyw dla zamkniętoźródłowego Adobe Flash Playera; wskazywano także dostępność pakietu mozilla-plugin-gnash w repozytoriach dystrybucji. Gnash przedstawiano jako ważny projekt służący stworzeniu wolnego odpowiednika powszechnie używanej, lecz własnościowej technologii sieciowej.

Ze względu na złożoność technologii Flash projekt Gnash nie oferował pełnej zgodności ze wszystkimi animacjami i aplikacjami SWF; autorzy repozytorium podkreślali, że program „nie obsługuje poprawnie każdego pliku SWF”, a wiele materiałów działa jedynie częściowo.

Linki zewnętrzne GNU Gnash (strona projektu GNU) Gnash Developers Website Wywiad z Robem Savoyem (tłumaczenie na język polski)

Przypisy

Kategoria:GNU Kategoria:Odtwarzacze multimedialne Kategoria:Oprogramowanie na licencji GNU GPL