Jos teen Ubuntulle ohjelman, niin voinko olettaa sen toimivan vielä viiden t. 10 vuoden kuluttua uusimmalla Ubuntu-jakelulla (LTS) jos en siihen tee päivityksiä?
Kuinka usein tekijän kuuluisi tarjota päivityksiä ohjelmiinsa jos tarkoituksena on vain se, että ohjelma toimisi aina uusimmissa Ubuntun LTS-jakeluissa (ei siis erikseen mitään turvallisuuspäivityksiä, vaan ainoastaan toimimisen mahdollistavia päivityksiä)?
Kuinka usein tekijän kuuluisi tarjota päivityksiä ohjelmiinsa jos tarkoituksena on vain se, että ohjelma toimisi aina uusimmissa Ubuntun LTS-jakeluissa (ei siis erikseen mitään turvallisuuspäivityksiä, vaan ainoastaan toimimisen mahdollistavia päivityksiä)?
Vastaukset 5
Vanhimmat
Usein riittää vain pelkkä kääntäminen. Ja jos ohjelman toimintaan ei tule muutoksia niin ei tarvitse tehdä yhtään mitään. Tämä edellyttää ohjelman tarvitsemat kirjastot eivät muut kovin radikaalisesti. Esimerkiksi Qt 3 oli pitkään tuettuna ja nyt taitaa olla 12.4 että Qt 3:sen aikaiset kirjastot eivät ole mukana. Mutta nekin on kait jostakin netin syövereistä saatavilla joten niiden käyttäminen on mahdollista jos viitselisäisyyttä löytyy.
Qt mielestäni pitää sisällään Ubuntu 12.04 LTS:ssä Qt3 tuen taaksepäin yhteensopivuussyistä. Ubuntu 14.04 LTS:stä se varmaan rapsitaan pois kun on jo Qt 5.
Noin yleisesti ottaen, Ubuntulle desktop sovellukset kannattaa ehdottomasti tehdä Qt:llä. Se on sille se natiivein alusta ja ollut suositeltavin tapa tehdä Ubuntulle desktop ohjelmia jo Ubuntu 10.04 LTS:ssä. Ubuntu 6.06 LTS ja 8.04 LTS:llä suositeltavin tapa tehdä desktop sovelluksia oli GTK 2, jotka toimivat niinikään edelleen.
Java on sitten ennemminkin sellaisille sovelluksille kun haluaa saman käännöksen toimivan sellaisenaan kaikkialla mihin vaan saa Java tuen. Esim. sekaympäristössä kun haluaa ns. portable sovelluksen mitä käyttää muistitikulta niin Java on tässä asiassa loistava.
Javalla on muitakin eritysominaisuuksia joiden vuoksi sitä kannattaa käyttää mutta se ei kyllä ole se Ubuntun natiivirajapinta samalla tavalla kuin Qt.
"Jos teen Ubuntulle ohjelman, niin voinko olettaa sen toimivan vielä viiden t. 10 vuoden kuluttua uusimmalla Ubuntu-jakelulla (LTS) jos en siihen tee päivityksiä?"
Ubuntulla ei ole muuta taaksepäinyhteensopivuus käytäntöä kuin se mitä LSB standardi ja Java tarjoavat.
Javalla tehdyn sovelluksen voi olettaa toimivan kolme JAVA julkaisua eteenpäin, eli Java 7 sovelluksen voi olettaa toimivan Java 10:ssä ja se Ubuntu LTS missä on Java 10 valmiina, pyörittää sovellusta tämän Ubuntu LTS:n elinkaaren loppuun saakka. Java näyttäisi uudistuvan nykyään parin vuoden välein, että odotettavasti 10v toimii.
LSB:ssä taaksepäinyhteensopivuus menee niin, että ennen kuin taaksepäin yhteensopivuutta rikotaan, siitä ilmoitetaan 6v etukäteen. Eli kun tähtää sovelluksen jollekin LSB versiolle, voi odottaa ohjelman toimivan vähintään 6v ja sen hetkisen Ubuntu LTS:n elinkaaren loppuun saakka.
Sellainen huomio kyllä, että Canonical ei välttämättä jatkossa aio täysin sitoutua LSB:n vaan seuraavassa Ubuntu LTS:ssä on X ikkunointi laitettu sivuraiteelle, ja Ubuntu kehittyy muutenkin nopeammin kuin mitä standardi pysyy perässä, että mikäli poistavat Ubuntusta LSB tuen ja alustaa muutetaan, ei ole varmuutta siitä että ohjelmat toimisivat seuraavalla LTS:llä. Toistaiseksi voidaan odottaa, että LSB ohjelmat toimisivat seuraavat 10v mikäli niihin ei tehdä suoraa riippuvuutta X ikkunointiin vaan käytetään Qt rajapintaa graafisissa sovelluksissa.
Kolmas tapa tehdä pitkäikäinen ohjelma on käyttää webbitekniikkaa. Javascript on sen verran vakiintunut standardi, että ohjelman voi odottaa yli 10v vaikka selainta päivitetään.
...
Yleisesti ottaen, mitä enemmän ohjelma tekee riippuvuuksia, sitä herkemmin se hajoaa muutoksissa.
"Kuinka usein tekijän kuuluisi tarjota päivityksiä ohjelmiinsa jos tarkoituksena on vain se, että ohjelma toimisi aina uusimmissa Ubuntun LTS-jakeluissa (ei siis erikseen mitään turvallisuuspäivityksiä, vaan ainoastaan toimimisen mahdollistavia päivityksiä)?"
Helpointa olisi 6kk välein uuden Ubuntun väliversion yhteydessä kokeilla kääntää ohjelma ja päivittää koodia niin, että siivoaa vanhentuneiden rajapintakutsujen tekemät muutokset ajan tasalle (ja samalla testaa hajoaako) ja jokaisen Ubuntu LTS:n yhteydessä vaikka päivittää, niin sitten uusin versio säilyy pidempään ehjänä kun vanhentuneet jutut on siivottu pois. Tämän voisi vielä tehdä niin, että tekee ajonaikaisen tarkistuksen, että tarkistaa alustan version ja haaroittaa koodia niin, että uudemmilla käyttisversiolla käytetään uudempaa koodia ja siivoaa ne vanhat koodit vasta sitten kun seuraavan (tai sitä seuraavan) kerran uusii käyttistä. Näin varmistaisi sen, että ohjelma toimii vähintäänkin kahdessa uusimassa Ubuntu LTS:ssä tai vaikka kolmessa uusimassa Ubuntu LTS:ssä.
Noin muuten sitten, vähintään niin usein pitäis päivittää kunnes ohjelma hajoaa. Ubuntun väliversioilla voi testata tulevia muutoksia että voi ennakoida ongelmia.
Ohops.. Kyse olikin aina uusimmalla LTS:llä toimimisesta,
Sitten kyse olisi vuosimäärän sijaan "kolme LTS:ää eteenpäin" oletuksena se, että ohjelma on tehty LSB kirjastoja vasten tai Javalla.
Tässä asiasta lisätietoa: http://design.ubuntu.com/apps
Eli onnistuu siis kehittämään softaa jo nyt Ubuntu 14.04 LTS:n tekniikoilla niin että pelaisi Ubuntu 12.04 LTS:ssä, ja toimisi siis huolella tehtynä Ubuntu 14.04 LTS:llä kolme LTS:ää eteenpäin sekä yhden taakse päin (12.04 LTS).
Nykypäivänä sovelluksia kannattaa kehittää alustan natiiveimmalla ja modernimmalla tekniikalla niin niistä saa mahdollisimman hyvin toimivia.
Toinen vaihtoehto on sitten tehdä webbitekniikalla, eli joku Javascript jQuery HTML CSS jos haluaa tehdä toimimaan alustasta riippumatta.