Satu Dekade Dampak: Bagaimana Paket npm Kami Mencapai 1 Miliar Unduhan dan Membentuk JavaScript
Kata Pengantar
Di dunia JavaScript dan Node.js, beberapa paket sangat penting—diunduh jutaan kali setiap hari dan mendukung aplikasi di seluruh dunia. Di balik alat-alat ini ada pengembang yang fokus pada kualitas open source. Hari ini, kami menunjukkan bagaimana tim kami membantu membangun dan memelihara paket npm yang telah menjadi bagian kunci dari ekosistem JavaScript.
Pelopor yang Mempercayai Kami: Isaac Z. Schlueter dan Forward Email
Kami bangga memiliki Isaac Z. Schlueter (GitHub: isaacs) sebagai pengguna. Isaac menciptakan npm dan membantu membangun Node.js. Kepercayaannya pada Forward Email menunjukkan fokus kami pada kualitas dan keamanan. Isaac menggunakan Forward Email untuk beberapa domain termasuk izs.me.
Dampak Isaac pada JavaScript sangat besar. Pada tahun 2009, dia termasuk yang pertama melihat potensi Node.js, bekerja dengan Ryan Dahl, yang menciptakan platform tersebut. Seperti yang dikatakan Isaac dalam sebuah wawancara dengan majalah Increment: "Di tengah komunitas yang sangat kecil dari sekelompok orang yang mencoba mencari cara agar JS sisi server bisa terjadi, Ryan Dahl muncul dengan Node, yang jelas merupakan pendekatan yang tepat. Saya ikut terlibat dan sangat aktif sekitar pertengahan 2009."
Note
Bagi yang tertarik dengan sejarah Node.js, tersedia dokumenter yang sangat baik yang mengisahkan pengembangannya, termasuk The Story of Node.js dan 10 Things I Regret About Node.js - Ryan Dahl. Situs pribadi Ryan Dahl personal website juga berisi wawasan berharga tentang karyanya.
Dari Penciptaan npm hingga Kepemimpinan Node.js
Isaac menciptakan npm pada September 2009, dengan versi pertama yang dapat digunakan dirilis pada awal 2010. Manajer paket ini mengisi kebutuhan penting di Node.js, memungkinkan pengembang untuk dengan mudah berbagi dan menggunakan kembali kode. Menurut halaman Wikipedia Node.js, "Pada Januari 2010, diperkenalkan manajer paket untuk lingkungan Node.js yang disebut npm. Manajer paket ini memungkinkan programmer untuk menerbitkan dan berbagi paket Node.js, beserta kode sumber yang menyertainya, dan dirancang untuk menyederhanakan instalasi, pembaruan, dan penghapusan paket."
Ketika Ryan Dahl mundur dari Node.js pada Januari 2012, Isaac mengambil alih sebagai pemimpin proyek. Seperti yang tercatat di résumé-nya, dia "Memimpin pengembangan beberapa API inti Node.js yang fundamental, termasuk sistem modul CommonJS, API sistem berkas, dan streams" serta "Bertindak sebagai BDFL (Benevolent Dictator For Life) proyek selama 2 tahun, memastikan kualitas yang terus meningkat dan proses build yang andal untuk versi Node.js v0.6 hingga v0.10."
Isaac membimbing Node.js melalui periode pertumbuhan penting, menetapkan standar yang masih membentuk platform hingga hari ini. Dia kemudian memulai npm, Inc. pada 2014 untuk mendukung registri npm, yang sebelumnya dia jalankan sendiri.
Kami berterima kasih kepada Isaac atas kontribusinya yang besar pada JavaScript dan terus menggunakan banyak paket yang dia buat. Karyanya telah mengubah cara kami membangun perangkat lunak dan bagaimana jutaan pengembang berbagi kode di seluruh dunia.
Arsitek di Balik Kode: Perjalanan Nick Baugh
Di inti kesuksesan open source kami adalah Nick Baugh, pendiri dan pemilik Forward Email. Karyanya dalam JavaScript telah berlangsung hampir 20 tahun dan membentuk cara banyak pengembang membangun aplikasi. Perjalanan open source-nya menunjukkan keterampilan teknis sekaligus kepemimpinan komunitas.
Komite Teknis Express dan Kontribusi Inti
Keahlian Nick dalam framework web membawanya ke Komite Teknis Express, di mana dia membantu salah satu framework Node.js yang paling banyak digunakan. Nick sekarang tercantum sebagai anggota tidak aktif di halaman komunitas Express.
Important
Express awalnya dibuat oleh TJ Holowaychuk, seorang kontributor open source yang produktif yang telah membentuk banyak ekosistem Node.js. Kami berterima kasih atas karya dasar TJ dan menghormati keputusannya untuk beristirahat dari kontribusi open source-nya yang luas.
Sebagai anggota Komite Teknis Express, Nick menunjukkan perhatian besar terhadap detail dalam isu-isu seperti memperjelas dokumentasi req.originalUrl dan memperbaiki masalah penanganan form multipart.
Kontribusi Framework Koa
Pekerjaan Nick dengan framework Koa—alternatif modern dan lebih ringan dari Express yang juga dibuat oleh TJ Holowaychuk—lebih menunjukkan komitmennya terhadap alat pengembangan web yang lebih baik. Kontribusi Nick pada Koa mencakup isu dan kode melalui pull request, menangani penanganan error, manajemen tipe konten, dan perbaikan dokumentasi.
Pekerjaannya di Express dan Koa memberinya pandangan unik tentang pengembangan web Node.js, membantu tim kami membuat paket yang bekerja baik dengan berbagai ekosistem framework.
Dari Kontributor Individu ke Pemimpin Organisasi
Apa yang dimulai sebagai membantu proyek yang sudah ada berkembang menjadi menciptakan dan memelihara ekosistem paket secara keseluruhan. Nick mendirikan beberapa organisasi GitHub—termasuk Cabin, Spam Scanner, Forward Email, Lad, dan Bree—masing-masing menyelesaikan kebutuhan spesifik dalam komunitas JavaScript.
Perubahan dari kontributor menjadi pemimpin ini menunjukkan visi Nick untuk perangkat lunak yang dirancang dengan baik yang memecahkan masalah nyata. Dengan mengorganisir paket terkait di bawah organisasi GitHub yang terfokus, dia membangun ekosistem alat yang bekerja bersama sambil tetap modular dan fleksibel untuk komunitas pengembang yang lebih luas.
Organisasi GitHub Kami: Ekosistem Inovasi
Kami mengorganisir pekerjaan open source kami di sekitar organisasi GitHub yang terfokus, masing-masing menyelesaikan kebutuhan spesifik dalam JavaScript. Struktur ini menciptakan keluarga paket yang kohesif yang bekerja baik bersama sambil tetap modular.
Cabin: Logging Terstruktur untuk Aplikasi Modern
Organisasi Cabin adalah pendekatan kami terhadap logging aplikasi yang sederhana dan kuat. Paket utama cabin memiliki hampir 900 bintang di GitHub dan lebih dari 100.000 unduhan mingguan[1]. Cabin menyediakan logging terstruktur yang bekerja dengan layanan populer seperti Sentry, LogDNA, dan Papertrail.
Yang membuat Cabin istimewa adalah API dan sistem plugin yang dipikirkan dengan matang. Paket pendukung seperti axe untuk middleware Express dan parse-request untuk parsing permintaan HTTP menunjukkan komitmen kami pada solusi lengkap daripada alat terpisah.
Paket bson-objectid layak mendapat sebutan khusus, dengan lebih dari 1,7 juta unduhan hanya dalam dua bulan[2]. Implementasi ringan MongoDB ObjectID ini telah menjadi pilihan utama bagi pengembang yang membutuhkan ID tanpa ketergantungan penuh pada MongoDB.
Spam Scanner: Melawan Penyalahgunaan Email
Organisasi Spam Scanner menunjukkan komitmen kami untuk menyelesaikan masalah nyata. Paket utama spamscanner menyediakan deteksi spam email yang canggih, tetapi paket url-regex-safe yang telah mengalami adopsi luar biasa.
Dengan lebih dari 1,2 juta unduhan dalam dua bulan[3], url-regex-safe memperbaiki masalah keamanan kritis dalam ekspresi reguler deteksi URL lainnya. Paket ini menunjukkan pendekatan kami terhadap open source: menemukan masalah umum (dalam hal ini, kerentanan ReDoS dalam validasi URL), menciptakan solusi yang solid, dan memeliharanya dengan cermat.
Bree: Penjadwalan Pekerjaan Modern dengan Worker Threads
Organisasi Bree adalah jawaban kami untuk tantangan umum Node.js: penjadwalan pekerjaan yang andal. Paket utama bree, dengan lebih dari 3.100 bintang di GitHub, menyediakan penjadwal pekerjaan modern menggunakan worker threads Node.js untuk kinerja dan keandalan yang lebih baik.
Note
Bree dibuat setelah kami membantu memelihara Agenda, menerapkan pelajaran yang dipelajari untuk membangun penjadwal pekerjaan yang lebih baik. Kontribusi kami pada Agenda membantu kami menemukan cara untuk meningkatkan penjadwalan pekerjaan.
Apa yang membuat Bree berbeda dari penjadwal lain seperti Agenda:
- Tanpa Ketergantungan Eksternal: Berbeda dengan Agenda yang membutuhkan MongoDB, Bree tidak memerlukan Redis atau MongoDB untuk mengelola status pekerjaan.
- Worker Threads: Bree menggunakan worker threads Node.js untuk proses sandboxed, memberikan isolasi dan kinerja yang lebih baik.
- API Sederhana: Bree menawarkan kontrol detail dengan kesederhanaan, memudahkan implementasi kebutuhan penjadwalan yang kompleks.
- Dukungan Bawaan: Hal-hal seperti pemuatan ulang yang mulus, pekerjaan cron, tanggal, dan waktu yang ramah manusia sudah termasuk secara default.
Bree adalah bagian penting dari forwardemail.net, menangani tugas latar belakang penting seperti pemrosesan email, pembersihan, dan pemeliharaan terjadwal. Penggunaan Bree di Forward Email menunjukkan komitmen kami untuk menggunakan alat kami sendiri dalam produksi, memastikan mereka memenuhi standar keandalan tinggi.
Kami juga menggunakan dan menghargai paket worker thread hebat lainnya seperti piscina dan klien HTTP seperti undici. Piscina, seperti Bree, menggunakan worker threads Node.js untuk pemrosesan tugas yang efisien. Kami berterima kasih kepada Matteo Collina, yang memelihara undici dan piscina, atas kontribusi besarnya pada Node.js. Matteo menjabat di Komite Pengarah Teknis Node.js dan telah sangat meningkatkan kemampuan klien HTTP di Node.js.
Forward Email: Infrastruktur Email Sumber Terbuka
Proyek kami yang paling ambisius adalah Forward Email, layanan email sumber terbuka yang menyediakan penerusan email, penyimpanan, dan layanan API. Repositori utama memiliki lebih dari 1.100 bintang di GitHub[4], menunjukkan apresiasi komunitas terhadap alternatif layanan email proprietary ini.
Paket preview-email dari organisasi ini, dengan lebih dari 2,5 juta unduhan dalam dua bulan[5], telah menjadi alat penting bagi pengembang yang bekerja dengan template email. Dengan menyediakan cara sederhana untuk melihat pratinjau email selama pengembangan, paket ini menyelesaikan titik sakit umum dalam membangun aplikasi yang mendukung email.
Lad: Utilitas dan Alat Koa Esensial
Organisasi Lad menyediakan kumpulan utilitas dan alat esensial yang terutama berfokus pada peningkatan ekosistem framework Koa. Paket-paket ini menyelesaikan tantangan umum dalam pengembangan web dan dirancang untuk bekerja secara mulus bersama sambil tetap berguna secara mandiri.
koa-better-error-handler: Penanganan Error yang Ditingkatkan untuk Koa
koa-better-error-handler menawarkan solusi penanganan error yang lebih baik untuk aplikasi Koa. Dengan lebih dari 50 bintang di GitHub, paket ini membuat ctx.throw menghasilkan pesan error yang ramah pengguna sekaligus mengatasi beberapa keterbatasan penangan error bawaan Koa:
- Mendeteksi dan menangani dengan benar error DNS Node.js, error Mongoose, dan error Redis
- Menggunakan Boom untuk membuat respons error yang konsisten dan terformat dengan baik
- Mempertahankan header (tidak seperti penangan bawaan Koa)
- Mempertahankan kode status yang sesuai daripada default ke 500
- Mendukung pesan flash dan pelestarian sesi
- Menyediakan daftar error HTML untuk error validasi
- Mendukung berbagai tipe respons (HTML, JSON, dan teks biasa)
Paket ini sangat berharga ketika digunakan bersama
koa-404-handleruntuk manajemen kesalahan yang komprehensif dalam aplikasi Koa.
passport: Otentikasi untuk Lad
@ladjs/passport memperluas middleware otentikasi populer Passport.js dengan peningkatan khusus untuk aplikasi web modern. Paket ini mendukung beberapa strategi otentikasi langsung dari kotak:
- Otentikasi lokal dengan email
- Masuk dengan Apple
- Otentikasi GitHub
- Otentikasi Google
- Otentikasi kata sandi sekali pakai (OTP)
Paket ini sangat dapat disesuaikan, memungkinkan pengembang untuk mengubah nama bidang dan frasa agar sesuai dengan kebutuhan aplikasi mereka. Dirancang untuk integrasi mulus dengan Mongoose untuk manajemen pengguna, menjadikannya solusi ideal untuk aplikasi berbasis Koa yang membutuhkan otentikasi yang kuat.
graceful: Penutupan Aplikasi yang Elegan
@ladjs/graceful memecahkan tantangan penting dalam menutup aplikasi Node.js dengan elegan. Dengan lebih dari 70 bintang di GitHub, paket ini memastikan aplikasi Anda dapat berhenti dengan bersih tanpa kehilangan data atau meninggalkan koneksi yang menggantung. Fitur utama meliputi:
- Dukungan untuk menutup server HTTP dengan elegan (Express/Koa/Fastify)
- Penutupan koneksi database yang bersih (MongoDB/Mongoose)
- Penutupan klien Redis yang tepat
- Penanganan penjadwal pekerjaan Bree
- Dukungan untuk handler penutupan kustom
- Pengaturan waktu tunggu yang dapat dikonfigurasi
- Integrasi dengan sistem logging
Paket ini penting untuk aplikasi produksi di mana penutupan tak terduga dapat menyebabkan kehilangan data atau korupsi. Dengan menerapkan prosedur penutupan yang tepat, @ladjs/graceful membantu memastikan keandalan dan stabilitas aplikasi Anda.
Upptime: Pemantauan Uptime Open Source
Organisasi Upptime mewakili komitmen kami terhadap pemantauan yang transparan dan open source. Repositori utama upptime memiliki lebih dari 13.000 bintang di GitHub, menjadikannya salah satu proyek paling populer yang kami kontribusikan. Upptime menyediakan monitor uptime dan halaman status yang didukung GitHub yang beroperasi sepenuhnya tanpa server.
Kami menggunakan Upptime untuk halaman status kami sendiri di https://status.forwardemail.net dengan kode sumber tersedia di https://github.com/forwardemail/status.forwardemail.net.
Yang membuat Upptime istimewa adalah arsitekturnya:
- 100% Open Source: Setiap komponen sepenuhnya open source dan dapat disesuaikan.
- Didukung oleh GitHub: Memanfaatkan GitHub Actions, Issues, dan Pages untuk solusi pemantauan tanpa server.
- Tidak Memerlukan Server: Berbeda dengan alat pemantauan tradisional, Upptime tidak mengharuskan Anda menjalankan atau memelihara server.
- Halaman Status Otomatis: Menghasilkan halaman status yang indah yang dapat dihosting di GitHub Pages.
- Notifikasi yang Kuat: Terintegrasi dengan berbagai saluran notifikasi termasuk email, SMS, dan Slack.
Untuk meningkatkan pengalaman pengguna kami, kami telah mengintegrasikan @octokit/core ke dalam basis kode forwardemail.net untuk menampilkan pembaruan status dan insiden secara real-time langsung di situs web kami. Integrasi ini memberikan transparansi yang jelas kepada pengguna kami jika terjadi masalah di seluruh tumpukan kami (Website, API, MongoDB, Redis, SQLite, SMTP, POP3, IMAP, Bree, dll.) dengan notifikasi toast instan, perubahan ikon lencana, warna peringatan, dan lainnya.
Perpustakaan @octokit/core memungkinkan kami mengambil data real-time dari repositori Upptime GitHub kami, memprosesnya, dan menampilkannya dengan cara yang ramah pengguna. Ketika ada layanan yang mengalami gangguan atau penurunan performa, pengguna segera diberi tahu melalui indikator visual tanpa harus meninggalkan aplikasi utama. Integrasi mulus ini memastikan pengguna kami selalu memiliki informasi terbaru tentang status sistem kami, meningkatkan transparansi dan kepercayaan.
Upptime telah diadopsi oleh ratusan organisasi yang mencari cara yang transparan dan andal untuk memantau layanan mereka dan mengkomunikasikan status kepada pengguna. Keberhasilan proyek ini menunjukkan kekuatan membangun alat yang memanfaatkan infrastruktur yang sudah ada (dalam hal ini, GitHub) untuk memecahkan masalah umum dengan cara baru.
Kontribusi Kami untuk Ekosistem Forward Email
Sementara paket open source kami digunakan oleh pengembang di seluruh dunia, paket-paket tersebut juga menjadi dasar dari layanan Forward Email kami sendiri. Peran ganda ini—sebagai pencipta sekaligus pengguna alat-alat ini—memberikan kami perspektif unik tentang penerapan nyata mereka dan mendorong perbaikan berkelanjutan.
Dari Paket ke Produksi
Perjalanan dari paket individual ke sistem produksi yang terpadu melibatkan integrasi dan perluasan yang cermat. Untuk Forward Email, proses ini meliputi:
- Ekstensi Kustom: Membangun ekstensi khusus Forward Email pada paket open source kami yang memenuhi kebutuhan unik kami.
- Pola Integrasi: Mengembangkan pola bagaimana paket-paket ini berinteraksi dalam lingkungan produksi.
- Optimasi Performa: Mengidentifikasi dan mengatasi hambatan performa yang hanya muncul pada skala besar.
- Penguatan Keamanan: Menambahkan lapisan keamanan tambahan yang spesifik untuk penanganan email dan perlindungan data pengguna.
Pekerjaan ini mewakili ribuan jam pengembangan di luar paket inti itu sendiri, menghasilkan layanan email yang tangguh dan aman yang memanfaatkan kontribusi open source terbaik kami.
Siklus Umpan Balik
Mungkin aspek paling berharga dari menggunakan paket kami sendiri dalam produksi adalah siklus umpan balik yang tercipta. Ketika kami menemukan keterbatasan atau kasus tepi di Forward Email, kami tidak hanya memperbaikinya secara lokal—kami meningkatkan paket dasar, yang menguntungkan layanan kami dan komunitas yang lebih luas.
Pendekatan ini telah menghasilkan banyak perbaikan:
- Graceful Shutdown Bree: Kebutuhan Forward Email untuk deployment tanpa downtime memicu peningkatan kemampuan graceful shutdown di Bree.
- Pengenalan Pola Spam Scanner: Pola spam nyata yang ditemui di Forward Email telah menginformasikan algoritma deteksi Spam Scanner.
- Optimasi Performa Cabin: Logging volume tinggi di produksi mengungkap peluang optimasi di Cabin yang menguntungkan semua pengguna.
Dengan mempertahankan siklus positif antara pekerjaan open source kami dan layanan produksi, kami memastikan paket kami tetap menjadi solusi praktis dan teruji, bukan implementasi teoretis.
Prinsip Inti Forward Email: Fondasi untuk Keunggulan
Forward Email dirancang berdasarkan seperangkat prinsip inti yang membimbing semua keputusan pengembangan kami. Prinsip-prinsip ini, yang dijelaskan di website, memastikan layanan kami tetap ramah pengembang, aman, dan fokus pada privasi pengguna.
Selalu Ramah Pengembang, Fokus Keamanan, dan Transparan
Prinsip utama kami adalah menciptakan perangkat lunak yang ramah pengembang sekaligus mempertahankan standar tertinggi keamanan dan privasi. Kami percaya bahwa keunggulan teknis tidak boleh mengorbankan kemudahan penggunaan, dan transparansi membangun kepercayaan dengan komunitas kami.
Prinsip ini tercermin dalam dokumentasi kami yang rinci, pesan kesalahan yang jelas, dan komunikasi terbuka tentang keberhasilan maupun tantangan. Dengan menjadikan seluruh kode kami open source, kami mengundang pengawasan dan kolaborasi, memperkuat perangkat lunak kami dan ekosistem yang lebih luas.
Kepatuhan pada Prinsip Pengembangan Perangkat Lunak yang Teruji Waktu
Kami mengikuti beberapa prinsip pengembangan perangkat lunak yang telah terbukti nilainya selama puluhan tahun:
- MVC: Memisahkan kepentingan melalui pola Model-View-Controller
- Filsafat Unix: Membuat komponen modular yang melakukan satu hal dengan baik
- KISS: Menjaga agar tetap Sederhana dan Langsung
- DRY: Jangan Mengulangi Diri Sendiri, mendorong penggunaan ulang kode
- YAGNI: Kamu Tidak Akan Membutuhkannya, menghindari optimasi prematur
- Twelve Factor: Mengikuti praktik terbaik untuk membangun aplikasi modern yang skalabel
- Pisau cukur Occam: Memilih solusi paling sederhana yang memenuhi kebutuhan
- Dogfooding: Menggunakan produk kami sendiri secara luas Prinsip-prinsip ini bukan hanya konsep teoretis—mereka tertanam dalam praktik pengembangan harian kami. Misalnya, kepatuhan kami terhadap filosofi Unix terlihat dari bagaimana kami menyusun paket npm kami: modul kecil dan terfokus yang dapat digabungkan untuk menyelesaikan masalah kompleks.
Menargetkan Pengembang yang Mandiri dan Bootstrapped
Kami secara khusus menargetkan pengembang yang mandiri, bootstrapped, dan ramen-profitable. Fokus ini membentuk segala sesuatu mulai dari model harga kami hingga keputusan teknis kami. Kami memahami tantangan membangun produk dengan sumber daya terbatas karena kami pernah mengalaminya sendiri.
Prinsip ini sangat penting dalam pendekatan kami terhadap open source. Kami membuat dan memelihara paket yang menyelesaikan masalah nyata bagi pengembang tanpa anggaran perusahaan, membuat alat yang kuat dapat diakses oleh semua orang tanpa memandang sumber daya mereka.
Prinsip dalam Praktik: Codebase Forward Email
Prinsip-prinsip ini terlihat jelas dalam codebase Forward Email. File package.json kami mengungkapkan pemilihan dependensi yang dipikirkan dengan matang, masing-masing dipilih untuk selaras dengan nilai inti kami:
- Paket yang berfokus pada keamanan seperti
mailauthuntuk autentikasi email - Alat yang ramah pengembang seperti
preview-emailuntuk debugging yang lebih mudah - Komponen modular seperti berbagai utilitas
p-*dari Sindre Sorhus
Dengan mengikuti prinsip-prinsip ini secara konsisten dari waktu ke waktu, kami telah membangun layanan yang dapat dipercaya pengembang untuk infrastruktur email mereka—aman, andal, dan selaras dengan nilai komunitas open source.
Privasi berdasarkan Desain
Privasi bukanlah pemikiran tambahan atau fitur pemasaran untuk Forward Email—ini adalah prinsip desain fundamental yang menginformasikan setiap aspek layanan dan kode kami:
- Enkripsi Tanpa Akses: Kami telah mengimplementasikan sistem yang membuat kami secara teknis tidak mungkin membaca email pengguna.
- Pengumpulan Data Minimal: Kami hanya mengumpulkan data yang diperlukan untuk menyediakan layanan kami, tidak lebih.
- Kebijakan Transparan: Kebijakan privasi kami ditulis dalam bahasa yang jelas dan mudah dipahami tanpa jargon hukum.
- Verifikasi Open Source: Codebase open source kami memungkinkan peneliti keamanan untuk memverifikasi klaim privasi kami.
Komitmen ini juga meluas ke paket open source kami, yang dirancang dengan praktik terbaik keamanan dan privasi yang dibangun sejak awal.
Open Source yang Berkelanjutan
Kami percaya bahwa perangkat lunak open source membutuhkan model yang berkelanjutan agar dapat berkembang dalam jangka panjang. Pendekatan kami meliputi:
- Dukungan Komersial: Menawarkan dukungan premium dan layanan di sekitar alat open source kami.
- Lisensi Seimbang: Menggunakan lisensi yang melindungi kebebasan pengguna sekaligus keberlanjutan proyek.
- Keterlibatan Komunitas: Aktif berinteraksi dengan kontributor untuk membangun komunitas yang mendukung.
- Roadmap Transparan: Membagikan rencana pengembangan kami agar pengguna dapat merencanakan dengan baik.
Dengan fokus pada keberlanjutan, kami memastikan kontribusi open source kami dapat terus tumbuh dan berkembang dari waktu ke waktu daripada terabaikan.
Angka Tidak Berbohong: Statistik Unduhan npm Kami yang Mencengangkan
Ketika kami berbicara tentang dampak perangkat lunak open source, statistik unduhan memberikan ukuran nyata dari adopsi dan kepercayaan. Banyak paket yang kami bantu pelihara telah mencapai skala yang jarang dicapai oleh proyek open source lainnya, dengan jumlah unduhan gabungan mencapai miliaran.
Important
Meskipun kami bangga membantu memelihara beberapa paket dengan unduhan tinggi di ekosistem JavaScript, kami ingin mengakui bahwa banyak dari paket ini awalnya dibuat oleh pengembang berbakat lainnya. Paket seperti superagent dan supertest awalnya dibuat oleh TJ Holowaychuk, yang kontribusinya yang produktif terhadap open source sangat berperan dalam membentuk ekosistem Node.js.
Gambaran Umum Dampak Kami
Dalam periode dua bulan dari Februari hingga Maret 2025, paket-paket utama yang kami kontribusikan dan bantu pelihara mencatat angka unduhan yang luar biasa:
- superagent: 84.575.829 unduhan[6] (awalnya dibuat oleh TJ Holowaychuk)
- supertest: 76.432.591 unduhan[7] (awalnya dibuat oleh TJ Holowaychuk)
- koa: 28.539.295 unduhan[8] (awalnya dibuat oleh TJ Holowaychuk)
- @koa/router: 11.007.327 unduhan[9]
- koa-router: 3.498.918 unduhan[10]
- url-regex: 2.819.520 unduhan[11]
- preview-email: 2.500.000 unduhan[12]
- cabin: 1.800.000 unduhan[13]
- @breejs/later: 1.709.938 unduhan[14]
- email-templates: 1.128.139 unduhan[15]
- get-paths: 1.124.686 unduhan[16]
- url-regex-safe: 1.200.000 unduhan[17]
- dotenv-parse-variables: 894.666 unduhan[18]
- @koa/multer: 839.585 unduhan[19]
- spamscanner: 145.000 unduhan[20]
- bree: 24.270 unduhan[21]
Note
Beberapa paket lain yang kami bantu pelihara tetapi tidak kami buat memiliki jumlah unduhan yang bahkan lebih tinggi, termasuk form-data (lebih dari 738 juta unduhan), toidentifier (lebih dari 309 juta unduhan), stackframe (lebih dari 116 juta unduhan), dan error-stack-parser (lebih dari 113 juta unduhan). Kami merasa terhormat dapat berkontribusi pada paket-paket ini sambil menghormati karya para pembuat aslinya.
Ini bukan hanya angka yang mengesankan—angka ini mewakili pengembang nyata yang memecahkan masalah nyata dengan kode yang kami bantu pelihara. Setiap unduhan adalah sebuah momen di mana paket-paket ini membantu seseorang membangun sesuatu yang bermakna, mulai dari proyek hobi hingga aplikasi perusahaan yang digunakan oleh jutaan orang.
Dampak Harian dalam Skala Besar
Pola unduhan harian menunjukkan penggunaan yang konsisten dan volume tinggi, dengan puncak mencapai jutaan unduhan per hari[22]. Konsistensi ini menunjukkan stabilitas dan keandalan paket-paket ini—pengembang tidak hanya mencoba, mereka mengintegrasikannya ke dalam alur kerja inti mereka dan bergantung pada paket-paket ini hari demi hari.
Pola unduhan mingguan menunjukkan angka yang bahkan lebih mengesankan, secara konsisten berada di sekitar puluhan juta unduhan per minggu[23]. Ini menunjukkan jejak yang sangat besar dalam ekosistem JavaScript, dengan paket-paket ini berjalan di lingkungan produksi di seluruh dunia.
Lebih dari Sekadar Angka Mentah
Meskipun statistik unduhan sudah mengesankan, mereka menceritakan kisah yang lebih dalam tentang kepercayaan komunitas terhadap paket-paket ini. Memelihara paket dalam skala ini membutuhkan komitmen yang tak tergoyahkan terhadap:
- Kompatibilitas Mundur: Perubahan harus dipertimbangkan dengan hati-hati agar tidak merusak implementasi yang sudah ada.
- Keamanan: Dengan jutaan aplikasi yang bergantung pada paket-paket ini, kerentanan keamanan dapat memiliki konsekuensi yang luas.
- Performa: Dalam skala ini, bahkan peningkatan performa kecil dapat memberikan manfaat agregat yang signifikan.
- Dokumentasi: Dokumentasi yang jelas dan komprehensif sangat penting untuk paket yang digunakan oleh pengembang dengan berbagai tingkat pengalaman.
Pertumbuhan konsisten dalam angka unduhan dari waktu ke waktu mencerminkan keberhasilan dalam memenuhi komitmen ini, membangun kepercayaan dengan komunitas pengembang melalui paket yang andal dan terpelihara dengan baik.
Mendukung Ekosistem: Sponsorship Open Source Kami
Tip
Keberlanjutan open source bukan hanya tentang berkontribusi kode—tetapi juga tentang mendukung para pengembang yang memelihara infrastruktur penting.
Selain kontribusi langsung kami pada ekosistem JavaScript, kami bangga mensponsori kontributor Node.js terkemuka yang karyanya menjadi fondasi banyak aplikasi modern. Sponsorship kami meliputi:
Andris Reinman: Pelopor Infrastruktur Email
Andris Reinman adalah pencipta Nodemailer, perpustakaan pengiriman email paling populer untuk Node.js dengan lebih dari 14 juta unduhan mingguan[24]. Karyanya meluas ke komponen infrastruktur email penting lainnya seperti SMTP Server, Mailparser, dan WildDuck.
Sponsorship kami membantu memastikan pemeliharaan dan pengembangan berkelanjutan dari alat-alat penting ini yang mendukung komunikasi email bagi banyak aplikasi Node.js, termasuk layanan Forward Email kami sendiri.
Sindre Sorhus: Ahli Paket Utilitas
Sindre Sorhus adalah salah satu kontributor open source paling produktif di ekosistem JavaScript, dengan lebih dari 1.000 paket npm atas namanya. Utilitasnya seperti p-map, p-retry, dan is-stream adalah blok bangunan fundamental yang digunakan di seluruh ekosistem Node.js.
Dengan mensponsori karya Sindre, kami membantu mempertahankan pengembangan utilitas penting ini yang membuat pengembangan JavaScript menjadi lebih efisien dan andal.
Sponsorship ini mencerminkan komitmen kami terhadap ekosistem open source yang lebih luas. Kami menyadari bahwa kesuksesan kami sendiri dibangun di atas fondasi yang diletakkan oleh kontributor ini dan lainnya, dan kami berdedikasi untuk memastikan keberlanjutan seluruh ekosistem.
Mengungkap Kerentanan Keamanan di Ekosistem JavaScript
Komitmen kami terhadap open source melampaui pengembangan fitur untuk mencakup identifikasi dan penanganan kerentanan keamanan yang dapat berdampak pada jutaan pengembang. Beberapa kontribusi paling signifikan kami pada ekosistem JavaScript berada di ranah keamanan.
Penyelamatan Koa-Router
Pada Februari 2019, Nick mengidentifikasi masalah kritis dengan pemeliharaan paket koa-router yang populer. Seperti yang dia laporkan di Hacker News, paket tersebut telah ditinggalkan oleh pemelihara aslinya, meninggalkan kerentanan keamanan yang tidak ditangani dan komunitas tanpa pembaruan.
Warning
Paket yang ditinggalkan dengan kerentanan keamanan menimbulkan risiko signifikan bagi seluruh ekosistem, terutama ketika diunduh jutaan kali setiap minggu.
Sebagai tanggapan, Nick membuat @koa/router dan membantu memberi tahu komunitas tentang situasi tersebut. Dia telah memelihara paket penting ini sejak saat itu, memastikan pengguna Koa memiliki solusi routing yang aman dan terpelihara dengan baik.
Menangani Kerentanan ReDoS
Pada 2020, Nick mengidentifikasi dan menangani kerentanan Regular Expression Denial of Service (ReDoS) kritis dalam paket url-regex yang banyak digunakan. Kerentanan ini (SNYK-JS-URLREGEX-569472) dapat memungkinkan penyerang menyebabkan penolakan layanan dengan memberikan input khusus yang menyebabkan backtracking katastrofik dalam ekspresi reguler.
Alih-alih hanya memperbaiki paket yang ada, Nick membuat url-regex-safe, sebuah implementasi yang ditulis ulang sepenuhnya yang mengatasi kerentanan tersebut sambil mempertahankan kompatibilitas dengan API asli. Dia juga menerbitkan posting blog komprehensif yang menjelaskan kerentanan dan cara menguranginya.
Pekerjaan ini menunjukkan pendekatan kami terhadap keamanan: tidak hanya memperbaiki masalah tetapi juga mendidik komunitas dan menyediakan alternatif yang kuat yang mencegah masalah serupa di masa depan.
Mengadvokasi Keamanan Node.js dan Chromium
Nick juga aktif dalam mengadvokasi peningkatan keamanan di ekosistem yang lebih luas. Pada Agustus 2020, ia mengidentifikasi masalah keamanan signifikan di Node.js terkait dengan penanganan header HTTP, yang dilaporkan di The Register.
Masalah ini, yang berasal dari patch di Chromium, berpotensi memungkinkan penyerang untuk melewati langkah-langkah keamanan. Advokasi Nick membantu memastikan bahwa masalah tersebut segera ditangani, melindungi jutaan aplikasi Node.js dari potensi eksploitasi.
Mengamankan Infrastruktur npm
Pada bulan yang sama, Nick mengidentifikasi masalah keamanan kritis lainnya, kali ini di infrastruktur email npm. Seperti yang dilaporkan di The Register, npm tidak menerapkan protokol autentikasi email DMARC, SPF, dan DKIM dengan benar, yang berpotensi memungkinkan penyerang mengirim email phishing yang tampak berasal dari npm.
Laporan Nick mendorong perbaikan dalam postur keamanan email npm, melindungi jutaan pengembang yang mengandalkan npm untuk manajemen paket dari potensi serangan phishing.
Kontribusi Kami untuk Ekosistem Forward Email
Forward Email dibangun di atas beberapa proyek open source penting, termasuk Nodemailer, WildDuck, dan mailauth. Tim kami telah memberikan kontribusi signifikan pada proyek-proyek ini, membantu mengidentifikasi dan memperbaiki masalah mendalam yang memengaruhi pengiriman dan keamanan email.
Meningkatkan Fungsi Inti Nodemailer
Nodemailer adalah tulang punggung pengiriman email di Node.js, dan kontribusi kami telah membantu membuatnya lebih tangguh:
- Perbaikan Server SMTP: Kami telah memperbaiki bug parsing, masalah penanganan stream, dan masalah konfigurasi TLS pada komponen server SMTP[25][26].
- Peningkatan Mail Parser: Kami telah mengatasi kesalahan decoding urutan karakter dan masalah parser alamat yang dapat menyebabkan kegagalan pemrosesan email[27][28].
Kontribusi ini memastikan bahwa Nodemailer tetap menjadi fondasi yang andal untuk pemrosesan email dalam aplikasi Node.js, termasuk Forward Email.
Memajukan Autentikasi Email dengan Mailauth
Mailauth menyediakan fungsi autentikasi email yang penting, dan kontribusi kami telah secara signifikan meningkatkan kemampuannya:
- Perbaikan Verifikasi DKIM: Kami menemukan dan melaporkan bahwa X/Twitter mengalami masalah cache DNS yang menyebabkan kegagalan DKIM untuk pesan keluar mereka, melaporkannya di Hacker One[29].
- Peningkatan DMARC dan ARC: Kami telah memperbaiki masalah dengan verifikasi DMARC dan ARC yang dapat menyebabkan hasil autentikasi yang salah[30][31].
- Optimasi Performa: Kami telah memberikan kontribusi optimasi yang meningkatkan performa proses autentikasi email[32][33][34][35].
Perbaikan ini membantu memastikan bahwa autentikasi email akurat dan dapat diandalkan, melindungi pengguna dari serangan phishing dan spoofing.
Peningkatan Utama Upptime
Kontribusi kami untuk Upptime meliputi:
- Pemantauan Sertifikat SSL: Kami menambahkan fungsi untuk memantau masa berlaku sertifikat SSL, mencegah downtime tak terduga akibat sertifikat yang kedaluwarsa[36].
- Dukungan Beberapa Nomor SMS: Kami mengimplementasikan dukungan untuk memberi peringatan kepada beberapa anggota tim melalui SMS saat insiden terjadi, meningkatkan waktu respons[37].
- Perbaikan Pemeriksaan IPv6: Kami memperbaiki masalah dengan pemeriksaan konektivitas IPv6, memastikan pemantauan yang lebih akurat di lingkungan jaringan modern[38].
- Dukungan Mode Gelap/Terang: Kami menambahkan dukungan tema untuk meningkatkan pengalaman pengguna pada halaman status[39].
- Dukungan TCP-Ping yang Lebih Baik: Kami meningkatkan fungsi ping TCP untuk memberikan pengujian koneksi yang lebih andal[40]. Perbaikan ini tidak hanya menguntungkan pemantauan status Forward Email tetapi juga tersedia untuk seluruh komunitas pengguna Upptime, menunjukkan komitmen kami untuk meningkatkan alat yang kami andalkan.
Perekat yang Menyatukan Semuanya: Kode Kustom dalam Skala Besar
Meskipun paket npm kami dan kontribusi pada proyek yang sudah ada sangat berarti, kode kustom yang mengintegrasikan komponen-komponen ini benar-benar menunjukkan keahlian teknis kami. Basis kode Forward Email mewakili upaya pengembangan selama satu dekade, dimulai sejak 2017 ketika proyek ini bermula sebagai free-email-forwarding sebelum digabungkan ke dalam monorepo.
Upaya Pengembangan yang Besar
Skala kode integrasi kustom ini sangat mengesankan:
- Total Kontribusi: Lebih dari 3.217 commit
- Ukuran Basis Kode: Lebih dari 421.545 baris kode di berbagai file JavaScript, Pug, CSS, dan JSON[^33]
Ini mewakili ribuan jam kerja pengembangan, sesi debugging, dan optimasi performa. Ini adalah "rahasia" yang mengubah paket-paket individual menjadi layanan yang kohesif dan dapat diandalkan yang digunakan oleh ribuan pelanggan setiap hari.
Integrasi Dependensi Inti
Basis kode Forward Email mengintegrasikan banyak dependensi menjadi satu kesatuan yang mulus:
- Pemrosesan Email: Mengintegrasikan Nodemailer untuk pengiriman, SMTP Server untuk penerimaan, dan Mailparser untuk parsing
- Otentikasi: Menggunakan Mailauth untuk verifikasi DKIM, SPF, DMARC, dan ARC
- Resolusi DNS: Memanfaatkan Tangerine untuk DNS-over-HTTPS dengan caching global
- Koneksi MX: Menggunakan mx-connect dengan integrasi Tangerine untuk koneksi server mail yang andal
- Penjadwalan Tugas: Memakai Bree untuk pemrosesan tugas latar belakang yang andal dengan worker threads
- Templating: Menggunakan email-templates untuk menggunakan ulang stylesheet dari situs web dalam komunikasi pelanggan
- Penyimpanan Email: Menerapkan kotak surat SQLite yang dienkripsi secara individual menggunakan better-sqlite3-multiple-ciphers dengan enkripsi ChaCha20-Poly1305 untuk privasi yang tahan kuantum, memastikan isolasi penuh antar pengguna dan hanya pengguna yang memiliki akses ke kotak surat mereka
Setiap integrasi ini memerlukan pertimbangan cermat terhadap kasus tepi, implikasi performa, dan masalah keamanan. Hasilnya adalah sistem yang tangguh yang menangani jutaan transaksi email dengan andal. Implementasi SQLite kami juga memanfaatkan msgpackr untuk serialisasi biner yang efisien dan WebSockets (melalui ws) untuk pembaruan status real-time di seluruh infrastruktur kami.
Infrastruktur DNS dengan Tangerine dan mx-connect
Komponen penting dari infrastruktur Forward Email adalah sistem resolusi DNS kami, yang dibangun di sekitar dua paket utama:
-
Tangerine: Implementasi DNS-over-HTTPS Node.js kami menyediakan pengganti langsung untuk resolver DNS standar, dengan retry bawaan, timeout, rotasi server cerdas, dan dukungan caching.
-
mx-connect: Paket ini membuat koneksi TCP ke server MX, mengambil domain target atau alamat email, menyelesaikan server MX yang sesuai, dan menghubungkan ke mereka berdasarkan urutan prioritas.
Kami telah mengintegrasikan Tangerine dengan mx-connect melalui pull request #4, memastikan permintaan DNS over HTTP di lapisan aplikasi di seluruh Forward Email. Ini menyediakan caching global untuk DNS dalam skala besar dengan konsistensi 1:1 di seluruh wilayah, aplikasi, atau proses—penting untuk pengiriman email yang andal dalam sistem terdistribusi.
Dampak Enterprise: Dari Open Source ke Solusi Misi-Kritis
Puncak dari perjalanan kami selama satu dekade dalam pengembangan open source telah memungkinkan Forward Email melayani tidak hanya pengembang individu tetapi juga perusahaan besar dan institusi pendidikan yang menjadi tulang punggung gerakan open source itu sendiri.
Studi Kasus dalam Infrastruktur Email yang Sangat Penting
Komitmen kami terhadap keandalan, privasi, dan prinsip sumber terbuka telah menjadikan Forward Email pilihan terpercaya bagi organisasi dengan kebutuhan email yang menuntut:
-
Institusi Pendidikan: Seperti yang dijelaskan dalam studi kasus penerusan email alumni, universitas-universitas besar mengandalkan infrastruktur kami untuk menjaga hubungan seumur hidup dengan ratusan ribu alumni melalui layanan penerusan email yang andal.
-
Solusi Linux Perusahaan: Studi kasus email perusahaan Canonical Ubuntu menunjukkan bagaimana pendekatan sumber terbuka kami sangat sesuai dengan kebutuhan penyedia Linux perusahaan, memberikan mereka transparansi dan kontrol yang mereka perlukan.
-
Yayasan Sumber Terbuka: Mungkin yang paling membuktikan adalah kemitraan kami dengan Linux Foundation, seperti yang didokumentasikan dalam studi kasus email perusahaan Linux Foundation, di mana layanan kami mendukung komunikasi untuk organisasi yang mengelola pengembangan Linux.
Ada simetri yang indah dalam bagaimana paket sumber terbuka kami, yang dipelihara dengan cermat selama bertahun-tahun, telah memungkinkan kami membangun layanan email yang kini mendukung komunitas dan organisasi yang memperjuangkan perangkat lunak sumber terbuka. Perjalanan penuh lingkaran ini—dari berkontribusi paket individu hingga mendukung infrastruktur email kelas perusahaan untuk pemimpin sumber terbuka—mewakili validasi tertinggi dari pendekatan kami terhadap pengembangan perangkat lunak.
Satu Dekade Sumber Terbuka: Melihat ke Depan
Saat kami menengok kembali satu dekade kontribusi sumber terbuka dan menatap sepuluh tahun ke depan, kami dipenuhi rasa syukur atas komunitas yang telah mendukung pekerjaan kami dan antusiasme untuk apa yang akan datang.
Perjalanan kami dari kontributor paket individu menjadi pemelihara infrastruktur email komprehensif yang digunakan oleh perusahaan besar dan yayasan sumber terbuka sangat luar biasa. Ini adalah bukti kekuatan pengembangan sumber terbuka dan dampak yang dapat diberikan perangkat lunak yang dipelihara dengan baik dan penuh perhatian pada ekosistem yang lebih luas.
Dalam beberapa tahun mendatang, kami berkomitmen untuk:
- Terus memelihara dan meningkatkan paket yang sudah ada, memastikan mereka tetap menjadi alat yang andal bagi pengembang di seluruh dunia.
- Memperluas kontribusi kami pada proyek infrastruktur kritis, terutama di bidang email dan keamanan.
- Meningkatkan kemampuan Forward Email sambil mempertahankan komitmen kami terhadap privasi, keamanan, dan transparansi.
- Mendukung generasi berikutnya dari kontributor sumber terbuka melalui bimbingan, sponsor, dan keterlibatan komunitas.
Kami percaya bahwa masa depan pengembangan perangkat lunak adalah terbuka, kolaboratif, dan dibangun di atas fondasi kepercayaan. Dengan terus berkontribusi paket berkualitas tinggi yang berfokus pada keamanan ke ekosistem JavaScript, kami berharap dapat memainkan peran kecil dalam membangun masa depan tersebut.
Terima kasih kepada semua yang telah menggunakan paket kami, berkontribusi pada proyek kami, melaporkan masalah, atau sekadar menyebarkan kabar tentang pekerjaan kami. Dukungan Anda telah memungkinkan dampak selama satu dekade ini, dan kami sangat antusias melihat apa yang bisa kita capai bersama dalam sepuluh tahun ke depan.
statistik unduhan npm untuk cabin, April 2025 ↩︎
statistik unduhan npm untuk bson-objectid, Februari-Maret 2025 ↩︎
statistik unduhan npm untuk url-regex-safe, April 2025 ↩︎
jumlah bintang GitHub untuk forwardemail/forwardemail.net per April 2025 ↩︎
statistik unduhan npm untuk preview-email, April 2025 ↩︎
statistik unduhan npm untuk superagent, Februari-Maret 2025 ↩︎
statistik unduhan npm untuk supertest, Februari-Maret 2025 ↩︎
statistik unduhan npm untuk koa, Februari-Maret 2025 ↩︎
statistik unduhan npm untuk @koa/router, Februari-Maret 2025 ↩︎
statistik unduhan npm untuk koa-router, Februari-Maret 2025 ↩︎
statistik unduhan npm untuk url-regex, Februari-Maret 2025 ↩︎
statistik unduhan npm untuk preview-email, Februari-Maret 2025 ↩︎
statistik unduhan npm untuk cabin, Februari-Maret 2025 ↩︎
statistik unduhan npm untuk @breejs/later, Februari-Maret 2025 ↩︎
statistik unduhan npm untuk email-templates, Februari-Maret 2025 ↩︎
statistik unduhan npm untuk get-paths, Februari-Maret 2025 ↩︎
statistik unduhan npm untuk url-regex-safe, Februari-Maret 2025 ↩︎
statistik unduhan npm untuk dotenv-parse-variables, Februari-Maret 2025 ↩︎
statistik unduhan npm untuk @koa/multer, Februari-Maret 2025 ↩︎
statistik unduhan npm untuk spamscanner, Februari-Maret 2025 ↩︎
statistik unduhan npm untuk bree, Februari-Maret 2025 ↩︎
Pola unduhan harian dari statistik npm, April 2025 ↩︎
Pola unduhan mingguan dari statistik npm, April 2025 ↩︎
statistik unduhan npm untuk nodemailer, April 2025 ↩︎
https://github.com/nodemailer/smtp-server/issues/node-v12-requires-tls-min ↩︎
Berdasarkan isu GitHub di repositori Upptime ↩︎
Berdasarkan isu GitHub di repositori Upptime ↩︎
Berdasarkan isu GitHub di repositori Upptime ↩︎
Berdasarkan permintaan tarik GitHub ke Upptime ↩︎
Berdasarkan permintaan tarik GitHub ke Upptime ↩︎