Gatsby JS berdiri di bahu ribuan

Bertahun-tahun yang lalu, pengasas Linux Linus Torvalds meminjam frasa "berdiri di bahu raksasa" Sir Isaac Newton ketika membincangkan karya sumber terbuka dengan Linux. Walaupun itu adalah sentimen yang bagus - "Hei, saya hanya dapat melakukan pekerjaan yang hebat kerana kerja hebat beberapa orang lain" - yang mungkin berlaku pada Linux pada tahun 1991, ia tidak berjaya menggambarkan sumber terbuka pada tahun 2020. Apabila seseorang melepaskan kod sumber terbuka hari ini, bagaimanapun, mereka menggunakan lebih daripada sekumpulan kecil pembangun genius.

Tidak, seperti yang ditunjukkan oleh keluaran terbaru Gatsby.js, projek sumber terbuka moden bergantung pada ribuan projek lain. Atau, seperti yang dinyatakan oleh pengasas Gatsby, Kyle Mathews dalam wawancara, "Kami berdiri di atas bahu ribuan orang biasa."

1000x lebih cepat membina? Ya sila!

Pada mulanya (dari web) adalah penjana laman web statik. Seiring berjalannya waktu, seperti yang dijelaskan oleh Mathews dalam catatannya, organisasi beralih ke laman web yang didorong oleh pangkalan data untuk menyokong ciri yang semakin dinamik. Ketika laman web berkembang, penghasilan laman web yang statik menghasilkan kelajuan pembuatan yang perlahan, walaupun alat yang didorong oleh pangkalan data seperti WordPress semakin disukai oleh orang-orang pemasaran yang tidak ingin mengganggu pengekodan di Markdown. Pra-rendering membantu penjana laman web, tetapi tidak cukup untuk menjadikannya pilihan utama untuk laman web besar.

Tetapi ketika itu; ini sekarang.

Pada awal tahun 2020 Gatsby memperkenalkan Gatsby Builds, yang menjadikan masa build 60X lebih cepat daripada penyelesaian penyebaran berterusan standard melalui gabungan pintar pengkomputeran yang diedarkan dan ciri cache canggih. Bagus. Tetapi dengan keluaran Incremental Builds baru-baru ini, Gatsby mendapat build kurang dari 10 saat untuk pengeditan data, yang dapat mewakili peningkatan 1000x berbanding penyelesaian build yang ada.

Bagaimana? "Perkara terbesar yang telah kami lakukan," kata Mathews dalam sebuah wawancara, "adalah menciptakan sistem pelacakan kebergantungan yang memungkinkan kita untuk mengetahui apa yang perlu diperbarui antara bangunan dengan murah." Sekiranya ini seperti pendekatan yang diambil oleh alat binaan seperti Bazel, atau alat pemprosesan data seperti Apache Spark dan Apache Flink, itu kerana memang demikian. "Gatsby memperlakukan peristiwa perubahan laman web dari data / kod seperti pemproses aliran lain - kami mengetahui apa yang berubah dan mengemas kini dengan murah." Penjana laman web statik tradisional telah lama menggunakan pendekatan pemrosesan kumpulan data, tetapi pendekatan baru Gatsby adalah pemprosesan aliran masa nyata.

Ini adalah masalah besar, menjadikan pendekatan Gatsby dapat digunakan oleh laman web mana pun dan bukannya sebahagian kecil dari web. Ini juga bergantung pada teknologi sumber terbuka yang luar biasa seperti GraphQL, yang membolehkan Gatsby mengesan pergantungan data antara halaman dan sumber data sehingga apabila beberapa data berubah, mereka dapat mengira halaman yang perlu dikemas kini.

Oleh itu, saya bertanya kepada Mathews betapa bergantungnya Gatsby pada sumber terbuka lain….

Berdiri di bahu React, GraphQL, Webpack, Babel ...

"Kami sangat bergantung pada banyak projek hebat," kata Matthews. Dan kemudian dia meneruskan:

Ungkapan itu dapat diperbaharui mungkin bahawa daripada berdiri di bahu gergasi, kita berdiri di bahu ribuan orang. Yang merupakan salah satu perkara menarik mengenai sumber terbuka - ini bukan untuk genius sahaja! Orang biasa boleh membina dan / atau membantu mengekalkan pakej bersaiz gigitan yang masih menyelesaikan keperluan kritikal.

Sebahagian daripada "orang biasa" itu telah membina kod luar biasa yang bergantung kepada Gatsby. Memandangkan bahawa Gatsby didasarkan pada React, React jelas terlintas di fikiran. Tetapi ada banyak lagi. Banyak lagi. Gatsby juga bergantung pada Webpack dan Babel untuk melakukan pengerjaan berat dan memproses JavaScript, CSS, dan aset lain yang akan digunakan. Projek-projek ini "luar biasa dengan kerja hebat bertahun-tahun oleh ribuan jurutera," kata Mathews.

Sebenarnya, jika anda menyemak halaman pakej Babel NPM, anda akan menjumpai 136 kebergantungan, tetapi ini menghilangkan semua pergantungan dari pakej lain yang dikeluarkan oleh Gatsby, belum lagi ketergantungan kebergantungan Gatsby. Secara keseluruhan, kata Mathews, "Projek khas Gatsby mungkin menggunakan ribuan pakej yang dikendalikan oleh puluhan ribu jurutera di seluruh dunia, yang sangat mengejutkan."

Pergantungan ini pada sumber terbuka yang "membantu [Gatsby] bergerak begitu cepat dan melakukan banyak perkara sebagai pasukan yang agak kecil." Ini adalah "ekosistem Node.js yang sangat luas dan mendalam yang mempunyai hampir semua keperluan [Gatsby]," dia menyimpulkan. Dia juga tidak bersendirian. Kali berikutnya anda menggunakan Linux, menyumbang kepada Kubernetes, atau terlibat dengan perisian sumber terbuka, ingatlah bahawa di dunia sekarang ini kita semua putus asa (dan mudah-mudahan!) Bergantung kepada berjuta-juta "pemaju biasa", melakukan perkara yang luar biasa.