Snap- ja flatpak | Erot ohjelmistokehittäjän näkökulmasta

®LINUX-SAUNA @

Snap-pakettien hyväksyntä kasvaa. Oliko useimmilla Linuxille paketoivilla kehittäjillä ääripainavaa mielipidettä ensinkään? Eripurasta puhumattakaan?

Mistäköhän tämä oletettu hyväksynnän lisääntyminen sitten voisi johtua? Yksinkertaista: varsinainen tieto niiden teknisestä kyvystä ja tarkoitusperistä lisääntyy. Käyttäjät ovat vain jatkaneet ohjelmiensa asentamisia napsautuksella.

Snapit ovat ohjelmapaketteja sisältäen kaikki tarpeet kitusissaan ja jotka ajetaan omassa rajatussa hiekkalaatikossaan käyttöjärjestelmään nähden.

Ubuntu Linux käyttää snapd-paketinhallintaa vakiollisesti ja esim. Firefox-selain toimitetaan nykyään virallisesti snap-paketissa. Muita vakiosnappaajia ovat mm. Manjaro Linux, Solus, MakuluLinux, ZorinOS ja KDE Neon.

Mm. Alan Pope (ent. Canonical, firma Ubuntun takana) rakentaa ja ylläpitää snapeja (Snapcrafters). Sama mies on myös rakentanut työkalun poistaa snapd; datakatot ja snapien yksi pääidea, pakettien automaattinen ajantasaisuus ei sovi kaikkeen käyttöön. Hiomista löytyy myös kosolti.

Kaikkia lyhenteitä ja ohjelmistokehitykseen liittyviä peruskaluja ei selitetä sen tarkemmin; asialle vihkiytyneet tietävät hyvin mistä kysymys.

Toistensa verrokkeja?

Snapeja ja flatpakeja ei voi oikeastaan mielekkäästi vertailla, mutta koska näin edelleenkin tehdään, olemme selvittäneet muutaman asianhaaran ohjelmistokehittäjien (ja tavan käyttäjänkin) näkökulmasta.

Suomalaisessa Linuxiin tutustuttavassa LINUX-SAUNA -ryhmässä oli hiljan tästä keskustelua ja idea artikkeliin virisi. Saat sieltä myös vastauksia kysymyksiisi.

Kehittäjän asema

Lähempää selontekoa ja mielipiteitä kehittäjän näkökulmasta. Usein: heidän tilannettaan ei oteta huomioon (tai ymmärretä) käytännön kohdalla laisinkaan, mutta kritiikkiä heille sataa joskus kuin ruoskittuna?

Käyttäjienkin olisi osattava osoittaa ymmärrystä, ja niin lopulta tapahtuukin; hankittuaan tietoa ennen tunneperäistä joukkovoimaan sulautumista muutoksen edessä. Täten on sopivampi asettua toisen ihmisen työpisteelle tutustumaan.

Alkukysymykset arvostelijoille

1. Oletko käyttäjänä milloinkaan itse rakentanut ohjelmapakettia? Snap, flatpak, deb, jokin muu?
2. Oliko kyseessä oma hankkeesi?
3. Oliko se ohjelmakoodiltaan avoin ja vapaa, vaiko omisteinen / suljettu?

Huomaamme; katsantokulma ja tilanne muuttunee heti parilla kysymyksellä.

Kas, nämä asiat hyppäävät usein esille ja niiden kautta huomataankin vastoin oletetun yleisiä luuloja miksi snapit ovatkin itseasiassa suosittuja.

Moni ”vihaaja” ei avaudu (tai oudossa joukkiopuuskassa ehkäpä kykene?) näkemään kokonaisuutta ja erilaisia tarpeita.

Arvon portinvartijat; olisiko aika edes harkita tosiasiaan tutustumista; on lukemattomia eri tapoja, tarpeita ja tottumuksia käyttää tietokonetta.

On työtä jonka tavoite on yksinkertaistava yhdistävyys. Vielä nyt tavanomaista pakettia hiukan hitaammin käynnistyvästä Firefoxista huolimatta.. 😉

Alan henkilö I

Pidetään kaikki Alanit nimettöminä ettei mainittu pieni mutta puuskainen klaani saa haltuunsa väärin toimittavien kehittäjien aivomikrosirun signaalia.

— ”Vastaan yhtiön julkaisupaketeista. Emme voi lähteä mukaan johonkin ideologia ennen toimivuutta -malliinb. On helpompi olla ajatusmaailmaltaan jossakin leirissä kun ei ole asemassa jossa vaaditaan tulosta. Vaaditaan helppoa, kuluttajaystävällistä palvelua, ja tämän kautta ratkaistaan tuleeko leipää pöytään”.

Erilaiset käyttökohdat

Snapien ja flatpakien erilaisia käyttökohtia on hyvä havainnoida niiden merkittävien eroavaisuuksien kautta. Nämä siis eivät ole vaihdokkeja toisiinsa nähden.

Mikä on jokaisen paketointimuodon päätarkoitus Linuxissa? AppImage, Docker, Portage, jne. Laveasta näkökulmasta on todettu; flatpak ei tue järjestelmätason ytimiä ja ajureita. Yllätys taikka ei; Snap tukee.


“Kyse on eri käyttökohteista joille paketointimalli nyökkää silmää iskien tai sitten ei vilkaise samaan suuntaankaan


Snap edustaa luonnollisesti Ubuntun omien tarpeiden kattamista. Selvähän se mikä selvä. Canonical on näkemyksellisen mukautuva yhtiö, jolla on aivan varmasti syynsä. Sensaatiohakuiset puheet pakottamisesta ovat lähinnä hilpeitä.

Kyse ei vain työpöytäsovelluksista kuten Firefox-selain. Ubuntu Core esimerkkinä on jo nyt toimiva järjestelmä, jos arvioit sen tietyn käyttökohdan näkökulmasta.

Linuxissa tietyt lähtökohdat ovat eri jakeluiden kesken ylipäätään osa asiaankuuluvuutta. Ilman ropaamista tietyn käyttökohdan kimppuun. Vertaa vaikkapa Kali Linux / HoloISO.

Alamme näkemään mistä laajuudessa ja lähtökohtatarpeissa on kysymys. Valtavan laajuuden haasteet. Kehittäjälähtöisyys ei ole vähäpätöisempi kuin käyttäjälähtöisyyskään. Kulkevat ihan jopa siipi siivessä…

Käyttökohteet työpöydästä => X

Jos sinulla on IoT-järjestelmä; haluat sen turvalliseksi. Haluat sen ”kehittäjät ensin” malliseksi ja käytännön toteutukseltaan haluat sen olevan käyttökelpoisen tehokas ensitutustumisella!

Alan henkilö II

”Snap kattaa tämän yleisen käyttömallin jo nyt hyvin; sovellukset päivittyvät automaattisesti. Aivan oikeasti; kukaan ei päivitä ”käsin” yhteydessä olevia laitteita kuten auton tietoviihdejärjestelmää, kaiuttimia tai älyhubeja. Haloo!

Juuei; kyllä niiden tulee päivittyä itsestään, uusia ominaisuuksia niiden ilmestyessä tuoreeltaan. Kaikki tapahtuu myös muusta järjestelmästä erillään, huoletta, rajatussa karsinassaan”.

Kuka kantaa pöydän tupaan? Kestääkö se muutakin kuin maljakon?

Kehittäjät eivät tee näitä asioita itse. Harvat yhtiöt, eivätkä varsinkaan IoT-firmat, halua koota omillaan kokonaista käyttökohdejärjestelmäänsä. Jos haluavat tai sellaiseen lähtevät, kyse on varasta leikittelyyn?

Työpöytäkäytössä snapeilla on lievästi erilaiset tavat, mutta kehittäjät näyttävät juuri pitävän niistä. Pycharm:in tai vaikkapa Slack:in kohdalla –  ei haluttaisi toimittaa vain yhtä versiota vailla mahdollisuutta esim. taaksepäin tarvittaessa helposti. Snap-mallissa esim. edelliseen versioon rullaaminen on sujuvaa.

Sovellustuen ylläpito helpottuu merkittävästi sovellusten majaillen mahdollisimman vakiintuneessa ja tutussa tuvassa; ei siis siellä täällä ”vapaasti”..

Käyttäjät

Käyttäjät pitävät yleisellä tasolla vaivattomuudesta. He tykkäävät mahdollisesti myös lisätä uusia ulottuvuuksia näihin sovelluksiinsa.

Tuo onkin yksi syy miksi tilaamisesta palveluna halutaan maksaa. Valtaosa tavallisista ylläpitäjistä ei välitä ideologisista lähtökohdista.

Snap (palvelinnäkökulmasta) toimii hienosti siinä miten snap järjestelee ajastetut työt. Tämä on tehokas työkalu Ubuntun mallissa, joka on yleisimpiä virtuaalikonelähteitä pilvessä.

On kiitelty miten nopeasti saa tarvittaessa käyttöön taustaohjelmia (daemonit) ja vieläpä ilman suoraa systemd:n huomioimista.

Ilmainen myyntivaltti

Snapin valtti on helppokäyttöisyys erilaisten työkalujen kanssa. Selonteot ja dokumentaatio ovat erinomaisella pohjalla. Asioita tekevät ammattilaiset.

Alan-nainen jatkaa:

”Flatpak on kymmenen vuotta vanha mutta dokumentaatio on kelvoton: et pääse sen avulla satamaan saati merelle. Dokumentaatio on hiukan parempaa kuin verraten dpkg/apt-osastoon, mutta oikeasti; ei voida puhua dokumentaatiosta. Kokeile, pety, kokeile, pety taas, jne.”

Ehkäpä asia kuitenkin muuttuu pian? Tarvetta ainakin olisi.


“Molempien mallien tulee toimia omalla sarallaan sulavasti ohjeiden ollessa selvät


Snap pätee samojen ominaisuuksien kanssa jokaiseen Ubuntu-julkaisuun. Jos se toimii ja rakentuu Ubuntu 20.04 LTS:ssä, toimii se myös seuraavassa LTS:ssä ja myös Ubuntu Core:ssa.

-Flatpakin kohdalla kehittäjän pitää ensinnäkin poimia sovellukselleen SDK (työkalusarja). Tämän jälkeen ovat hyvät neuvot kalliit mikäli tarkoitus olisi löytää asiaan myös dokumentaatiota.

Luettelointia kyllä esiintyy freedesktop-verkkosivulla, mutta ei esim. laajempaa sisältökatsausta. Eikä kyllä monien kehittäjien mukaan (ja siltä asia vaikuttaa) ilmene sitäkään kuka ylläpitää tai mitä kirjastoversioita kannetaan.

Entäpä työsarka kun kehittäjäpoloinen alkaisi kokoamaan sovellustaan (flatpakiksi)? Mikäli kyseessä on C++, homma on suhteellisen vaatimaton. Mikäli kyseessä on mikä tahansa muu kuin C++; vastassa on vaihtoehtojen laaja kirjo.

Kirjastojen saatavuus, joita flatpakin mukaan pitäisi tominnallisuuden takaamiseksi mukaan laittaa, ei ole itsestäänselvää.

Ubuntussa itsessään on mukana hyvin paljon tarpeita joita voit liittää snapiisi suoraan dpkg/apt -arkistosta.

Alan henkilö III

Esimerkkejä kokemuksista flatpak / snap.

”Pakkaat sovelluksen joka on kirjoitettu Pythonilla. Se hyödyntää POSTGRES:ia osana sen toimintaa. Snapin kohdalla komennat ”install python3-psycopg2″ snapcraft.yml -tiedostossa ja sehän asentuu”.

Entä flatpak? Kokeilepa asentaa sama kyseinen paketti, mutta et löydä mitään kouriintuntuvaa dokumentaatiota mistään?

Päädyt pitkän salapoliisityön jälkeen lopulta vain katsomaan mitä deb-paketti asentaa, ja asennat tämän tiedon kautta samat flatpakiin..

Milloin, kuka korjaa ainakin dokumentaation kattavaksi flatpakin kohdalla?

Flatpak, kehittäjä, suoraviivaisuus

Eroavaisuutena on siis jopa ajankäyttö. Kyseessä voi olla hyvin yksinkertainen sovellus. Homman tulisi toimia tarvittaessa dokumentaatiota vilkaisemalla.

Karkein flatpakia vastaanpuhuva osa-alue on sen malli ja lähtökohtainen suunnittelupohja. Se on yllättäen melko tarkalleen kaikkea sitä, mistä lähes jokainen vakiintunut pelikehittäjä on Linuxin kohdalla huomauttanut.

”Flatpak on käytännössä valitettavan hajanainen alusta loppuun. Idea ajoaikojen (runtime) ja SDK:iden erillistämisestä, sen sijaan että tarjolla olisi keskitetty yksinkertainen tapa hallinnoida niitä, on itsessäänkin hajanaistamista (lue: hämmentävää).”

On ymmärrettävää; ”intohimoinen vapaustaistelija” näkee asioits ideologisesti. Käytäntö ja raudanluja liike-elämä on toinen ulottuvuus, ja tuohan ei ole meidän tavan ihmisten kenenkään vika.

Se, miten kirjastoja flatpak-tavassa käsitellään, on siis hajanaistettua ja selonteot siitä mitä pitäisi tehdä missäkin tilanteessa, on vielä liian vajavaista tai suurpiirteistä.


“Hajautus on syy sille, miksi flatpak-sovellusta ei voi ajaa vain käskyttämällä flatpak run firefox kuten snapin kohdalla


Snapin ollessa kyseessä, jopa pelkkä sana ”firefox” riittää mikäli sinulla ei ole samalla järjestelmässä .deb pakettia (/usr/bin/firefox).

–Flatpakin kohdalla taas kuka tahansa voi julkaista oman ”erillispalvelimensa” jaellakseen flatpakeja. Aivan kuten ikivanha PPA-malli.


“Miksi Flathub ei lähteenä asennu aina flatpak-tuen lisäämisen kautta esim. riippuvuutena?


Sinulla voi siis olla virallinen Mozilla Firefox -versio asennettuna sekä myös 1337h4x0r69:n ikioma mahdollinen prötöversio siinä vierellä järjestelmässäsi yhtäaikaisesti. Karkeaa mutta totta. Erottaako tavan käyttäjä?

Snapin kohdalla, kehittäjä 1337h4x0r69 voi edelleen julkaista oman ”ideologisesti puhtaan” versionsa Mozillan Firefoxista, mutta sille vaadittaisiin eri nimi koska Snap-kaupassa sallitaan vain yksi nimivaraus.

Tässä tapauksessa tulisi ajaa esim. 1337h4x0r69-firefox**. Homman ja paketin ero on heti nimen kautta paljastuen selkeämpi? Heti huomattavissa?

Mozilla halusi nimenomaan itse virallisen Firefox snap-paketin. Kun Mozilla lähestyi Canonical:ia, oli heillä mielessään oma etu ja näihin totisesti sisältyi yksinkertaistaminen.

Mozillan ilmaisua heidän lähestyttyään Canonicalia asiassa:

<< Monialustainen tuki: snapia voidaan ajaa kaikissa jakeluissa joissa snapd on asennettuna – nyt ja tulevaisuudessa.

Aitous: saat aidon ja puhtaan Firefoxin. Sellaisena kuin se on tarkoitettu, suoraan alkulähteestä.

Vaivattomat päivitykset: turvapäivitykset suoraan ja nopeasti Mozillalta.

Vähemmän ajanhaaskaamista huoltotoimenpiteisiin – enemmän aikaa ominaisuuksien kehittämiseen: yhteisökehittäjätkin voivat keskittyä innovaatioon tuen kanssa kamppailun sijaan >>

Hajautus aina etuna?

Isohko ongelma on väitetty ”poikkeukseton etu” voida käyttää kaikkia näitä eri etäpesäkkeitä, ohjelmalähteitä, lähteitä X, Y, Ö ja Pöö.

Moinen malli on juuri sellainen, jota useimmat kehittäjät ja käyttäjät eivät kuitenkaan vaikuta edes haluavan. Sekaannuksen vaarat ovat ilmeiset.

Flatpak-mallissa ei ole aina oletuksena käytössä turvallisuutta lisäävää hiekkalaatikointia, sandbox.

Valtaosa haluaa tavanomaisesti (ymmärrettävästi), sovellusten olevan tarjolla samasta virallisen tahon ylläpitämästä pisteestä. Ja vaihtoehtoja ei poisteta.


“Kukaan ei vie äidin pikku elitistiltä pois mitään eri tapaa haalia sovelluksia. Elä ja anna elää.


Kehittäjät haluavat siis yleisellä tasolla sovelluksensa olevan selkeässä keskittymässä, vailla tarvetta jotenkin ensin vakuuttaa käyttäjiä lisäämään jälleen erillislähteen, ennen kuin tuo sovellus voidaan asentaa.

Flathub olisi siis varteenotettava vaihtoehto Snap Storelle, vaan kun se ei näytä toteutuvan. Ajaudutaan jälleen hajanaisuuteen; juuri siihen, joka vahingoittaa uusien käyttäjien tottumista Linuxiin alustavasti.

Flatpak-lähteiden kohdalla kyse on samasta vanhasta ”PPA-lähteiden” kankeasta (ja turvattomasta) lisäämisestä copy-pastena päätteen kautta.

PPA-lähteiden lisäykset ovat yleinen syy tulevaisuuden päivitysongelmiin Debian-pohjaisissa jakeluissa.


Kolmannet osapuolet

Omaako flatpak sitten paremman kolmansien osapuolten tuen?

Tarkemman tarkastelun jälkeen vastaus on ei: snapeihin verrattuna kolmansien osapuolten tuki on luottamusta herättämätöntä. Moni perinteinen sovellus (Spotify, Krita, Skype, Thunderbird, VLC, vscode…) kantaa Snap Storessa virallista lippua virallisilta tekijöiltä.

Vertaa: ”vastaavia” (epävirallisia) flatpakeja ylläpitävät usein vapaaehtoiset omalla ajallaan ja tavallaan.

Kuulostaa karkealta, tilanteen kuitenkin ollen tuo.

Poikkeuksia; Lutris -pelikäynnistimen kohdalla on kuitenkin ollut puhetta, soveltuisiko se paremmin (laajemmalti) käyttöön snapina? Lutriksen snap jäi (paineen alla?) kesken.


“Kaikki keskittämiseen liittyvät asiat eivät aina ole pahasta


Kuten nyt jo on selvää, flatpakit ovat mahdollisuuksiltaan rajoitetumpia snapeihin verrattuna. Ne soveltuvat vain yksiselitteisesti työpöytäkäyttöön. Snapina voit asentaa jopa mukautetun Linux-ytimesi.

Ohjelmointikielet

Työkalut jotka ovat tarjolla ohjelmointikieltä kohti, ovat niin ikään hajanaistettuina ja dokumentaatio flatpakin kohdalla vajavaista.

Python-asiakirjat voivat kertoa esim. että käytä jotakin komentosarjaa Githubista (ympätäksesi vaikkappa pip-paketteja). Ei herätä luottamusta?

Tämä sen sijasta, että sinulla olisi kotoperäisen sulautettu tapa käyttää noita samoja tarvittuja pip-paketteja (kuten mihin useimmat Python-kehittäjät ovat tottuneet).

Mikään tekniikka ei ole ihmisen tuotoksena suurilta ongelmilta vapaata: suurin virhe on kuitenkin alkaa samaistamaan joitakin tyystin erilaisia malleja ja tekniikoita, omine rajoituksineen, keskenään.

Ideologiset riidat eivät johda mihinkään. Pahimmillaan syntyy toisiaan kyräileviä kaiken yhä edelleen jakavia kuppikuntia. Tämä ei auta ketään ja vahingoittaa Linuxia. Voima piilee, jälleen kerran, arvaatko? –Yhteistyössä.

Snap on Ubuntun näkökulmasta siis erittäin toimiva tekniikka omiin tarkoitusperiinsä eikä pakota ketään käyttämään mitään.

Miksi niin moni kokenut käyttäjä ei käytäkään vapauttaan saavuttamassaan vapaudessa nyt sitten? Voit tehdä järjestelmällesi mitä haluat.

Canonicalin ei ilmeisesti pitäisikään muuttaa tuosta vain taktiikkaansa ja käytäntöjään jotka palvelevat tehokkaasti. Jos et pidä heidän valinnoistaan, älä yksinkertaisesti käytä heidän tekniikoitaan?

Tyytyväisiä kehittäjiä ja käyttäjiä on paljon. Melkoisen turha luulla että Reddit-yhteisöt nykyisellään edustaisivat maailmaa tuolla ulkona kaikkine nyansseineen.

Knoppitietoa

Montako snap-pakettia Snap-kaupassa jo on? Tarkista itse: https://snapcraft.io/search?q=+ (tuhansia).

Flatpakeja on n. 1500.

♦ Flatpak on saatavilla tällä hetkellä ainakin 33 Linux-käyttöjärjestelmään

♦ Snapd on saatavissa ainakin 19 Linux-jakelussa

  • Snapit ovat saman ohjelmapaketin vertailussa usein kooltaan pienempiä kuin flatpakit
  • Snapit ovat suoraviivaisempia asentaa / ylläpitää (yksi keskitetty Canonicalin ohjelmistopaikka) mutta mahdollistaa esim. ”snap install xyz” aina
  • Flatpakit vaativat edelliseen nähden ohjelmistolähteiden hallinnointia
  • Snapit tukevat myös palvelinsovelluksia (kun taas flatpakit toimivat vain työpöydällä)

Miksi siis kukaan olettaa että Canonical hylkäisi snapit ja siirtyisi käyttämään flatpak-tekniikkaa?

Siinäpä kysymys. Miksi kukaan tosiaankaan olettaisi näin, jos on ottanut selvää asioiden tolasta ja taustoista kehittäjien- ja tekijöiden näkökulmasta.


“Snapit toimivat nykyään hyvin. Jopa ohjelmat kuten Android Studio jotka vaativat järjestelmäpääsyä, toimivat nekin toivotusti„ ~Alan


Elämme mielenkiintoisia aikoja. Yhdentyminen on käynnissä. Flätit, snäpit ja häkit! Kaikkiko vielä jopa nippuun? Pian selviää. Linux on tullut kaikenlaiseen käyttöön jäädäkseen.

✍️@Kopimi


®LINUX-SAUNA @