Δημιουργία της επόμενης γενιάς εφαρμογών

Βελτιώσεις πλατφόρμας και στόχοι για τον Juno

Για λίγο πάνω από 7 χρόνια τώρα, η στοιχειώδης έχει θέσει να φέρει εφαρμογές δολοφόνων σε υπολογιστές ανοιχτού κώδικα. Κατά τη διάρκεια του κύκλου ανάπτυξης του Juno, εργαζόμαστε σκληρά για να επιτύχουμε το όραμά μας για αυτές τις εφαρμογές, αλλά όχι όλη η εργασία που έχουμε κάνει είναι ορατή στον απλό χρήστη. Σε αυτή τη θέση, θα μιλήσω για μια ιστορία που περιβάλλει τον τρόπο με τον οποίο τοποθετούμε τα πράγματα κάτω από την κουκούλα και ποια είναι η νέα φυσιολογική μορφή για τις στοιχειώδεις εφαρμογές. Στερεώστε τα κράνη σας dev, και ας γευτείτε.

Γεν. Ι

Παραδόσαμε την πρώτη έκδοση του στοιχειώδους λειτουργικού συστήματος με την καλύτερη δυνατή προσπάθεια για την ανάπτυξη συναρπαστικών εφαρμογών Open Source. Δεν είχαμε τυπική γλώσσα. Εφαρμογές γράφτηκαν σε Python, C #, C, Vala, οτιδήποτε. Δεν υπήρξε οδηγός στυλ κώδικα. Ο κώδικας μας ήταν πολύ βρώμικος και όχι πολύ συνεπής. Το Gtk2 ήταν ένα πράγμα. Και επίσης να σχεδιάζετε τα πράγματα με το χέρι στο Κάιρο. Ήταν η εποχή της "ταινίας αγωγού και του καλωδίου διασκέδασης" της αρχικής ανάπτυξης εφαρμογών.

0,1 Jupiter, που βλέπετε καλύτερα με αυτό το συνοδευτικό σκορ

Κατά τη διάρκεια του ταξιδιού μας στο Ubuntu Developer Summit μέχρι το 2011, αφού βρήκαμε κάποιες από τις νέες εφαρμογές μας στην ομάδα Desktop του Ubuntu, κάναμε κάμερα με τον προγραμματιστή Unity Jason Smith, ο οποίος μας έδωσε μια σκληρή αλήθεια: έπρεπε να αλλάξουμε τον τρόπο εργασίας μας.

Gen II

Κάναμε πολλές δύσκολες επιλογές κατά την ανάπτυξη της Luna και μερικές από αυτές μας κόστισαν πολύτιμους συντελεστές. Οι δύο μεγαλύτερες αλλαγές ήταν η τυποποίηση του Vala και η εισαγωγή αναθεωρήσεων κώδικα.

Η επιλογή μιας τυπικής γλώσσας ήταν πραγματικά η πύλη για την αύξηση των προτύπων μας. Αυτό το καθιστούσε πολύ πιο εύκολο για όσους εργάζονταν σε μια εφαρμογή να μπορούν εύκολα να συνεισφέρουν σε μια άλλη εφαρμογή και μας επέτρεψε να δημιουργήσουμε έναν ενιαίο οδηγό στυλ κώδικα τον οποίο όλοι θα μπορούσαν να εξοικειωθούν. Αργότερα θα μας επιτρέψει να γράψουμε εκτενή έγγραφα προγραμματιστών και να δώσουμε στους τρίτους ένα σαφές μονοπάτι για την παράδοση των εφαρμογών τους στους στοιχειώδεις χρήστες του λειτουργικού συστήματος. Επιλέξαμε επίσης ένα πρότυπο σύστημα κατασκευής με CMake για παρόμοιους λόγους.

Η εισαγωγή σχολίων κώδικα ήταν ένα πολύ πιο δύσκολο έργο. Σε αντίθεση με τα σύγχρονα εργαλεία, όπως το GitHub, η πλατφόρμα φιλοξενίας κώδικα του προηγούμενου, Launchpad, δεν είχε καμία εγγενή αντίληψη των αναθεωρήσεων. Ξεκινήσαμε να χρησιμοποιούμε ένα bot που ονομάζουμε Tarmac, κάτι που οι προγραμματιστές της Canonical είχαν αρχίσει να χρησιμοποιούν. Ήταν αργή και επίπονη και ορισμένοι προγραμματιστές την πήραν πραγματικά προσωπικά που θέλαμε τον κώδικα τους να αξιολογηθεί από ομότιμους πριν να μπορέσει να προσγειωθεί στον κορμό ανάπτυξης.

Αρχεία με Gtk + HeaderBar σε 0,3 Freya

Ξεκινώντας από τη Luna, αλλά σε όλη την Freya και ακόμη και στον Loki, αγωνίσαμε για μια καθαρή επιφάνεια εργασίας Gtk3 και είμαι πραγματικά υπερήφανος που λέω ότι ολοκληρώσαμε τη μετάβασή μας πριν ακόμα ξεκινήσουν πολλά άλλα έργα. Έχουμε αγκαλιάσει και εφαρμόσει HeaderBars σε όλη την έκταση, ακόμη και σε μέρη όπου το GNOME δεν έχει ακόμη. Το Gtk3 μας επέτρεψε επίσης να δημιουργήσουμε πιο περίπλοκα, προσαρμοσμένα στυλ με το CSS και να εισαγάγουμε καλύτερη τυπογραφία στις εφαρμογές μας με πολύ λεπτότερο έλεγχο στα ύψη και τα βάρη των γραμματοσειρών.

Εισήγαμε επίσης μια νέα βιβλιοθήκη που ονομάζεται Γρανίτης για να μοιραστεί κοινό κώδικα μεταξύ των έργων και να επεκτείνει τα πράγματα που έχουμε από το Gtk +. Πολλά από τα γραφικά στοιχεία που δημιουργήσαμε θα αντικατασταθούν τελικά από υλοποιήσεις στο Gtk +, όπως HeaderBars, Popovers και πολλά άλλα. Ενώ ο Γρανίτης συνεχίζει να βελτιώνεται και προστίθενται νέες λειτουργίες και widgets, είμαστε επίσης πολύ ενθουσιασμένοι όταν μπορούμε να καταργήσουμε τα μαθήματα ως Gtk + κερδίζει χαρακτηριστικά.

Το Gen II ήταν μακρύ και καλό και έφερε πολλές μεγάλες εξελίξεις στον τρόπο που δημιουργήσαμε εφαρμογές. Ήταν μια εποχή σταδιακής αλλαγής χωρίς πάρα πολλές μεγάλες αναταραχές από τότε που κάναμε αυτές τις δύσκολες επιλογές στη Luna. Ώρα να κουνήσουμε τα πράγματα.

Gen III

Με τη νεώτερη γενιά, κάναμε αρκετές μεγάλες αλλαγές με στόχο να διευκολύνουμε τους νέους συνεργάτες να συμμετέχουν και για τους παλαιούς συνεργάτες να διατηρούν ώριμες βάσεις κώδικα.

Ένα από τα μεγαλύτερα περιλαμβάνει την Αντίστροφη ονοματοδοσία ονομάτων τομέα (RDNN). Λόγω της μακράς ιστορίας μας, οι νέοι συνεισφέροντες μπορεί να διαπιστώσουν ότι όταν, για παράδειγμα, κλωνοποιήσουν στοιχειώδη / αρχεία το δυαδικό όνομα του έργου είναι αρχεία pantheon, το .desktop ονομάζεται org.pantheon.files και οι ρυθμίσεις αποθηκεύονται στο net. launchpad.marlin. Όταν όλα τα ονόματα βασίζονται σε RDNN, οι νέοι συνεισφέροντες μπορούν εύκολα να προβλέψουν ότι τα ονόματα των δυαδικών αρχείων, των desktop, των διαδρομών GSettings κ.λπ. θα είναι πάντα, για παράδειγμα, io.elementary.files. Αυτό εγγυάται επίσης ότι δεν έχουμε διενέξεις ονομασίας αρχείων με πακέτα από τα upstream μας όπως το Debian ή το Ubuntu. Μπορείτε να διαβάσετε περισσότερα σχετικά με αυτό στο προηγούμενο άρθρο του Cassidy, "Καθαρισμός κωδικών επωνυμίας εφαρμογών".

Μια οπτική αναπαράσταση του πώς αισθάνεται ο Gen III κάτω από την κουκούλα

Επίσης, πιέζουμε να έχουμε μια σταθερή δομή καταλόγου δομών πηγών με πρότυπα αρχεία όπως Application.vala στον κατάλογο src που περιέχει την κατηγορία Application (φανταστείτε!), Μια προσδοκία ότι μπορείτε να βρείτε τα .desktop και appdata.xml στα δεδομένα τον κατάλογο κ.λπ. Αυτό διευκολύνει τους προγραμματιστές που εργάζονται σε πολλαπλά προγράμματα να βρουν γρήγορα αρχεία κοινής χρήσης σε όλα τα έργα.

Οι εφαρμογές Gen III χρησιμοποιούν επίσης GResources για προσαρμοσμένα στοιχεία όπως εικονίδια, εικόνες και CSS αντί για την εγκατάσταση αρχείων στο σύστημα αρχείων. Αυτό είναι σημαντικό τόσο για να διασφαλιστεί ότι τα στοιχεία αυτά δεν προκαλούν διενέξεις συσκευασίας, εάν είναι εγκατεστημένα σε έναν κατάλογο συστήματος όπως τον κατάλογο εικονιδίων hicolor και για τη μείωση των σφαλμάτων IO και την αύξηση της απόδοσης.

Αριστερά: Lingo μια εφαρμογή Gen I | Δεξιά: εφαρμογή Palaura a Gen III

Θα παρατηρήσετε επίσης πολλές εφαρμογές Gen III που κάνουν πολύ πιο ολοκληρωμένη χρήση του Gtk.CSS για την παροχή μαρκαρίσματος, συμπεριλαμβανομένων των στοιχείων όπως πιο στυλιζαρισμένες γραμματοσειρές και χρωματιστές HeaderBars. Μπορείτε να διαβάσετε περισσότερα σχετικά με ορισμένα από τα εργαλεία που είναι διαθέσιμα στους προγραμματιστές εδώ στο πιο πρόσφατο άρθρο Συμβουλές για προγραμματιστές.

Μιλήσαμε πέρυσι για την ενσωμάτωση νέων προτύπων μεταδεδομένων με τη μορφή AppStream και προσθαφαιρώντας τα παράθυρα "Πληροφορίες". Θα συνεχίσουμε αυτήν την πορεία και εξετάζουμε επί του παρόντος νέα πρότυπα, όπως το OARS, τα οποία θα επιτρέψουν νέες μορφές γονικού ελέγχου και θα διασφαλίσουν ότι οι χρήστες θα έχουν μεγαλύτερο έλεγχο στο είδος του περιεχομένου που καταναλώνεται στις συσκευές τους.

Έχουμε επίσης κάνει έναν τόνο προόδου με την κατασκευή όλων των εφαρμογών μας με το Meson και έχουν συνεισφέρει patches upstream για καλύτερα εργαλεία υποστήριξης και εντοπισμού Vala. Μπορείτε να διαβάσετε περισσότερα για αυτό εδώ.

Τελευταίο, αλλά εξίσου σημαντικό, έχουμε κάνει πολύ πιο ολοκληρωμένη χρήση αυτοματοποιημένων ελέγχων με τη μορφή Travis CI στο GitHub και Flightcheck, τη λύση δοκιμών μας για το AppCenter Dashboard. Οι συνεχείς έλεγχοι εκτός από την αναθεώρηση κώδικα μας βοηθούν να διατηρούμε υψηλή ποιότητα κώδικα και μεταδεδομένων και να αποφεύγουμε την εισαγωγή παλινδρομήσεων. Προς το παρόν, δοκιμάζουμε μια συνεχή έκδοση του Flightcheck για να διευκολύνουμε οποιονδήποτε να εκτελέσει την πλήρη σουίτα στοιχειωδών δοκιμών με το Travis. Περισσότερα για αυτό σύντομα.

Ελπίζουμε επίσης να παρέχουμε περισσότερα εργαλεία και καλύτερη τεκμηρίωση σε όλο τον κύκλο Juno, οπότε παραμείνετε συντονισμένοι εδώ στο ιστολόγιό μας για περισσότερες πληροφορίες σχετικά με τον τρόπο με τον οποίο και εσείς μπορείτε να παραδώσετε τις εφαρμογές Open Source δολοφόνων.

Σας ευχαριστούμε και πάλι από όλους τους προγραμματιστές που κάνουν εφαρμογές για AppCenter, όσους αγόρασαν μια εφαρμογή AppCenter, τους υποστηρικτές μας στο Bountysource και τον Patreon και όσους αγόρασαν ένα αντίγραφο στοιχειώδους OS ή εμπορίου από το κατάστημά μας. Κάθε συμβολή βοηθάει σε όλα αυτά να γίνουν δυνατά και δεν θα είμαστε εδώ χωρίς εσένα! Εάν θέλετε να βοηθήσετε στη βελτίωση του στοιχειώδους λειτουργικού συστήματος, μη διστάσετε να εμπλακείτε!