Gatsby JS berdiri di atas bahu ribuan orang

Bertahun-tahun yang lalu pendiri Linux Linus Torvalds meminjam ungkapan Sir Isaac Newton “berdiri di atas bahu raksasa” ketika mendiskusikan pekerjaan open source dengan Linux. Meskipun ini adalah sentimen yang bagus - “Hei, saya hanya dapat melakukan pekerjaan yang hebat karena beberapa pekerjaan hebat lainnya” - yang mungkin telah diterapkan ke Linux pada tahun 1991, itu tidak berfungsi dengan baik untuk menggambarkan open source pada tahun 2020. Ketika seseorang merilis kode sumber terbuka hari ini, bagaimanapun juga, mereka memanfaatkan lebih dari sekadar sekelompok kecil pengembang jenius.

Tidak, seperti yang ditunjukkan oleh rilis terbaru Gatsby.js, proyek sumber terbuka modern bergantung pada ribuan proyek lainnya. Atau, seperti yang dikatakan oleh pendiri Gatsby Kyle Mathews dalam sebuah wawancara, "Kami berdiri di atas bahu ribuan orang [biasa]."

1000x lebih cepat dibangun? Ya silahkan!

Pada awalnya (web) adalah generator situs statis. Seiring waktu, seperti yang dijelaskan Mathews dalam postingannya, organisasi beralih ke situs web berbasis database untuk mendukung fitur yang semakin dinamis. Seiring pertumbuhan situs web, pembuatan situs statis menghasilkan kecepatan build yang lambat, bahkan saat alat berbasis database seperti WordPress semakin disukai oleh orang-orang pemasaran yang tidak ingin repot-repot membuat kode dalam Penurunan Harga. Pra-rendering membantu pembuat situs, tetapi tidak cukup untuk menjadikannya opsi yang disukai untuk situs besar.

Tapi itu dulu; ini sekarang.

Sebelumnya pada tahun 2020 Gatsby memperkenalkan Gatsby Builds, yang membuat waktu build 60X lebih cepat daripada solusi penerapan berkelanjutan standar melalui kombinasi cerdas dari komputasi terdistribusi dan fitur cache yang canggih. Bagus. Namun dengan rilis Incremental Builds baru-baru ini, Gatsby mendapatkan build di bawah 10 detik untuk pengeditan data, yang dapat mewakili peningkatan 1000x lipat dari solusi build yang ada.

Bagaimana? “Hal terbesar yang telah kami lakukan,” kata Mathews dalam sebuah wawancara, “adalah membuat sistem pelacakan ketergantungan yang memungkinkan kami untuk dengan murah mencari tahu apa yang perlu diperbarui antar build.” Jika ini terdengar seperti pendekatan yang diambil oleh alat pembangunan seperti Bazel, atau alat pemrosesan data seperti Apache Spark dan Apache Flink, itu karena memang demikian. “Gatsby memperlakukan peristiwa perubahan situs web dari data / kode seperti pemroses aliran lainnya — kami mencari tahu apa yang berubah dan memperbaruinya dengan murah.” Generator situs statis tradisional telah lama memiliki pendekatan pemrosesan batch untuk data, tetapi pendekatan baru Gatsby adalah pemrosesan aliran waktu nyata.

Ini masalah besar, membuat pendekatan Gatsby dapat digunakan oleh situs web mana pun, bukan sebagian kecil web. Ini juga bergantung pada teknologi sumber terbuka yang luar biasa seperti GraphQL, yang memungkinkan Gatsby melacak ketergantungan data antara halaman dan sumber data sehingga ketika beberapa bagian data berubah, mereka dapat menghitung halaman apa yang perlu diperbarui.

Jadi saya bertanya kepada Mathews seberapa bergantung Gatsby pada open source lain….

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

“Kami sangat bergantung pada banyak proyek besar,” kata Matthews. Dan kemudian dia melanjutkan:

Ungkapan itu mungkin dapat diperbarui bahwa alih-alih berdiri di atas pundak raksasa, kita berdiri di atas pundak ribuan orang. Yang mana salah satu hal keren tentang open source — ini bukan hanya untuk para jenius! Orang biasa dapat membangun dan / atau membantu memelihara paket berukuran kecil yang masih memenuhi kebutuhan kritis.

Beberapa dari "orang biasa" itu telah membangun kode luar biasa yang menjadi sandaran Gatsby. Mengingat bahwa Gatsby didasarkan pada React, React jelas langsung muncul di benak Anda. Tapi masih ada lagi. Lebih banyak. Gatsby juga mengandalkan Webpack dan Babel untuk melakukan pekerjaan berat seputar pemrosesan dan persiapan JavaScript, CSS, dan aset lain untuk diterapkan. Proyek-proyek ini "fenomenal dengan kerja keras selama bertahun-tahun oleh ribuan insinyur," kata Mathews.

Faktanya, jika Anda memeriksa halaman paket Babel NPM, Anda akan menemukan 136 dependensi, tetapi ini menghilangkan semua dependensi dari paket lain yang dirilis Gatsby, belum lagi dependensi dari dependensi Gatsby. Secara keseluruhan, kata Mathews, "Proyek Gatsby yang khas mungkin menggunakan ribuan paket yang dikelola oleh puluhan ribu insinyur di seluruh dunia, yang sangat mencengangkan."

Ketergantungan pada open source inilah yang "membantu [Gatsby] bergerak begitu cepat dan melakukan banyak hal sebagai tim yang relatif kecil". Ini adalah "ekosistem Node.js yang luar biasa luas dan dalam yang memiliki hampir semua yang dibutuhkan [Gatsby]," pungkasnya. Dia juga tidak sendiri. Lain kali Anda menggunakan Linux, berkontribusi pada Kubernetes, atau terlibat dengan perangkat lunak open source, ingatlah bahwa di dunia sekarang ini kita semua sangat bergantung (dan semoga!) Bergantung pada jutaan "pengembang biasa", melakukan hal-hal luar biasa.