Seuraavan sukupolven sovellusten rakentaminen

Alustan parannukset ja tavoitteet Junolle

Jo vähän yli 7 vuotta, elementary on päättänyt tuoda tappajasovellukset avoimen lähdekoodin työasemille. Juno-kehityssyklin aikana olemme työskennelleet ahkerasti näkemyksemme tarjoamiseksi näistä sovelluksista, mutta kaikki tekemämme työ ei ole normaalin käyttäjän näkyvissä. Tässä viestissä puhun hiukan historiasta, joka liittyy siihen, kuinka laitamme asiat kotelon alle ja miltä uusi normaali näyttää alkeissovelluksille. Kiinnitä dev-kypäräsi ja päästään irti.

Kenraali I

Toimitimme aivan ensimmäisen version perusjärjestelmän käyttöjärjestelmästä parhaalla mahdollisella tavalla kehittääksemme houkuttelevia avoimen lähdekoodin sovelluksia. Meillä ei ollut vakio kieltä. Sovellukset kirjoitettiin Python, C #, C, Vala, missä tahansa. Koodityyppistä opasta ei ollut. Koodimme oli erittäin sotkuinen eikä kovin johdonmukainen. Gtk2 oli asia. Ja myös piirtämällä asioita käsin Kairossa. Se oli sovelluskehityksen "kanavateipin ja peitelangan" aikakausi.

0,1 Jupiter, parhaiten katsottu tällä mukana olevalla partituurilla

Matkamme aikana Ubuntun kehittäjäkokoukseen matkalla vuonna 2011 sen jälkeen, kun olimme siirtäneet joitain uusia sovelluksiamme Ubuntun työpöydälle, istuimme Unity-kehittäjän Jason Smithin kanssa, joka toimitti meille kovan totuuden: emme olleet loistava koodikauppa ja meidän piti muuttaa tapaamme työskennellä.

Gen II

Teimme paljon vaikeita valintoja Lunan kehittämisen aikana ja jotkut niistä maksoivat meille arvokkaita avustajia. Kaksi suurinta muutosta oli Valan standardointi ja koodikatsausten käyttöönotto.

Standardikielen valitseminen oli todella portti standardien nostamiseen. Tämän ansiosta jokaisella, joka työskentelee yhden sovelluksen parissa, on helppo osallistua toiseen sovellukseen ja se antoi meille mahdollisuuden luoda yhden koodityylin oppaan, jonka kaikki voivat tutustua. Myöhemmin sen avulla voimme kirjoittaa kattavia kehittäjädokumentteja ja antaa kolmansille osapuolille selkeän tien toimittaa sovelluksensa käyttöjärjestelmän peruskäyttäjille. Valitsimme myös tavallisen rakennusjärjestelmän CMaken kanssa samanlaisista syistä.

Koodiarviointien esittely oli paljon vaikeampaa. Toisin kuin nykyaikaisissa työkaluissa, kuten GitHub, yore-koodin isäntäalustallamme, Launchpadilla, ei ollut omaperäistä käsitettä arvosteluista. Aloimme käyttää Tarmac-nimistä robottia, jota Canonicalin kehittäjät olivat alkaneet käyttää. Se oli hidasta ja tuskallinen, ja jotkut kehittäjät ottivat todella henkilökohtaisesti, että halusimme heidän koodinsa vertaisarviointia ennen kuin se voisi laskeutua kehitysrunkoon.

Tiedostot Gtk + HeaderBarilla 0,3 Freyassa

Alkaen Lunasta, mutta kautta koko Freyan ja jopa Lokiin, pyrimme puhtaaseen Gtk3-työpöydälle, ja olen todella ylpeä voidessani todeta, että olemme saaneet päätökseen siirtymävaiheen ennen kuin monet muut projektit olivat jopa alkaneet heidän. Olemme omaksuneet ja toteuttaneet HeaderBarit kautta linjan, jopa paikoissa, joissa GNOME ei ole vielä toiminut. Gtk3 antoi meille myös mahdollisuuden luoda monimutkaisempia, räätälöityjä tyylejä CSS: n avulla ja ottaa käyttöön parempaa typografiaa sovelluksissamme paljon hienommalla tarkkailulla fontin korkeuden ja painon suhteen.

Esittelimme myös uuden kirjaston, nimeltään Graniitti, jotta voimme jakaa yhteisen koodin projektiin ja laajentaa Gtk +: lta saamiamme asioita. Monet rakentamastamme widgetistä korvataan lopulta itse Gtk +: n toteutuksilla, mukaan lukien HeaderBars, Popovers ja muut. Vaikka graniittia parannetaan edelleen ja uusia toimintoja ja widgettejä lisätään, olemme myös erittäin innoissamme, kun voimme vähentää luokkien käyttöä, kun Gtk + hyötyy ominaisuuksista.

Gen II oli pitkä ja hyvä, ja se toi paljon hienoja parannuksia tapaan, jolla rakensimme sovelluksia. Se on ollut asteittaisen muutoksen aika ilman liian monia suuria häiriöitä, koska olemme tehneet nuo kovat valinnat Lunassa. Aika järkyttää asioita.

Gen III

Uusimmassa sukupolvessa olemme tehneet useita suuria muutoksia, joiden tavoitteena on helpottaa uusien avustajien osallistumista ja vanhojen avustajien ylläpitää kypsää kooditietokantaa.

Yksi suurimmista on täysin käänteisen verkkotunnuksen merkinnän (RDNN) omaksuminen. Pitkän historiamme takia uudet avustajat saattavat huomata, että kun he esimerkiksi kloonivat elementtejä / tiedostoja, projektin binaarinen nimi on panteon-tiedostot, .desktop-nimeltään kutsutaan org.pantheon.files, ja asetukset tallennetaan verkossa. launchpad.marlin. Kun kaikki nimeäminen on RDNN-pohjaista, uudet avustajat voivat helposti ennustaa, että binaarien, .desktops, GSettings -polkujen jne. Nimet ovat aina esimerkiksi io.elementary.files. Tämä takaa myös sen, että meillä ei ole tiedostojen nimeämistä ristiriidassa ylävirrojemme, kuten Debianin tai Ubuntun, pakettien kanssa. Voit lukea lisää siitä Cassidyn edellisestä artikkelista ”Sovelluksen koodinimien puhdistaminen”.

Visuaalinen esitys siitä, kuinka Gen III tuntuu konepellin alla

Pyrimme myös olemaan johdonmukainen lähdepuuhakemistorakenne vakiotiedostojen, kuten Application.vala, kanssa src-hakemistossa, joka sisältää sovellusluokan (kuvitelkaa!). Odotamme, että tiedoista löydät .desktops ja appdata.xml hakemisto jne. Tämän avulla useiden projektien parissa työskentelevien kehittäjien on helpompi löytää nopeasti yhteisiä tiedostoja projektien välillä.

Gen III -sovellukset käyttävät GRes-lähteitä myös mukautettuihin omaisuuksiin, kuten kuvakkeisiin, kuviin ja CSS: ään, sen sijaan, että asentaa tiedostoja tiedostojärjestelmään. Tämä on tärkeää sekä sen varmistamiseksi, että nämä omaisuuserät eivät aiheuta pakkausristiriitoja, jos ne asennetaan järjestelmähakemistoon, kuten hicolor-ikonihakemistoon, että IO-virheiden vähentämiseksi ja suorituskyvyn lisäämiseksi.

Vasemmalla: Lingo a Gen I -sovellus | Oikealla: Palaura a Gen III -sovellus

Huomaat myös, että monet Gen III -sovellukset hyödyntävät Gtk.CSS: ää huomattavasti kattavammin brändäyksen tarjoamiseksi, mukaan lukien esimerkiksi tyylitellympi kirjasintyyppi ja värilliset HeaderBarit. Voit lukea lisää joistakin kehittäjien käytettävissä olevista työkaluista täältä viimeisimmässä Kehittäjävihjeartikkelissamme.

Puhuimme viime vuonna uusien metatietostandardien omaksumisesta AppStream-muodossa ja “Tietoja” -ikkunoiden ojittamisesta. Jatkamme tätä tietä ja tutkimme parhaillaan uusia standardeja, kuten OARS, jotka sallivat vanhempainvalvonnan uudet muodot ja varmistavat, että käyttäjillä on enemmän hallintaa laitteidensa kulutetun sisällön suhteen.

Olemme myös edistyneet huomattavasti kaikkien sovellusten rakentamisessa Mesonin kanssa ja olemme lisänneet korjaustiedostoja parempaan Vala-tuki- ja lokalisointityökaluihin. Voit lukea lisää tästä.

Viimeisenä, mutta ei vähäisimpänä, olemme hyödyntäneet paljon kattavammin automatisoitua testausta Travis CI: n muodossa GitHubissa ja Flightcheckissä, AppCenter Dashboard -testausratkaisumme. Jatkuva testaus koodin tarkistuksen lisäksi auttaa meitä pitämään koodin ja metatiedon laadun korkeana ja välttämään regressioiden käyttöönottoa. Tällä hetkellä testaamme jatkuvaa Flightcheck-versiota, jotta kaikille on helpompaa suorittaa täydet perushuollon mukaiset testit Travisin kanssa. Lisää siitä pian.

Toivomme myös toimittavan enemmän työkaluja ja parempaa dokumentaatiota koko Juno -jakson ajan, joten pysy ajan tasalla blogissamme, niin saat lisätietoja siitä, kuinka sinäkin pystyt toimittamaan tappajan avoimen lähdekoodin sovelluksia.

Kiitos jälleen kaikille kehittäjille, jotka tekevät sovelluksia AppCenterille, kaikille, jotka ovat ostaneet sovelluksen AppCenterille, tukijoillemme Bountysourcessa ja Patreonissa sekä niille, jotka ovat ostaneet kopion perusjärjestelmästä tai merchistä myymälästämme. Jokainen panos auttaa tekemään kaiken tämän mahdolliseksi, emmekä olisi täällä ilman sinua! Jos haluat auttaa parantamaan peruskäyttöjärjestelmää, älä epäröi osallistua!