Một thập kỷ tác động: Cách các gói npm của chúng tôi đạt 1 tỷ lượt tải xuống và định hình JavaScript
Trong JavaScript Và Node.js world, một số gói là thiết yếu—được tải xuống hàng triệu lần mỗi ngày và cung cấp năng lượng cho các ứng dụng trên toàn thế giới. Đằng sau những công cụ này là các nhà phát triển tập trung vào chất lượng nguồn mở. Hôm nay, chúng tôi sẽ trình bày cách nhóm của chúng tôi giúp xây dựng và duy trì các gói npm đã trở thành một phần quan trọng của hệ sinh thái JavaScript.
Những Người Tiên Phong Tin Tưởng Chúng Tôi: Isaac Z. Schlueter và Email Chuyển Tiếp
Chúng tôi tự hào khi có Isaac Z. Schlueter (GitHub: isaacs) với tư cách là người dùng. Isaac đã tạo ra npm và đã giúp xây dựng Node.js. Sự tin tưởng của anh ấy vào Forward Email cho thấy chúng tôi tập trung vào chất lượng và bảo mật. Isaac sử dụng Forward Email cho một số tên miền bao gồm izs.me.
Tác động của Isaac đối với JavaScript là rất lớn. Năm 2009, anh là một trong những người đầu tiên nhìn thấy tiềm năng của Node.js, làm việc với Ryan Dahl, người đã tạo ra nền tảng này. Như Isaac đã nói trong một phỏng vấn với tạp chí Increment: "Giữa một cộng đồng rất nhỏ gồm một nhóm người đang cố gắng tìm ra cách tạo ra JS phía máy chủ, Ryan Dahl đã đưa ra Node, đây rõ ràng là cách tiếp cận đúng đắn. Tôi đã tham gia vào đó và tham gia rất tích cực vào khoảng giữa năm 2009."
[!LƯU Ý] Đối với những ai quan tâm đến lịch sử của Node.js, có những bộ phim tài liệu tuyệt vời ghi lại quá trình phát triển của nó, bao gồm Câu chuyện về Node.js Và 10 điều tôi hối tiếc về Node.js - Ryan Dahl. Ryan Dahl của trang web cá nhân cũng chứa đựng những hiểu biết giá trị về công việc của ông.
Từ sự sáng tạo của npm đến sự lãnh đạo của Node.js
Isaac đã tạo ra npm vào tháng 9 năm 2009, với phiên bản đầu tiên có thể sử dụng được phát hành vào đầu năm 2010. Trình quản lý gói này đã đáp ứng một nhu cầu quan trọng trong Node.js, cho phép các nhà phát triển dễ dàng chia sẻ và tái sử dụng mã. Theo Trang Wikipedia Node.js"Vào tháng 1 năm 2010, một trình quản lý gói được giới thiệu cho môi trường Node.js có tên là npm. Trình quản lý gói cho phép các lập trình viên phát hành và chia sẻ các gói Node.js cùng với mã nguồn đi kèm và được thiết kế để đơn giản hóa việc cài đặt, cập nhật và gỡ cài đặt các gói."
Khi Ryan Dahl rời khỏi Node.js vào tháng 1 năm 2012, Isaac đã tiếp quản vị trí trưởng nhóm dự án. Như đã lưu ý trên tóm tắt của anh ấy, ông "Dẫn dắt quá trình phát triển một số API cốt lõi cơ bản của Node.js, bao gồm hệ thống mô-đun CommonJS, API hệ thống tệp và luồng" và "Hoạt động như BDFL (Nhà độc tài nhân từ trọn đời) của dự án trong 2 năm, đảm bảo chất lượng ngày càng tăng và quy trình xây dựng đáng tin cậy cho các phiên bản Node.js từ v0.6 đến v0.10."
Isaac đã hướng dẫn Node.js qua một giai đoạn tăng trưởng quan trọng, thiết lập các tiêu chuẩn vẫn định hình nền tảng này cho đến ngày nay. Sau đó, anh ấy đã thành lập npm, Inc. vào năm 2014 để hỗ trợ sổ đăng ký npm, nơi anh ấy đã tự mình điều hành trước đây.
Chúng tôi cảm ơn Isaac vì những đóng góp to lớn của anh cho JavaScript và tiếp tục sử dụng nhiều gói anh đã tạo ra. Công trình của anh đã thay đổi cách chúng ta xây dựng phần mềm và cách hàng triệu nhà phát triển chia sẻ mã trên toàn thế giới.
Kiến trúc sư đằng sau mã lệnh: Hành trình của Nick Baugh
Trọng tâm thành công của mã nguồn mở của chúng tôi là Nick Baugh, người sáng lập và chủ sở hữu của Forward Email. Công việc của ông trong JavaScript kéo dài gần 20 năm và đã định hình cách vô số nhà phát triển xây dựng ứng dụng. Hành trình mã nguồn mở của ông cho thấy cả kỹ năng kỹ thuật và khả năng lãnh đạo cộng đồng.
Ủy ban kỹ thuật Express và những đóng góp cốt lõi
Chuyên môn về khuôn khổ web của Nick đã giúp anh có được một vị trí trong Ủy ban Kỹ thuật Express, nơi anh ấy đã giúp đỡ một trong những khuôn khổ Node.js được sử dụng nhiều nhất. Nick hiện được liệt kê là thành viên không hoạt động trên Trang cộng đồng Express.
[!QUAN TRỌNG] Express ban đầu được tạo ra bởi TJ Holowaychuk, một cộng tác viên mã nguồn mở năng suất đã định hình phần lớn hệ sinh thái Node.js. Chúng tôi biết ơn công trình sáng lập của TJ và tôn trọng quyết định nghỉ ngơi từ những đóng góp to lớn của ông về mã nguồn mở.
Là một thành viên của Ủy ban Kỹ thuật Express, Nick đã thể hiện sự chú ý lớn đến từng chi tiết trong các vấn đề như làm rõ req.originalUrl
lập tài liệu và khắc phục sự cố xử lý biểu mẫu nhiều phần.
Đóng góp của Koa Framework
Công việc của Nick với Khung Koa—một giải pháp thay thế hiện đại, nhẹ nhàng hơn cho Express cũng do TJ Holowaychuk tạo ra—cho thấy thêm cam kết của ông đối với các công cụ phát triển web tốt hơn. Những đóng góp của ông cho Koa bao gồm cả các vấn đề và mã thông qua các yêu cầu kéo, giải quyết việc xử lý lỗi, quản lý loại nội dung và cải tiến tài liệu.
Công việc của anh ấy trên cả Express và Koa mang lại cho anh ấy góc nhìn độc đáo về phát triển web Node.js, giúp nhóm của chúng tôi tạo ra các gói hoạt động tốt với nhiều hệ sinh thái khung.
Từ Người đóng góp cá nhân đến Lãnh đạo tổ chức
Những gì bắt đầu như việc giúp đỡ các dự án hiện có đã phát triển thành việc tạo ra và duy trì toàn bộ hệ sinh thái gói. Nick đã thành lập nhiều tổ chức GitHub—bao gồm Nhà gỗ, Máy quét thư rác, Chuyển tiếp email, Thanh niên, Và Bree—mỗi giải pháp giải quyết những nhu cầu cụ thể trong cộng đồng JavaScript.
Sự thay đổi này từ người đóng góp thành người lãnh đạo cho thấy tầm nhìn của Nick về phần mềm được thiết kế tốt có thể giải quyết các vấn đề thực tế. Bằng cách sắp xếp các gói liên quan theo các tổ chức GitHub tập trung, anh ấy đã xây dựng các hệ sinh thái công cụ hoạt động cùng nhau trong khi vẫn duy trì tính mô-đun và linh hoạt cho cộng đồng nhà phát triển rộng lớn hơn.
Các tổ chức GitHub của chúng tôi: Hệ sinh thái đổi mới
Chúng tôi tổ chức công việc nguồn mở của mình xung quanh các tổ chức GitHub tập trung, mỗi tổ chức giải quyết các nhu cầu cụ thể trong JavaScript. Cấu trúc này tạo ra các họ gói gắn kết hoạt động tốt với nhau trong khi vẫn duy trì tính mô-đun.
Cabin: Ghi nhật ký có cấu trúc cho các ứng dụng hiện đại
Các Tổ chức cabin là cách chúng tôi ghi nhật ký ứng dụng đơn giản và mạnh mẽ. Chính cabin
gói có gần 900 sao GitHub và hơn 100.000 lượt tải xuống hàng tuần[^1]. Cabin cung cấp chức năng ghi nhật ký có cấu trúc hoạt động với các dịch vụ phổ biến như Sentry, LogDNA và Papertrail.
Điều làm cho Cabin trở nên đặc biệt là hệ thống API và plugin chu đáo của nó. Hỗ trợ các gói như axe
cho phần mềm trung gian Express và parse-request
để phân tích yêu cầu HTTP cho thấy cam kết của chúng tôi về các giải pháp hoàn chỉnh thay vì các công cụ riêng lẻ.
Các bson-objectid
gói này xứng đáng được nhắc đến đặc biệt, với hơn 1,7 triệu lượt tải xuống chỉ trong hai tháng[^2]. Việc triển khai MongoDB ObjectID nhẹ này đã trở thành lựa chọn hàng đầu cho các nhà phát triển cần ID mà không cần phụ thuộc hoàn toàn vào MongoDB.
Máy quét thư rác: Chống lạm dụng email
Các Tổ chức quét thư rác cho thấy cam kết của chúng tôi trong việc giải quyết các vấn đề thực tế. spamscanner
gói cung cấp khả năng phát hiện thư rác email nâng cao, nhưng đó là url-regex-safe
gói đã được đón nhận một cách đáng kinh ngạc.
Với hơn 1,2 triệu lượt tải xuống trong hai tháng[^3], url-regex-safe
sửa các vấn đề bảo mật quan trọng trong các biểu thức chính quy phát hiện URL khác. Gói này cho thấy cách tiếp cận của chúng tôi đối với mã nguồn mở: tìm ra một vấn đề chung (trong trường hợp này, Làm lại lỗ hổng trong xác thực URL), tạo ra giải pháp vững chắc và duy trì giải pháp đó một cách cẩn thận.
Bree: Lên lịch công việc hiện đại với luồng công việc
Các Tổ chức Bree là câu trả lời của chúng tôi cho một thách thức phổ biến của Node.js: lập lịch công việc đáng tin cậy. bree
gói này, với hơn 3.100 sao GitHub, cung cấp trình lập lịch công việc hiện đại sử dụng luồng công việc Node.js để có hiệu suất và độ tin cậy tốt hơn.
[!LƯU Ý] Bree được tạo ra sau khi chúng tôi giúp duy trì Chương trình nghị sự, áp dụng các bài học kinh nghiệm để xây dựng một trình lập lịch công việc tốt hơn. Những đóng góp của chúng tôi cho Agenda đã giúp chúng tôi tìm ra cách cải thiện việc lập lịch công việc.
Điều gì làm cho Bree khác biệt so với các trình lập lịch khác như Agenda:
- Không có sự phụ thuộc bên ngoài:Không giống như Agenda cần MongoDB, Bree không yêu cầu Redis hoặc MongoDB để quản lý trạng thái công việc.
- Chủ đề công nhân:Bree sử dụng luồng công việc Node.js cho các quy trình hộp cát, mang lại khả năng cô lập và hiệu suất tốt hơn.
- API đơn giản:Bree cung cấp khả năng kiểm soát chi tiết một cách đơn giản, giúp việc thực hiện các nhu cầu lập lịch trình phức tạp trở nên dễ dàng hơn.
- Hỗ trợ tích hợp:Những thứ như tải lại nhẹ nhàng, công việc cron, ngày tháng và thời gian thân thiện với con người đều được bao gồm theo mặc định.
Bree là một phần quan trọng của forwardemail.net, xử lý các tác vụ nền quan trọng như xử lý email, dọn dẹp và bảo trì theo lịch trình. Sử dụng Bree trong Forward Email cho thấy cam kết của chúng tôi trong việc sử dụng các công cụ của riêng mình trong sản xuất, đảm bảo chúng đáp ứng các tiêu chuẩn độ tin cậy cao.
Chúng tôi cũng sử dụng và đánh giá cao các gói luồng công việc tuyệt vời khác như hồ bơi và các máy khách HTTP như mười một. Piscina, giống như Bree, sử dụng luồng công việc Node.js để xử lý tác vụ hiệu quả. Chúng tôi cảm ơn Đồi Matthew, người duy trì cả undici và piscina, vì những đóng góp to lớn của ông cho Node.js. Matteo phục vụ trong Ủy ban chỉ đạo kỹ thuật Node.js và đã cải thiện đáng kể khả năng của máy khách HTTP trong Node.js.
Chuyển tiếp Email: Cơ sở hạ tầng Email nguồn mở
Dự án tham vọng nhất của chúng tôi là Chuyển tiếp email, một dịch vụ email nguồn mở cung cấp dịch vụ chuyển tiếp email, lưu trữ và API. Kho lưu trữ chính có hơn 1.100 sao GitHub[^4], cho thấy sự đánh giá cao của cộng đồng đối với giải pháp thay thế này cho các dịch vụ email độc quyền.
Các preview-email
gói từ tổ chức này, với hơn 2,5 triệu lượt tải xuống trong hai tháng[^5], đã trở thành một công cụ thiết yếu cho các nhà phát triển làm việc với các mẫu email. Bằng cách cung cấp một cách đơn giản để xem trước email trong quá trình phát triển, nó giải quyết được một điểm khó khăn phổ biến trong việc xây dựng các ứng dụng hỗ trợ email.
Lad: Tiện ích và công cụ thiết yếu của Koa
Các Tổ chức Lad cung cấp một bộ sưu tập các tiện ích và công cụ thiết yếu chủ yếu tập trung vào việc nâng cao hệ sinh thái khung Koa. Các gói này giải quyết các thách thức chung trong phát triển web và được thiết kế để hoạt động liền mạch với nhau trong khi vẫn hữu ích độc lập.
koa-better-error-handler: Xử lý lỗi được cải thiện cho Koa
koa-better-error-handler
cung cấp giải pháp xử lý lỗi tốt hơn cho các ứng dụng Koa. Với hơn 50 sao GitHub, gói này tạo ra ctx.throw
tạo ra các thông báo lỗi thân thiện với người dùng trong khi giải quyết một số hạn chế của trình xử lý lỗi tích hợp của Koa:
- Phát hiện và xử lý đúng lỗi DNS Node.js, lỗi Mongoose và lỗi Redis
- Sử dụng Bùng nổ để tạo ra các phản hồi lỗi nhất quán, được định dạng tốt
- Giữ nguyên tiêu đề (không giống như trình xử lý tích hợp của Koa)
- Duy trì mã trạng thái phù hợp thay vì mặc định là 500
- Hỗ trợ tin nhắn flash và bảo toàn phiên
- Cung cấp danh sách lỗi HTML cho các lỗi xác thực
- Hỗ trợ nhiều loại phản hồi (HTML, JSON và văn bản thuần túy)
Gói này đặc biệt có giá trị khi sử dụng cùng với koa-404-handler
để quản lý lỗi toàn diện trong các ứng dụng Koa.
hộ chiếu: Xác thực cho Lad
@ladjs/passport
mở rộng phần mềm trung gian xác thực Passport.js phổ biến với các cải tiến cụ thể cho các ứng dụng web hiện đại. Gói này hỗ trợ nhiều chiến lược xác thực ngay khi cài đặt:
- Xác thực cục bộ bằng email
- Đăng nhập bằng Apple
- Xác thực GitHub
- Xác thực Google
- Xác thực mật khẩu một lần (OTP)
Gói này có khả năng tùy chỉnh cao, cho phép các nhà phát triển điều chỉnh tên trường và cụm từ để phù hợp với yêu cầu của ứng dụng. Gói này được thiết kế để tích hợp liền mạch với Mongoose để quản lý người dùng, khiến nó trở thành giải pháp lý tưởng cho các ứng dụng dựa trên Koa cần xác thực mạnh mẽ.
graceful: Tắt ứng dụng thanh lịch
@ladjs/graceful
giải quyết thách thức quan trọng là tắt ứng dụng Node.js một cách nhẹ nhàng. Với hơn 70 sao GitHub, gói này đảm bảo ứng dụng của bạn có thể kết thúc sạch sẽ mà không mất dữ liệu hoặc để kết nối bị treo. Các tính năng chính bao gồm:
- Hỗ trợ đóng máy chủ HTTP một cách nhẹ nhàng (Express/Koa/Fastify)
- Tắt sạch các kết nối cơ sở dữ liệu (MongoDB/Mongoose)
- Đóng đúng các máy khách Redis
- Xử lý lịch trình công việc của Bree
- Hỗ trợ cho trình xử lý tắt máy tùy chỉnh
- Cài đặt thời gian chờ có thể cấu hình
- Tích hợp với hệ thống ghi nhật ký
Gói này rất cần thiết cho các ứng dụng sản xuất, trong đó việc tắt máy đột ngột có thể dẫn đến mất dữ liệu hoặc hỏng dữ liệu. Bằng cách thực hiện các quy trình tắt máy phù hợp, @ladjs/graceful
giúp đảm bảo độ tin cậy và ổn định của ứng dụng của bạn.
Upptime: Giám sát thời gian hoạt động nguồn mở
Các Tổ chức Upptime thể hiện cam kết của chúng tôi đối với việc giám sát nguồn mở, minh bạch. Chính upptime
Kho lưu trữ có hơn 13.000 sao GitHub, khiến nó trở thành một trong những dự án phổ biến nhất mà chúng tôi đóng góp. Upptime cung cấp trình giám sát thời gian hoạt động và trang trạng thái do GitHub cung cấp, hoạt động hoàn toàn mà không cần máy chủ.
Chúng tôi sử dụng Upptime cho trang trạng thái của riêng chúng tôi tại https://status.forwardemail.net với mã nguồn có sẵn tại https://github.com/forwardemail/status.forwardemail.net.
Điều làm cho Upptime trở nên đặc biệt là kiến trúc của nó:
- 100% Nguồn mở:Mọi thành phần đều hoàn toàn là mã nguồn mở và có thể tùy chỉnh.
- Được hỗ trợ bởi GitHub: Tận dụng GitHub Actions, Issues và Pages để tạo ra giải pháp giám sát không cần máy chủ.
- Không cần máy chủ:Không giống như các công cụ giám sát truyền thống, Upptime không yêu cầu bạn phải chạy hoặc bảo trì máy chủ.
- Trang trạng thái tự động: Tạo trang trạng thái đẹp mắt có thể lưu trữ trên GitHub Pages.
- Thông báo mạnh mẽ: Tích hợp với nhiều kênh thông báo khác nhau bao gồm email, SMS và Slack.
Để nâng cao trải nghiệm của người dùng, chúng tôi đã tích hợp @octokit/lõi vào cơ sở mã forwardemail.net để hiển thị các cập nhật trạng thái và sự cố theo thời gian thực trực tiếp trên trang web của chúng tôi. Tích hợp này cung cấp tính minh bạch rõ ràng cho người dùng của chúng tôi trong trường hợp có bất kỳ sự cố nào trên toàn bộ ngăn xếp của chúng tôi (Trang web, API, MongoDB, Redis, SQLite, SMTP, POP3, IMAP, Bree, v.v.) với thông báo toast tức thời, thay đổi biểu tượng huy hiệu, màu cảnh báo, v.v.
Thư viện @octokit/core cho phép chúng tôi lấy dữ liệu thời gian thực từ kho lưu trữ Upptime GitHub của mình, xử lý và hiển thị dữ liệu theo cách thân thiện với người dùng. Khi bất kỳ dịch vụ nào bị ngừng hoạt động hoặc hiệu suất giảm, người dùng sẽ được thông báo ngay lập tức thông qua các chỉ báo trực quan mà không cần phải rời khỏi ứng dụng chính. Sự tích hợp liền mạch này đảm bảo rằng người dùng của chúng tôi luôn có thông tin cập nhật về trạng thái hệ thống của chúng tôi, tăng cường tính minh bạch và sự tin cậy.
Upptime đã được hàng trăm tổ chức áp dụng khi tìm kiếm một cách minh bạch, đáng tin cậy để giám sát các dịch vụ của họ và truyền đạt trạng thái cho người dùng. Sự thành công của dự án cho thấy sức mạnh của việc xây dựng các công cụ tận dụng cơ sở hạ tầng hiện có (trong trường hợp này là GitHub) để giải quyết các vấn đề phổ biến theo những cách mới.
Những đóng góp của chúng tôi cho hệ sinh thái email chuyển tiếp
Trong khi các gói nguồn mở của chúng tôi được các nhà phát triển trên toàn thế giới sử dụng, chúng cũng tạo thành nền tảng cho dịch vụ Forward Email của riêng chúng tôi. Vai trò kép này—vừa là người sáng tạo vừa là người sử dụng các công cụ này—mang đến cho chúng tôi góc nhìn độc đáo về ứng dụng thực tế của chúng và thúc đẩy cải tiến liên tục.
Từ Gói đến Sản xuất
Hành trình từ các gói riêng lẻ đến một hệ thống sản xuất gắn kết đòi hỏi sự tích hợp và mở rộng cẩn thận. Đối với Forward Email, quy trình này bao gồm:
- Tiện ích mở rộng tùy chỉnh: Xây dựng các tiện ích mở rộng dành riêng cho Email cho các gói nguồn mở của chúng tôi nhằm đáp ứng các yêu cầu riêng biệt của chúng tôi.
- Các mẫu tích hợp: Phát triển các mô hình về cách các gói này tương tác trong môi trường sản xuất.
- Tối ưu hóa hiệu suất: Xác định và giải quyết các điểm nghẽn về hiệu suất chỉ xuất hiện ở quy mô lớn.
- Tăng cường bảo mật: Thêm các lớp bảo mật bổ sung dành riêng cho việc xử lý email và bảo vệ dữ liệu người dùng.
Công trình này là kết quả của hàng ngàn giờ phát triển vượt ra ngoài các gói cốt lõi, tạo ra một dịch vụ email mạnh mẽ, an toàn, tận dụng tối đa những đóng góp nguồn mở tốt nhất của chúng tôi.
Vòng phản hồi
Có lẽ khía cạnh có giá trị nhất khi sử dụng các gói của riêng chúng tôi trong sản xuất là vòng phản hồi mà nó tạo ra. Khi chúng tôi gặp phải các hạn chế hoặc trường hợp ngoại lệ trong Forward Email, chúng tôi không chỉ vá chúng cục bộ mà còn cải thiện các gói cơ bản, mang lại lợi ích cho cả dịch vụ của chúng tôi và cộng đồng rộng lớn hơn.
Cách tiếp cận này đã mang lại nhiều cải tiến:
- Sự Tắt Máy Duyên Dáng Của Bree: Nhu cầu triển khai Email không có thời gian chết đã dẫn đến khả năng tắt máy an toàn được cải thiện trong Bree.
- Nhận dạng mẫu của Spam Scanner: Các mẫu thư rác thực tế được phát hiện trong Forward Email đã thông báo cho thuật toán phát hiện của Spam Scanner.
- Tối ưu hóa hiệu suất của Cabin:Việc ghi nhật ký khối lượng lớn trong quá trình sản xuất đã tiết lộ những cơ hội tối ưu hóa trong Cabin mang lại lợi ích cho tất cả người dùng.
Bằng cách duy trì vòng tuần hoàn lành mạnh này giữa công việc nguồn mở và dịch vụ sản xuất, chúng tôi đảm bảo các gói của mình vẫn là các giải pháp thiết thực, đã được thử nghiệm thực tế chứ không phải là các triển khai lý thuyết.
Nguyên tắc cốt lõi của Forward Email: Nền tảng cho sự xuất sắc
Forward Email được thiết kế theo một bộ nguyên tắc cốt lõi hướng dẫn tất cả các quyết định phát triển của chúng tôi. Những nguyên tắc này, được trình bày chi tiết trên trang web, đảm bảo rằng dịch vụ của chúng tôi vẫn thân thiện với nhà phát triển, an toàn và tập trung vào quyền riêng tư của người dùng.
Luôn thân thiện với nhà phát triển, tập trung vào bảo mật và minh bạch
Nguyên tắc đầu tiên và quan trọng nhất của chúng tôi là tạo ra phần mềm thân thiện với nhà phát triển trong khi vẫn duy trì các tiêu chuẩn cao nhất về bảo mật và quyền riêng tư. Chúng tôi tin rằng sự xuất sắc về mặt kỹ thuật không bao giờ được đánh đổi bằng khả năng sử dụng và tính minh bạch tạo dựng lòng tin với cộng đồng của chúng tôi.
Nguyên tắc này thể hiện trong tài liệu chi tiết của chúng tôi, thông báo lỗi rõ ràng và giao tiếp cởi mở về cả thành công và thách thức. Bằng cách làm cho toàn bộ cơ sở mã nguồn mở, chúng tôi mời gọi sự giám sát và cộng tác, củng cố cả phần mềm của chúng tôi và hệ sinh thái rộng lớn hơn.
Tuân thủ các nguyên tắc phát triển phần mềm đã được kiểm tra theo thời gian
Chúng tôi tuân theo một số nguyên tắc phát triển phần mềm đã được chứng minh giá trị trong nhiều thập kỷ:
- MVC: Phân tách các mối quan tâm thông qua mô hình Model-View-Controller
- Triết lý Unix: Tạo các thành phần mô-đun thực hiện tốt một việc
- KISS: Giữ cho nó đơn giản và dễ hiểu
- DRY: Đừng lặp lại chính mình, thúc đẩy việc tái sử dụng mã
- YAGNI: Bạn sẽ không cần nó, tránh tối ưu hóa sớm
- Yếu tố thứ mười hai: Thực hiện theo các phương pháp hay nhất để xây dựng các ứng dụng hiện đại, có khả năng mở rộng
- dao cạo Occam: Lựa chọn giải pháp đơn giản nhất đáp ứng được yêu cầu
- Thức ăn cho chó: Sử dụng rộng rãi các sản phẩm của chúng tôi
Những nguyên tắc này không chỉ là những khái niệm lý thuyết—chúng được nhúng vào các hoạt động phát triển hàng ngày của chúng tôi. Ví dụ, sự tuân thủ triết lý Unix của chúng tôi thể hiện rõ trong cách chúng tôi cấu trúc các gói npm của mình: các mô-đun nhỏ, tập trung có thể được kết hợp lại với nhau để giải quyết các vấn đề phức tạp.
Nhắm mục tiêu vào nhà phát triển Scrappy, Bootstrapped
Chúng tôi đặc biệt nhắm mục tiêu vào những người nghèo nàn, tự lực cánh sinh và ramen có lãi nhà phát triển. Trọng tâm này định hình mọi thứ từ mô hình định giá đến các quyết định kỹ thuật của chúng tôi. Chúng tôi hiểu những thách thức khi xây dựng sản phẩm với nguồn lực hạn chế vì chúng tôi đã từng trải qua điều đó.
Nguyên tắc này đặc biệt quan trọng trong cách chúng tôi tiếp cận nguồn mở. Chúng tôi tạo và duy trì các gói giải quyết các vấn đề thực tế cho các nhà phát triển không có ngân sách doanh nghiệp, giúp mọi người có thể tiếp cận các công cụ mạnh mẽ bất kể nguồn lực của họ.
Nguyên tắc trong thực tế: Cơ sở dữ liệu mã email chuyển tiếp
Những nguyên tắc này được thể hiện rõ trong cơ sở dữ liệu mã Forward Email. Tệp package.json của chúng tôi cho thấy một lựa chọn chu đáo về các phụ thuộc, mỗi phụ thuộc được chọn để phù hợp với các giá trị cốt lõi của chúng tôi:
- Các gói tập trung vào bảo mật như
mailauth
để xác thực email - Các công cụ thân thiện với nhà phát triển như
preview-email
để gỡ lỗi dễ dàng hơn - Các thành phần mô-đun như nhiều
p-*
tiện ích từ Sindre Sorhus
Bằng cách tuân thủ các nguyên tắc này một cách nhất quán theo thời gian, chúng tôi đã xây dựng một dịch vụ mà các nhà phát triển có thể tin tưởng với cơ sở hạ tầng email của họ—an toàn, đáng tin cậy và phù hợp với các giá trị của cộng đồng nguồn mở.
Quyền riêng tư theo thiết kế
Quyền riêng tư không phải là một ý tưởng chợt nảy ra hay tính năng tiếp thị cho Forward Email mà là một nguyên tắc thiết kế cơ bản chi phối mọi khía cạnh của dịch vụ và mã của chúng tôi:
- Mã hóa không truy cập:Chúng tôi đã triển khai các hệ thống khiến chúng tôi không thể đọc được email của người dùng về mặt kỹ thuật.
- Thu thập dữ liệu tối thiểu:Chúng tôi chỉ thu thập dữ liệu cần thiết để cung cấp dịch vụ, không có gì hơn.
- Chính sách minh bạch:Chính sách bảo mật của chúng tôi được viết bằng ngôn ngữ rõ ràng, dễ hiểu, không có thuật ngữ pháp lý.
- Xác minh nguồn mở:Cơ sở mã nguồn mở của chúng tôi cho phép các nhà nghiên cứu bảo mật xác minh các tuyên bố về quyền riêng tư của chúng tôi.
Cam kết này mở rộng đến các gói nguồn mở của chúng tôi, được thiết kế với các biện pháp bảo mật và quyền riêng tư tốt nhất được tích hợp sẵn ngay từ đầu.
Nguồn mở bền vững
Chúng tôi tin rằng phần mềm nguồn mở cần các mô hình bền vững để phát triển lâu dài. Phương pháp tiếp cận của chúng tôi bao gồm:
- Hỗ trợ thương mại: Cung cấp dịch vụ và hỗ trợ cao cấp cho các công cụ nguồn mở của chúng tôi.
- Cấp phép cân bằng: Sử dụng các giấy phép bảo vệ cả quyền tự do của người dùng và tính bền vững của dự án.
- Sự tham gia của cộng đồng:Tích cực tương tác với những người đóng góp để xây dựng một cộng đồng hỗ trợ.
- Lộ trình minh bạch: Chia sẻ kế hoạch phát triển của chúng tôi để người dùng có thể lập kế hoạch phù hợp.
Bằng cách tập trung vào tính bền vững, chúng tôi đảm bảo rằng các đóng góp nguồn mở của mình có thể tiếp tục phát triển và cải thiện theo thời gian thay vì bị lãng quên.
Những con số không biết nói dối: Thống kê tải xuống npm đáng kinh ngạc của chúng tôi
Khi chúng ta nói về tác động của phần mềm nguồn mở, số liệu thống kê tải xuống cung cấp thước đo hữu hình về mức độ áp dụng và tin tưởng. Nhiều gói mà chúng tôi giúp duy trì đã đạt đến quy mô mà ít dự án nguồn mở nào đạt được, với tổng số lượt tải xuống lên tới hàng tỷ.
[!QUAN TRỌNG] Mặc dù chúng tôi tự hào khi giúp duy trì một số gói được tải xuống nhiều trong hệ sinh thái JavaScript, chúng tôi muốn thừa nhận rằng nhiều gói trong số này ban đầu được tạo ra bởi các nhà phát triển tài năng khác. Các gói như superagent và supertest ban đầu được tạo ra bởi TJ Holowaychuk, người có những đóng góp to lớn cho mã nguồn mở đã đóng vai trò quan trọng trong việc định hình hệ sinh thái Node.js.
Góc nhìn từ trên cao về tác động của chúng tôi
Chỉ trong khoảng thời gian hai tháng từ tháng 2 đến tháng 3 năm 2025, các gói hàng đầu mà chúng tôi đóng góp và giúp duy trì số lượng tải xuống đáng kinh ngạc đã được ghi nhận:
- siêu chất: 84.575.829 lượt tải xuống[^7] (ban đầu được tạo bởi TJ Holowaychuk)
- siêu thử nghiệm: 76.432.591 lượt tải xuống[^8] (ban đầu được tạo bởi TJ Holowaychuk)
- Mà còn: 28.539.295 lượt tải xuống[^34] (ban đầu được tạo bởi TJ Holowaychuk)
- @koa/bộ định tuyến: 11.007.327 lượt tải xuống[^35]
- koa-router: 3.498.918 lượt tải xuống[^36]
- url-biểu thức chính quy: 2.819.520 lượt tải xuống[^37]
- xem trước-email: 2.500.000 lượt tải xuống[^9]
- cabin: 1.800.000 lượt tải xuống[^10]
- @breejs/sau này: 1.709.938 lượt tải xuống[^38]
- mẫu thư điện tử: 1.128.139 lượt tải xuống[^39]
- lấy đường dẫn: 1.124.686 lượt tải xuống[^40]
- url-regex-an toàn: 1.200.000 lượt tải xuống[^11]
- dotenv-phân tích biến: 894.666 lượt tải xuống[^41]
- @koa/multer: 839.585 lượt tải xuống[^42]
- máy quét thư rác: 145.000 lượt tải xuống[^12]
- Bree (Bờ biển): 24.270 lượt tải xuống[^30]
[!LƯU Ý] Một số gói khác mà chúng tôi giúp duy trì nhưng không tạo ra có số lượt tải xuống thậm chí còn cao hơn, bao gồm
form-data
(738 triệu lượt tải xuống),toidentifier
(309 triệu lượt tải xuống),stackframe
(116 triệu lượt tải xuống) vàerror-stack-parser
(Hơn 113 triệu lượt tải xuống). Chúng tôi rất vinh dự được đóng góp vào các gói này đồng thời tôn trọng công sức của tác giả gốc.
Đây không chỉ là những con số ấn tượng—mà còn đại diện cho các nhà phát triển thực sự giải quyết các vấn đề thực tế bằng mã mà chúng tôi giúp duy trì. Mỗi lượt tải xuống là một trường hợp mà các gói này đã giúp ai đó xây dựng một cái gì đó có ý nghĩa, từ các dự án sở thích đến các ứng dụng doanh nghiệp được hàng triệu người sử dụng.
Tác động hàng ngày ở quy mô lớn
Các mẫu tải xuống hàng ngày cho thấy mức sử dụng nhất quán, khối lượng lớn, với mức đỉnh điểm lên tới hàng triệu lượt tải xuống mỗi ngày[^13]. Sự nhất quán này nói lên tính ổn định và độ tin cậy của các gói này—các nhà phát triển không chỉ thử chúng; họ tích hợp chúng vào quy trình làm việc cốt lõi của mình và phụ thuộc vào chúng ngày này qua ngày khác.
Các mẫu tải xuống hàng tuần cho thấy những con số thậm chí còn ấn tượng hơn, liên tục dao động quanh hàng chục triệu lượt tải xuống mỗi tuần[^14]. Điều này thể hiện dấu ấn to lớn trong hệ sinh thái JavaScript, với các gói này chạy trong môi trường sản xuất trên toàn cầu.
Vượt ra ngoài những con số thô
Mặc dù số liệu thống kê tải xuống tự chúng đã rất ấn tượng, nhưng chúng lại kể một câu chuyện sâu sắc hơn về sự tin tưởng mà cộng đồng dành cho các gói này. Việc duy trì các gói ở quy mô này đòi hỏi một cam kết không lay chuyển đối với:
- Khả năng tương thích ngược:Những thay đổi phải được cân nhắc cẩn thận để tránh phá vỡ các triển khai hiện có.
- Bảo vệ:Với hàng triệu ứng dụng phụ thuộc vào các gói này, lỗ hổng bảo mật có thể gây ra hậu quả nghiêm trọng.
- Hiệu suất:Ở quy mô này, ngay cả những cải tiến nhỏ về hiệu suất cũng có thể mang lại lợi ích tổng hợp đáng kể.
- Tài liệu: Tài liệu rõ ràng, toàn diện là điều cần thiết đối với các gói được sử dụng bởi các nhà phát triển ở mọi cấp độ kinh nghiệm.
Sự tăng trưởng ổn định về số lượt tải xuống theo thời gian phản ánh sự thành công trong việc đáp ứng các cam kết này, xây dựng lòng tin với cộng đồng nhà phát triển thông qua các gói đáng tin cậy và được bảo trì tốt.
Hỗ trợ hệ sinh thái: Tài trợ nguồn mở của chúng tôi
[!TIP] Tính bền vững của nguồn mở không chỉ là đóng góp mã mà còn là hỗ trợ các nhà phát triển duy trì cơ sở hạ tầng quan trọng.
Ngoài những đóng góp trực tiếp của chúng tôi cho hệ sinh thái JavaScript, chúng tôi tự hào tài trợ cho những người đóng góp nổi bật cho Node.js, những người có công trình tạo nên nền tảng cho nhiều ứng dụng hiện đại. Các nhà tài trợ của chúng tôi bao gồm:
Andris Reinman: Người tiên phong về cơ sở hạ tầng email
Andris Reinman là người sáng tạo ra Người gửi thư ghi chú, thư viện gửi email phổ biến nhất cho Node.js với hơn 14 triệu lượt tải xuống hàng tuần[^15]. Công trình của ông mở rộng sang các thành phần cơ sở hạ tầng email quan trọng khác như Máy chủ SMTP, Trình phân tích thư, Và Vịt trời.
Việc tài trợ của chúng tôi giúp đảm bảo việc duy trì và phát triển liên tục các công cụ thiết yếu này, hỗ trợ giao tiếp qua email cho vô số ứng dụng Node.js, bao gồm cả dịch vụ Chuyển tiếp Email của chúng tôi.
Sindre Sorhus: Bậc thầy gói tiện ích
Sindre Sorhus là một trong những người đóng góp mã nguồn mở năng suất nhất trong hệ sinh thái JavaScript, với hơn 1.000 gói npm mang tên ông. Các tiện ích của ông như bản đồ p, trước khi thử lại, Và là-luồng là những khối xây dựng cơ bản được sử dụng trong toàn bộ hệ sinh thái Node.js.
Bằng cách tài trợ cho công việc của Sindre, chúng tôi giúp duy trì sự phát triển của các tiện ích quan trọng này giúp việc phát triển JavaScript hiệu quả và đáng tin cậy hơn.
Những nhà tài trợ này phản ánh cam kết của chúng tôi đối với hệ sinh thái nguồn mở rộng lớn hơn. Chúng tôi nhận ra rằng thành công của chúng tôi được xây dựng trên nền tảng do những người đóng góp này và những người khác đặt ra, và chúng tôi cam kết đảm bảo tính bền vững của toàn bộ hệ sinh thái.
Phát hiện lỗ hổng bảo mật trong hệ sinh thái JavaScript
Cam kết của chúng tôi đối với mã nguồn mở không chỉ dừng lại ở việc phát triển tính năng mà còn bao gồm việc xác định và giải quyết các lỗ hổng bảo mật có thể ảnh hưởng đến hàng triệu nhà phát triển. Một số đóng góp quan trọng nhất của chúng tôi cho hệ sinh thái JavaScript nằm ở lĩnh vực bảo mật.
Cuộc giải cứu Koa-Router
Vào tháng 2 năm 2019, Nick đã xác định được một vấn đề quan trọng trong việc bảo trì gói koa-router phổ biến. Khi anh ấy được báo cáo trên Hacker News, gói này đã bị người bảo trì ban đầu bỏ rơi, khiến các lỗ hổng bảo mật không được giải quyết và cộng đồng không được cập nhật.
[!CẢNH BÁO] Các gói bị bỏ rơi có lỗ hổng bảo mật gây ra rủi ro đáng kể cho toàn bộ hệ sinh thái, đặc biệt là khi chúng được tải xuống hàng triệu lần mỗi tuần.
Để đáp lại, Nick đã tạo ra @koa/bộ định tuyến và giúp cảnh báo cộng đồng về tình hình. Anh ấy đã duy trì gói quan trọng này kể từ đó, đảm bảo rằng người dùng Koa có giải pháp định tuyến an toàn, được bảo trì tốt.
Xử lý lỗ hổng ReDoS
Vào năm 2020, Nick đã xác định và giải quyết một vấn đề quan trọng Từ chối dịch vụ biểu thức chính quy (ReDoS) lỗ hổng trong việc sử dụng rộng rãi url-regex
gói. Lỗ hổng này (SNYK-JS-URLREGEX-569472) có thể cho phép kẻ tấn công gây ra tình trạng từ chối dịch vụ bằng cách cung cấp thông tin đầu vào được thiết kế đặc biệt gây ra sự quay lui thảm khốc trong biểu thức chính quy.
Thay vì chỉ vá gói hiện có, Nick đã tạo ra url-regex-safe
, một triển khai được viết lại hoàn toàn giải quyết lỗ hổng trong khi vẫn duy trì khả năng tương thích với API gốc. Ông cũng đã xuất bản một bài đăng blog toàn diện giải thích lỗ hổng bảo mật và cách giảm thiểu nó.
Công trình này cho thấy cách tiếp cận của chúng tôi đối với vấn đề bảo mật: không chỉ giải quyết vấn đề mà còn giáo dục cộng đồng và cung cấp các giải pháp thay thế mạnh mẽ giúp ngăn ngừa các vấn đề tương tự trong tương lai.
Ủng hộ cho Node.js và Chromium Security
Nick cũng tích cực vận động cải thiện bảo mật trong hệ sinh thái rộng lớn hơn. Vào tháng 8 năm 2020, anh đã xác định được một vấn đề bảo mật quan trọng trong Node.js liên quan đến việc xử lý tiêu đề HTTP, được báo cáo trong Sổ đăng ký.
Vấn đề này, bắt nguồn từ bản vá trong Chromium, có khả năng cho phép kẻ tấn công vượt qua các biện pháp bảo mật. Sự ủng hộ của Nick đã giúp đảm bảo rằng vấn đề được giải quyết kịp thời, bảo vệ hàng triệu ứng dụng Node.js khỏi nguy cơ bị khai thác.
Bảo mật cơ sở hạ tầng npm
Vào cuối tháng đó, Nick đã xác định một vấn đề bảo mật quan trọng khác, lần này là trong cơ sở hạ tầng email của npm. Như đã báo cáo trong Sổ đăng ký, npm không triển khai đúng các giao thức xác thực email DMARC, SPF và DKIM, có khả năng cho phép kẻ tấn công gửi email lừa đảo có vẻ như đến từ npm.
Báo cáo của Nick đã dẫn đến những cải tiến trong khả năng bảo mật email của npm, bảo vệ hàng triệu nhà phát triển dựa vào npm để quản lý gói khỏi các cuộc tấn công lừa đảo tiềm ẩn.
Những đóng góp của chúng tôi cho hệ sinh thái email chuyển tiếp
Forward Email được xây dựng dựa trên một số dự án nguồn mở quan trọng, bao gồm Nodemailer, WildDuck và mailauth. Nhóm của chúng tôi đã có những đóng góp đáng kể cho các dự án này, giúp xác định và khắc phục các vấn đề sâu sắc ảnh hưởng đến việc gửi email và bảo mật.
Nâng cao chức năng cốt lõi của Nodemailer
Người gửi thư ghi chú là xương sống của việc gửi email trong Node.js và những đóng góp của chúng tôi đã giúp làm cho nó mạnh mẽ hơn:
- Cải tiến máy chủ SMTP:Chúng tôi đã khắc phục lỗi phân tích cú pháp, sự cố xử lý luồng và sự cố cấu hình TLS trong thành phần máy chủ SMTP[^16][^17].
- Cải tiến Mail Parser:Chúng tôi đã giải quyết các lỗi giải mã chuỗi ký tự và xử lý các sự cố về trình phân tích cú pháp có thể gây ra lỗi xử lý email[^18][^19].
Những đóng góp này đảm bảo rằng Nodemailer vẫn là nền tảng đáng tin cậy cho việc xử lý email trong các ứng dụng Node.js, bao gồm cả Forward Email.
Nâng cao xác thực email với Mailauth
Thư tín cung cấp chức năng xác thực email quan trọng và những đóng góp của chúng tôi đã cải thiện đáng kể khả năng của nó:
- Cải tiến xác minh DKIM:Chúng tôi đã phát hiện và báo cáo rằng X/Twitter có vấn đề về bộ đệm DNS gây ra lỗi DKIM cho các tin nhắn gửi đi của họ, báo cáo trên Hacker One[^20].
- Cải tiến DMARC và ARC:Chúng tôi đã khắc phục sự cố liên quan đến xác minh DMARC và ARC có thể dẫn đến kết quả xác thực không chính xác[^21][^22].
- Tối ưu hóa hiệu suất:Chúng tôi đã đóng góp những cải tiến giúp nâng cao hiệu suất của quy trình xác thực email[^23][^24][^25][^26].
Những cải tiến này giúp đảm bảo xác thực email chính xác và đáng tin cậy, bảo vệ người dùng khỏi các cuộc tấn công lừa đảo và giả mạo.
Cải tiến chính về thời gian hoạt động
Những đóng góp của chúng tôi cho Upptime bao gồm:
- Giám sát chứng chỉ SSL:Chúng tôi đã bổ sung chức năng theo dõi thời hạn hết hạn của chứng chỉ SSL, ngăn ngừa thời gian ngừng hoạt động bất ngờ do chứng chỉ hết hạn[^27].
- Hỗ trợ nhiều số SMS:Chúng tôi đã triển khai hỗ trợ cảnh báo nhiều thành viên trong nhóm qua SMS khi sự cố xảy ra, cải thiện thời gian phản hồi[^28].
- Sửa lỗi kiểm tra IPv6:Chúng tôi đã khắc phục sự cố liên quan đến kiểm tra kết nối IPv6, đảm bảo giám sát chính xác hơn trong môi trường mạng hiện đại[^29].
- Hỗ trợ chế độ tối/sáng:Chúng tôi đã thêm hỗ trợ chủ đề để cải thiện trải nghiệm của người dùng trên các trang trạng thái[^31].
- Hỗ trợ TCP-Ping tốt hơn:Chúng tôi đã cải thiện chức năng ping TCP để cung cấp khả năng thử nghiệm kết nối đáng tin cậy hơn[^32].
Những cải tiến này không chỉ có lợi cho việc theo dõi trạng thái của Forward Email mà còn có sẵn cho toàn bộ cộng đồng người dùng Upptime, chứng tỏ cam kết của chúng tôi trong việc cải thiện các công cụ mà chúng tôi tin cậy.
Chất keo gắn kết tất cả lại với nhau: Mã tùy chỉnh ở quy mô lớn
Trong khi các gói npm và đóng góp của chúng tôi cho các dự án hiện tại là đáng kể, thì chính mã tùy chỉnh tích hợp các thành phần này mới thực sự thể hiện chuyên môn kỹ thuật của chúng tôi. Cơ sở mã Forward Email đại diện cho một thập kỷ nỗ lực phát triển, bắt đầu từ năm 2017 khi dự án bắt đầu với tư cách là chuyển tiếp email miễn phí trước khi được sáp nhập vào một kho lưu trữ đơn lẻ.
Một nỗ lực phát triển lớn
Quy mô của mã tích hợp tùy chỉnh này rất ấn tượng:
- Tổng số đóng góp: Hơn 3.217 cam kết
- Kích thước cơ sở mã: Hơn 421.545 dòng mã trên các tệp JavaScript, Pug, CSS và JSON[^33]
Điều này thể hiện hàng ngàn giờ làm việc phát triển, các phiên gỡ lỗi và tối ưu hóa hiệu suất. Đây là "bí quyết" biến các gói riêng lẻ thành một dịch vụ gắn kết, đáng tin cậy được hàng ngàn khách hàng sử dụng hàng ngày.
Tích hợp phụ thuộc cốt lõi
Cơ sở mã hóa Forward Email tích hợp nhiều thành phần phụ thuộc thành một khối liền mạch:
- Xử lý Email: Tích hợp Nodemailer để gửi, SMTP Server để nhận và Mailparser để phân tích cú pháp
- Xác thực: Sử dụng Mailauth để xác minh DKIM, SPF, DMARC và ARC
- Giải quyết DNS: Tận dụng Tangerine cho DNS-over-HTTPS với bộ nhớ đệm toàn cầu
- Kết nối MX: Sử dụng mx-connect với tích hợp Tangerine để có kết nối máy chủ thư đáng tin cậy
- Lên lịch công việc: Sử dụng Bree để xử lý tác vụ nền đáng tin cậy với các luồng công nhân
- Mẫu: Sử dụng mẫu email để tái sử dụng các bảng định dạng từ trang web trong giao tiếp với khách hàng
- Lưu trữ email: Triển khai các hộp thư SQLite được mã hóa riêng lẻ bằng better-sqlite3-multiple-ciphers với mã hóa ChaCha20-Poly1305 để đảm bảo quyền riêng tư an toàn lượng tử, đảm bảo sự cô lập hoàn toàn giữa những người dùng và chỉ người dùng mới có quyền truy cập vào hộp thư của họ
Mỗi tích hợp này đều cần cân nhắc cẩn thận các trường hợp ngoại lệ, tác động đến hiệu suất và mối quan tâm về bảo mật. Kết quả là một hệ thống mạnh mẽ xử lý hàng triệu giao dịch email một cách đáng tin cậy. Việc triển khai SQLite của chúng tôi cũng tận dụng msgpackr để tuần tự hóa nhị phân hiệu quả và WebSockets (thông qua ws) để cập nhật trạng thái theo thời gian thực trên toàn bộ cơ sở hạ tầng của chúng tôi.
Cơ sở hạ tầng DNS với Tangerine và mx-connect
Một thành phần quan trọng của cơ sở hạ tầng Forward Email là hệ thống phân giải DNS của chúng tôi, được xây dựng xung quanh hai gói chính:
-
Quýt: Việc triển khai DNS-over-HTTPS Node.js của chúng tôi cung cấp giải pháp thay thế tức thời cho trình phân giải DNS tiêu chuẩn, với tính năng thử lại, thời gian chờ, xoay vòng máy chủ thông minh và hỗ trợ bộ nhớ đệm tích hợp.
-
kết nối mx:Gói này thiết lập kết nối TCP tới máy chủ MX, sử dụng tên miền hoặc địa chỉ email mục tiêu, giải quyết các máy chủ MX phù hợp và kết nối với chúng theo thứ tự ưu tiên.
Chúng tôi đã tích hợp Tangerine với mx-connect thông qua yêu cầu kéo #4, đảm bảo DNS lớp ứng dụng qua các yêu cầu HTTP trong suốt Forward Email. Điều này cung cấp bộ nhớ đệm toàn cầu cho DNS ở quy mô lớn với tính nhất quán 1:1 trên mọi khu vực, ứng dụng hoặc quy trình—rất quan trọng để phân phối email đáng tin cậy trong hệ thống phân tán.
Tác động của doanh nghiệp: Từ nguồn mở đến các giải pháp quan trọng
Điểm đỉnh cao của hành trình kéo dài một thập kỷ trong phát triển nguồn mở đã giúp Forward Email không chỉ phục vụ các nhà phát triển cá nhân mà còn cả các doanh nghiệp lớn và tổ chức giáo dục tạo nên xương sống của phong trào nguồn mở.
Các nghiên cứu điển hình về cơ sở hạ tầng email quan trọng
Cam kết của chúng tôi về độ tin cậy, quyền riêng tư và các nguyên tắc nguồn mở đã biến Forward Email trở thành sự lựa chọn đáng tin cậy cho các tổ chức có yêu cầu khắt khe về email:
-
Các cơ sở giáo dục: Như đã nêu chi tiết trong nghiên cứu trường hợp chuyển tiếp email của cựu sinh viêncác trường đại học lớn dựa vào cơ sở hạ tầng của chúng tôi để duy trì kết nối trọn đời với hàng trăm nghìn cựu sinh viên thông qua các dịch vụ chuyển tiếp email đáng tin cậy.
-
Giải pháp Linux cho doanh nghiệp: Các Nghiên cứu trường hợp doanh nghiệp email Canonical Ubuntu chứng minh cách tiếp cận nguồn mở của chúng tôi hoàn toàn phù hợp với nhu cầu của các nhà cung cấp Linux doanh nghiệp, mang lại cho họ sự minh bạch và khả năng kiểm soát mà họ yêu cầu.
-
Nền tảng nguồn mở: Có lẽ xác thực nhất là quan hệ đối tác của chúng tôi với Linux Foundation, như được ghi lại trong Nghiên cứu trường hợp doanh nghiệp email của Linux Foundation, nơi dịch vụ của chúng tôi hỗ trợ truyền thông cho chính tổ chức quản lý phát triển Linux.
Có một sự đối xứng tuyệt đẹp trong cách các gói nguồn mở của chúng tôi, được duy trì cẩn thận trong nhiều năm, đã cho phép chúng tôi xây dựng một dịch vụ email hiện hỗ trợ chính các cộng đồng và tổ chức ủng hộ phần mềm nguồn mở. Hành trình trọn vẹn này—từ việc đóng góp các gói riêng lẻ đến cung cấp năng lượng cho cơ sở hạ tầng email cấp doanh nghiệp cho các nhà lãnh đạo nguồn mở—đại diện cho sự xác thực cuối cùng về cách tiếp cận của chúng tôi đối với phát triển phần mềm.
Một thập kỷ của nguồn mở: Nhìn về phía trước
Khi nhìn lại một thập kỷ đóng góp cho mã nguồn mở và hướng tới mười năm tiếp theo, chúng tôi vô cùng biết ơn cộng đồng đã hỗ trợ công việc của chúng tôi và háo hức với những gì sắp tới.
Hành trình của chúng tôi từ những người đóng góp gói riêng lẻ đến những người duy trì cơ sở hạ tầng email toàn diện được các doanh nghiệp lớn và các tổ chức nguồn mở sử dụng thật đáng chú ý. Đó là minh chứng cho sức mạnh của phát triển nguồn mở và tác động mà phần mềm chu đáo, được bảo trì tốt có thể mang lại cho hệ sinh thái rộng lớn hơn.
Trong những năm tới, chúng tôi cam kết:
- Tiếp tục duy trì và cải thiện các gói hiện có của chúng tôi, đảm bảo chúng vẫn là công cụ đáng tin cậy cho các nhà phát triển trên toàn thế giới.
- Mở rộng đóng góp của chúng tôi cho các dự án cơ sở hạ tầng quan trọng, đặc biệt là trong lĩnh vực email và bảo mật.
- Nâng cao khả năng của Forward Email trong khi vẫn duy trì cam kết của chúng tôi về quyền riêng tư, bảo mật và minh bạch.
- Hỗ trợ thế hệ tiếp theo của những người đóng góp nguồn mở thông qua hoạt động cố vấn, tài trợ và gắn kết cộng đồng.
Chúng tôi tin rằng tương lai của phát triển phần mềm là mở, hợp tác và được xây dựng trên nền tảng của sự tin tưởng. Bằng cách tiếp tục đóng góp các gói chất lượng cao, tập trung vào bảo mật cho hệ sinh thái JavaScript, chúng tôi hy vọng sẽ đóng góp một phần nhỏ vào việc xây dựng tương lai đó.
Xin cảm ơn tất cả mọi người đã sử dụng các gói của chúng tôi, đóng góp cho các dự án của chúng tôi, báo cáo các vấn đề hoặc chỉ đơn giản là truyền bá thông tin về công việc của chúng tôi. Sự hỗ trợ của bạn đã giúp thập kỷ tác động này trở nên khả thi và chúng tôi rất vui mừng khi thấy những gì chúng ta có thể cùng nhau hoàn thành trong mười năm tới.
[^1]: số liệu thống kê tải xuống npm cho cabin, tháng 4 năm 2025 [^2]: số liệu thống kê tải xuống npm cho bson-objectid, tháng 2-tháng 3 năm 2025 [^3]: số liệu thống kê tải xuống npm cho url-regex-safe, tháng 4 năm 2025 [^4]: số sao GitHub cho forwardemail/forwardemail.net tính đến tháng 4 năm 2025 [^5]: số liệu thống kê tải xuống npm cho preview-email, tháng 4 năm 2025 [^7]: số liệu thống kê tải xuống npm cho superagent, tháng 2-tháng 3 năm 2025 [^8]: số liệu thống kê tải xuống npm cho supertest, tháng 2-tháng 3 năm 2025 [^9]: số liệu thống kê tải xuống npm cho preview-email, tháng 2-tháng 3 năm 2025 [^10]: số liệu thống kê tải xuống npm cho cabin, tháng 2-tháng 3 năm 2025 [^11]: số liệu thống kê tải xuống npm cho url-regex-safe, tháng 2-tháng 3 2025 [^12]: số liệu thống kê tải xuống npm cho spamscanner, tháng 2-tháng 3 năm 2025 [^13]: Mẫu tải xuống hàng ngày từ số liệu thống kê npm, tháng 4 năm 2025 [^14]: Mẫu tải xuống hàng tuần từ số liệu thống kê npm, tháng 4 năm 2025 [^15]: số liệu thống kê tải xuống npm cho nodemailer, tháng 4 năm 2025 [^16]: https://github.com/nodemailer/smtp-server/issues/155 [^17]: https://github.com/nodemailer/smtp-server/issues/node-v12-requires-tls-min [^18]: https://github.com/nodemailer/mailparser/issues/261 [^19]: https://github.com/nodemailer/nodemailer/issues/1102 [^20]: https://github.com/postalsys/mailauth/issues/30 [^21]: https://github.com/postalsys/mailauth/issues/58 [^22]: https://github.com/postalsys/mailauth/issues/48 [^23]: https://github.com/postalsys/mailauth/issues/74 [^24]: https://github.com/postalsys/mailauth/issues/75 [^25]: https://github.com/postalsys/mailauth/issues/60 [^26]: https://github.com/postalsys/mailauth/issues/73 [^27]: Dựa trên các sự cố GitHub trong kho lưu trữ Upptime [^28]: Dựa trên các sự cố GitHub trong kho lưu trữ Upptime [^29]: Dựa trên các sự cố GitHub trong kho lưu trữ Upptime [^30]: Thống kê tải xuống npm cho bree, tháng 2-tháng 3 năm 2025 [^31]: Dựa trên các yêu cầu kéo GitHub tới Upptime [^32]: Dựa trên các yêu cầu kéo GitHub tới Upptime [^34]: Thống kê tải xuống npm cho koa, tháng 2-tháng 3 năm 2025 [^35]: Thống kê tải xuống npm cho @koa/router, tháng 2-tháng 3 năm 2025 [^36]: Thống kê tải xuống npm cho koa-router, tháng 2-tháng 3 năm 2025 [^37]: Thống kê tải xuống npm cho url-regex, tháng 2-tháng 3 năm 2025 [^38]: Thống kê tải xuống npm cho @breejs/later, tháng 2-tháng 3 2025 [^39]: số liệu thống kê tải xuống npm cho email-templates, tháng 2-tháng 3 năm 2025 [^40]: số liệu thống kê tải xuống npm cho get-paths, tháng 2-tháng 3 năm 2025 [^41]: số liệu thống kê tải xuống npm cho dotenv-parse-variables, tháng 2-tháng 3 năm 2025 [^42]: số liệu thống kê tải xuống npm cho @koa/multer, tháng 2-tháng 3 năm 2025