Προγραμματισμός

Ο Gatsby JS στέκεται στους ώμους χιλιάδων

Πριν από πολλά χρόνια, ο ιδρυτής του Linux, Linus Torvalds, δανείστηκε τη φράση «στέκεται στους ώμους των γιγάντων» του Sir Isaac Newton όταν συζητούσε για το έργο του ανοιχτού κώδικα με το Linux. Ενώ είναι ένα ωραίο συναίσθημα - "Γεια, μπόρεσα να κάνω εξαιρετική δουλειά μόνο λόγω της εξαιρετικής δουλειάς μερικών άλλων" - που μπορεί να έχει εφαρμοστεί στο Linux το 1991, δεν κάνει καλή δουλειά να περιγράψω το ανοιχτό κώδικα το 2020. Όταν κάποιος κυκλοφορεί κώδικα ανοιχτού κώδικα σήμερα, τελικά, αντλεί πολύ περισσότερα από ένα μικρό σύνολο προγραμματιστών ιδιοφυίας.

Όχι, όπως δείχνει η τελευταία έκδοση του Gatsby.js, εξαρτώνται τα σύγχρονα έργα ανοιχτού κώδικα χιλιάδες άλλων έργων. Ή, όπως το έθεσε ο ιδρυτής του Gatsby Kyle Mathews σε μια συνέντευξη, "Στέκομαστε στους ώμους χιλιάδων [απλών] ανθρώπων."

1000x ταχύτερες κατασκευές; Ναι παρακαλώ!

Στην αρχή (του διαδικτύου) ήταν η στατική γεννήτρια τοποθεσιών. Με την πάροδο του χρόνου, όπως περιγράφει ο Mathews στην ανάρτησή του, οι οργανισμοί στράφηκαν σε ιστότοπους που βασίζονται σε βάση δεδομένων για να υποστηρίζουν όλο και πιο δυναμικά χαρακτηριστικά. Καθώς οι ιστότοποι μεγάλωναν, η στατική δημιουργία ιστότοπων οδήγησε σε αργές ταχύτητες δημιουργίας, ακόμη και καθώς εργαλεία που βασίζονται σε βάσεις δεδομένων όπως το WordPress αυξήθηκαν υπέρ των ανθρώπων μάρκετινγκ που δεν ήθελαν να ενοχλούν την κωδικοποίηση στο Markdown Η προαπόδοση βοήθησε τους δημιουργούς ιστότοπων, αλλά δεν αρκούν για να τους κάνουν την προτιμώμενη επιλογή για μεγάλους ιστότοπους.

Αλλά αυτό ήταν τότε; αυτό είναι τώρα.

Νωρίτερα το 2020, η Gatsby παρουσίασε το Gatsby Builds, το οποίο έκανε τους χρόνους κατασκευής 60 φορές πιο γρήγορους από τις τυπικές λύσεις συνεχούς ανάπτυξης μέσω ενός έξυπνου συνδυασμού κατανεμημένων υπολογιστών και εξελιγμένων λειτουργιών προσωρινής αποθήκευσης. Ομορφη. Αλλά με την πρόσφατη κυκλοφορία του Incremental Builds, ο Gatsby παίρνει builds κάτω από 10 δευτερόλεπτα για επεξεργασία δεδομένων, το οποίο μπορεί να αντιπροσωπεύσει βελτίωση 1000x σε σχέση με τις υπάρχουσες λύσεις build.

Πως? «Το μεγαλύτερο πράγμα που κάναμε», δήλωσε ο Mathews σε μια συνέντευξή του, «είναι ένα σύστημα παρακολούθησης εξάρτησης που μας επιτρέπει να καταλάβουμε φθηνά τι χρειάζεται ενημέρωση μεταξύ των εκδόσεων». Αν αυτό μοιάζει με την προσέγγιση που ακολουθούν τα εργαλεία κατασκευής όπως το Bazel ή τα εργαλεία επεξεργασίας δεδομένων όπως το Apache Spark και το Apache Flink, αυτό συμβαίνει. "Η Gatsby αντιμετωπίζει συμβάντα αλλαγής ιστότοπου από δεδομένα / κώδικα, όπως άλλοι επεξεργαστές ροής. Καταλαβαίνουμε τι έχει αλλάξει και ενημερώνουμε φθηνά." Οι παραδοσιακοί δημιουργοί στατικών ιστότοπων είχαν εδώ και πολύ καιρό μια προσέγγιση επεξεργασίας παρτίδων στα δεδομένα, αλλά η νέα προσέγγιση του Gatsby είναι η επεξεργασία ροής σε πραγματικό χρόνο.

Είναι μεγάλη υπόθεση, καθιστώντας την προσέγγιση Gatsby χρησιμοποιήσιμη από οποιονδήποτε ιστότοπο αντί για ένα μικρό κλάσμα του ιστού. Εξαρτάται επίσης από την εκπληκτική τεχνολογία ανοιχτού κώδικα, όπως η GraphQL, η οποία επιτρέπει στο Gatsby να παρακολουθεί τις εξαρτήσεις δεδομένων μεταξύ σελίδων και των πηγών δεδομένων, έτσι ώστε όταν αλλάξει κάποιο κομμάτι δεδομένων, να μπορούν να υπολογίσουν ποιες σελίδες χρειάζονται ενημέρωση.

Ρώτησα λοιπόν τον Mathews πόσο εξαρτάται ο Gatsby από άλλους ανοιχτούς πόρους….

Στέκεται στους ώμους του React, GraphQL, Webpack, Babel ...

«Είμαστε σε μεγάλο βαθμό εξαρτημένοι από πολλά μεγάλα έργα», είπε ο Μάθιου. Και μετά συνέχισε:

Η φράση θα μπορούσε να ενημερωθεί ίσως ότι αντί να στέκουμε στους ώμους των γιγάντων, στέκουμε στους ώμους χιλιάδων ανθρώπων. Ποιο είναι ένα από τα δροσερά πράγματα για το ανοιχτό κώδικα - δεν είναι μόνο για ιδιοφυΐες! Οι απλοί άνθρωποι μπορούν να δημιουργήσουν ή / και να συντηρήσουν πακέτα μεγέθους δαγκωμάτων που εξακολουθούν να επιλύουν κρίσιμες ανάγκες.

Μερικοί από αυτούς τους «απλούς ανθρώπους» έχουν δημιουργήσει εξαιρετικό κώδικα από τον οποίο εξαρτάται το Gatsby. Δεδομένου ότι το Gatsby βασίζεται στο React, προφανώς το React έρχεται αμέσως στο μυαλό. Αλλά υπάρχουν περισσότερα. Πολύ περισσότερο. Ο Gatsby βασίζεται επίσης στο Webpack και στο Babel για να κάνει τη βαριά προσπάθεια επεξεργασίας και προετοιμασίας JavaScript, CSS και άλλων στοιχείων που θα αναπτυχθούν. Αυτά τα έργα είναι «εκπληκτικά με χρόνια δουλειάς χιλιάδων μηχανικών», σημείωσε ο Mathews.

Στην πραγματικότητα, αν ελέγξετε τη σελίδα πακέτου Babel NPM, θα βρείτε 136 εξαρτήσεις, αλλά αυτό παραλείπει όλες τις εξαρτήσεις άλλων πακέτων που κυκλοφορεί το Gatsby, για να μην αναφέρουμε τις εξαρτήσεις των εξαρτήσεων του Gatsby. Συνολικά, είπε ο Mathews, "Ένα τυπικό έργο Gatsby μπορεί να χρησιμοποιεί χιλιάδες πακέτα που συντηρούνται από δεκάδες χιλιάδες μηχανικούς σε όλο τον κόσμο, κάτι που είναι εκπληκτικό."

Αυτή η εξάρτηση από τον ανοιχτό κώδικα "βοηθά τον [Gatsby] να κινείται τόσο γρήγορα και να κάνει τόσα πολλά πράγματα ως μια σχετικά μικρή ομάδα". Είναι «το εκπληκτικά ευρύ και βαθύ οικοσύστημα Node.js που έχει σχεδόν όλα όσα χρειάζεται [Gatsby]», κατέληξε. Ούτε είναι μόνος. Την επόμενη φορά που θα χρησιμοποιήσετε το Linux, θα συνεισφέρετε στο Kubernetes ή αλλιώς αλληλεπιδράτε με λογισμικό ανοιχτού κώδικα, θυμηθείτε ότι στο σημερινό κόσμο είμαστε όλοι απελπισμένοι (και ελπίζουμε!) Να εξαρτηθούμε από εκατομμύρια "απλούς προγραμματιστές" που κάνουν εξαιρετικά πράγματα.