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

®LINUX-SAUNA @

Oliko useimmilla Linuxille paketoivilla kehittäjillä voimakasta mielipidettä näistä uudemmista paketointitekniikoista ensinkään? Eripurasta puhumattakaan?

Mistäköhän oletettu hyväksynnän lisääntyminen 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 itsessään kaikki tarpeet. Nämä ajetaan omassa rajatussa karsinassa 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 snapeja (Snapcrafters). Sama henkilö on myös rakentanut työkalun snapd:n poistamiseen pakettien automaattinen ajantasaisuus ei sovi kaikkeen käyttöön. Hiomistahan löytyy tietotekniikasta aina.

Ovatko ne toistensa verrokkejakaan?

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. Tästä tuonnempana.

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

Kehittäjän asema

On toimitettu lähempää selontekoa ja kerätty mielipiteitä pienen kehittäjän näkökulmasta. Usein ilmenee seuraavaa: heidän tilannettaan ja työtaakkaansa ei kyetä ottamaan huomioon (tai ymmärretä ulkopuolisena ollenkaan).

Raa’an arkikäytännön kohdalla moni omien käyttötapojensa puolestapuhuja huomaisi varmastikin yhdistävyyden tuoman edun. Kritiikkiä kehittäjille – jotka eivät enää jaksaisi paketoida hajautetusti kuten ennen tulee kuin liukuhihnalta.

Käyttäjienkin olisi hyvä opetella ymmärrystä, mitä vaatimuksensa pitävät sisällään käytännössä. Ymmärrystä lopulta tapahtuukin – kun tietoa hankitaan – ja tunneperäinen joukkovoimaan perustuva vaihde saadaan pois päältä.

Asettuminen toisen ihmisen työpisteelle tekee yleensä ihmeitä armottomimmallekin Linux-puristille, kun ei enää vain lauota vaatimuksia ja lisää työtä nimimerkkien takaa.

Kysymyksiä uusien paketointien arvostelijoille

1. Oletko rakentanut ohjelmapakettia? Snapia, flatpakia, debia, jotain muuta?
2. Oliko kyseessä oma hankkeesi
3. Miten toimitit jakelemisen ja missä mittakaavassa?
4. Oliko hankkeesi ohjelmakoodiltaan avoin / vapaa? Omisteinen / suljettu?

Katsantokulma ja tilanne voi muuttua heti parilla kysymyksellä.

Nämä asiat voisi otta useammin esille – niiden kautta huomataankin vastoin oletetun yleisiä luuloja miksi snapit ja muut uuden ajan paketointiratkaisut ovatkin itseasiassa suosittuja. Ne kehittyvät (niiden kehittäjien toimesta…) jatkuvasti – kaikesta loanheittämisestä niskaan huolimatta.

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

On työtä jonka tavoite on yksinkertaistava yhdistäminen. Jotkut vain käyttävät edelleen tietokonettaan kuten ennen – vielä kotva sitten tavanomaista pakettia hiukan hitaammin käynnistyvästä Firefox-snapista huolimatta.. 😉

Alan henkilö I

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

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

Snap- ja Flatpak sekä erilaiset käyttökohdat

Snapien ja Flatpakien erilaisia käyttökohtia voi havainnoida niiden merkittävien eroavaisuuksien kautta. Nämä 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. Nämä kuuluvat eri kohteisiin. Ne toimivat sulassa sovussa vierekkäin.


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


Snap edustaa Ubuntun omien tarpeiden kattamista. Selvähän se mikä selvä. Canonical on mukautuva yhtiö jolla on myös tapana aloittaa radikaaleja muutoksia (ja niihin on varmasti aina käytännön syynsä). Sensaatiohakuiset puheet kenenkään pakottamisesta ovat hilpeitä.

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

Linuxissa ro näkemykselliset lähtökohdat eri jakeluiden kesken kuuluvat yhtälöön. Ilman ropaamista jonkun tietyn käyttökohdan pariin. Vertaa vaikkapa Kali Linux / HoloISO.

Kehittäjälähtöisyys ei ole vähäpätöisempi kuin käyttäjälähtöisyys ja ne kulkevat siipi siivessä.

Jos sinulla on IoT-järjestelmä; haluat sen turvalliseksi. Haluat sen kehittäjät ensin malliseksi ja käytännön toteutukseltaan olevan käyttökelpoisen tehokas ensitutustumisella. Tehokkuus- ja ylläpito ovat avainasemassa siinä esimerkissä.

Alan henkilö II

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

Kyllä niiden tulee itsestään päivittyä. Kyseessä ei ole arkaluontoisuus tai mikään sellainen. Uusia ominaisuuksia tuoreeltaan. Kaikki tapahtuu silti myös muusta järjestelmästä erillään huoletta ja rajatussa sandboxissaan”.

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

Kehittäjät eivät tee näitä asioita itse. Varsinkaan IoT-firmat eivät halua koota omillaan kokonaista käyttökohdejärjestelmäänsä. Jos sellaiseen lähtevät – kyse onkin siitä että onkin varaa leikitellä karun bisneskuvion lomassa?

Työpöytäkäytössä Snapit toimivat tavalla josta kehittäjät näyttävät juuri pitävän. 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. Automaattiset päivityksetkin voi tarvittaessa pysäyttää.

Sovellusten tuen 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 arvostavat yleisellä tasolla vaivattomuutta. He tykkäävät mahdollisesti myös lisätä uusia maksullisia ominaisuuksia sovelluksiinsa.

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

Snap toimii palvelinnäkökulmasta hienosti siinä miten snapd järjestelee ajastetut työt. Tämä on tehokas työkalu Ubuntun ollen yleisimpiä virtuaalikonelähteitä pilvessä.

On kiitelty miten nopeasti taustaohjelmia (daemonit) saa tarvittaessa käyttöön   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 verrattuna dpkg/apt-osastoon, mutta ei voida puhua kattavasta 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 kera jokaisen Ubuntu-julkaisun kanssa. Jos se toimii ja rakentuu Ubuntu 22.04 LTS:ssä, toimii se myös seuraavassa LTS:ssä sekä 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ää myös kattavaa dokumentaatiota.

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

Entäpä kun kehittäjä alkaisi kokoamaan sovellustaan Flatpakiksi? Mikäli kyseessä on C++ niin homma on suhteellisen vaatimaton. Mikäli kyseessä on mikä tahansa muu kuin C++; vastassa on vaihtoehtojen hämmentävä kirjo.

Kirjastojen saatavuus joita Flatpakin mukaan pitäisi tominnallisuuden takaamiseksi mukaan laittaa, ei ole itsestäänselvää. On korostettava edelleen eri käyttökohtia Snapien ja Flatpakin suhteen.

Ubuntussa muuten on itsessään mukana paljon perustarpeita joita voit liittää snapiisi suoraan dpkg/apt -varastosta.

Alan henkilö III

Esimerkkejä käytännön 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 paketti mutta et löydä kouriintuntuvaa dokumentaatiota mistään?

Päätynet usein salapoliisityön jälkeen lopulta vain katsomaan mitä deb-paketti asentaa, ja laitat tämän tiedon kautta samat mukaan Flatpakiin..

Dokumentaatio olisi saatava kattavaksi Flatpakin kohdalla.

Kehittäjä ja suoraviivaisuus

Eroavaisuutena on siis ajankäyttökin. Kyseessä voi olla hyvin yksinkertainen sovellus. Homman tulisi toimia tarvittaessa ohjeita 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ää että intohimoinen vapaustaistelija …näkee asioita ideologisesti. Käytäntö ja raudanluja liike-elämä on asianosaisten mukaan toinen ulottuvuus joka ei ole meidän tavan kuolevaisten vika.

Tapa jolla kirjastoja Flatpak-asetelmassa käsitellään on siis hajautettua ja selonteot siitä mitä pitäisi tehdä missäkin tilanteessa on vielä liian suurpiirteistä.


“Hajautus on syy sille miksi Flatpak-sovellusta ei voi ajaa vain mallissa Flatpak run firefox (kuten Snapin kohdalla)


Snap ollen kyseessä jopa pelkkä sana ”firefox” riittää mikäli sinulla ei ole samassaa järjestelmässä asennettuna myös .deb pakettia (/usr/bin/firefox).

–Flatpakin kohdalla kuka tahansa voi julkaista oman erillisvarastonsa ohjelmille jaellakseen Flatpakeja. Aivan kuten ikivanhassa ja tehokkaimmin päivitystoimitukset hajottavassa PPA-mallissa. Onneksi on kuitenkin Flathub.


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


Sinulla voi siis olla virallinen ohjelmaversio asennettuna jostakin sekä myös l33t-h4x0r-69:n ikioma vierellä yhtäaikaisesti. Karkeaa mutta totta – erottaako tavan käyttäjä kun kuvake sekä nimi on sama?

Snapin kohdalla, kehittäjä l33t-h4x0r-69 voi edelleen julkaista oman ”ideologisesti puhtaan” tai whatever versionsa, mutta sille vaadittaisiin eri nimi koska Snap-kaupassa sallitaan vain yksi nimivaraus.

Valinta on heti nimenkin kautta selkeämpi?

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

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

<< 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 lähteestä.

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

Vähemmän ajanhaaskuuta 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 etu ilman poikkeuksia – voida käyttää useita ja tuntemattomiakin ohjelmalähteitä – lähteitä X, Y, Ö ja jopa se pelottava Pöö.

Tuo malli on juuri sellainen jota useimmat kehittäjät ja käyttäjät eivät kuitenkaan vaikuta edes haluavan. Sekaannuksen vaarat ovat aivan liialliset. Hajautukselle on ehdottomasti paikkansa ja siinä on enemmän etuja kuin haittoja – mutta ei kaikissa käyttömalleissa!

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 pieneltä elitistiltä pois mitään eri tapaa asentaa sovelluksiaan. Elä ja anna elää*


Kehittäjät haluavat yleisellä tasolla sovelluksensa olevan selkeässä keskittymässä, vailla tarvetta jotenkin ensin vakuuttaa käyttäjille lisätyn erillislähteen turvaa.

Flathub olisi siis varteenotettava vaihtoehto Snap Storelle, mikäli toteutuu että päävoima on siellä. Muuten ajaudutaan jälleen hajanaisuuteen; juuri siihen joka vahingoittaa uusien käyttäjien totuttautumista Linuxiin. Linux-käytön ja tietoisuuden lisääminen on tärkeä asia – se on kansalaisen käyttöjärjestelmäulottuvuus. Käyttö on helppoa yhtenäisyyden kautta aloittelijalle.

PPA-lähteiden lisäykset ovat edelleen yleinen syy päivitysongelmiin Debian-pohjaisissa jakeluissa. Niiden suositteleminen tulisi yksinkertaisesti lopettaa. Ne ovat Linux-kokemukselle haitallisia – PPA-lähteitä ei oltu koskaan tarkoitettu laajaan paketinjakeluun.


Kolmannet osapuolet

Flatpak – parempi kolmansien osapuolten tuki?

Tarkemman tarkastelun jälkeen vastaus on että ei ole parempi: verrattuna Snapeihin kolmansien osapuolten innostus ei ole ainakaan vielä noussut merkittävästi. Moni perinteinen sovellus (Spotify, Krita, Skype, Thunderbird, VLC, vscode…) kantaa Snap Storessa virallisten tekijöiden siunausta.

Lutris -pelikäynnistimen kohdalla on kuitenkin ollut puhetta, soveltuisiko se paremmin (laajemmalti) käyttöön Snapina? Lutriksen snap jäi kesken syystä tai toisesta, mutta sandboxaus on Flatpakissa melko joustamaton. Tämä tuottaa ongelmia tarvittuihin ohjelmakansioihin pääsyyn ja moni peli ei vain sen takia sitten koskaan käynnisty. Snapissa tuo sandbox-rajaus ei ole aivan niin ankara.


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


Nyt lienee jo selvää että Flatpakit ovat mahdollisuuksiltaan hiukan rajoitetumpia Snapeihin verrattuna. Ne soveltuvat vain yksiselitteisesti työpöytäkäyttöön. Snapina voit asentaa jopa mukautetun Linux-ytimesi. Todella: jotkut Linux-jakelut yhdistävät tästä syystä jo molemmat tekniikat. Peruskäyttäjä ei eroa huomaa.

Ohjelmointikielet

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

Python-asiakirjat voivat välillä tarjota esim. vain sellaisen tiedon että käytä jotakin komentosarjaa Githubista (ympätäksesi vaikkapa pip-paketteja). Ei tuollainen riitä.

Voisi olla 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. Tekniikoita verrataan omine vastakohtineen keskenään.

Ideologiset riidat eivät johda mihinkään. Pahimmillaan syntyy toisiaan kyräileviä kaiken yhä edelleen uusiin haaroihin jakaantuvia kuppikuntia. Tämä ei auta ketään ja vahingoittaa Linuxia. Voima piilee ymmärryksen kautta 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 huolestua koskaan mistään kun voit aina tilanteen tullen vaihtaa jakelua joka vastaa omaa mieltymystäsi? Linux on Linux.

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

Canonicalin ei pitäisikään muuttaa taktiikkaansa – käytäntöjään – jotka palvelevat heitä firmanakin tehokkaasti. Jos et pidä heidän tai jonkun muun tahon uusista valinnoista, älä yksinkertaisesti käytä heidän vaihtoehtoaan. Tärkeintä olisi pysyä rakentavana ja kunnioittaa toisten valintoja.

Tyytyväisiä kehittäjiä ja käyttäjiä on paljon. Melkoisen turha luulla että esim. Reddit-yhteisöt ja konsensuksensa nykyisellään edustaisivat maailman napaa tuolla ulkona kaikkine nyansseineen, niin kovin erilaisine ihmisineen ja tilanteineen.

Knoppitietoa

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

Flatpakeja on n. 3000.

♦ 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 vastoin yleistä luuloa pienempiä kuin Flatpakit
  • Snapit ovat suoraviivaisempia asentaa / ylläpitää (yksi keskitetty Canonicalin ohjelmistopaikka) mutta mahdollistaa esim. ”snap install paketti” 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? Tämä artikkeli on kallellaan annissaan Snapin suuntaan – koska siihen suuntaan on eniten väärinkäsityksiä. Flatpak-tuen saat asennettua Ubuntuun täältä.

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

✍️@Kopimi


®LINUX-SAUNA | Apu lämmöllä Linuxiin

      

<= Etusivulle