Cập nhật NetNewsWire: Một năm hiện đại hóa và trả nợ kỹ thuật sau khi nghỉ hưu
Sau một năm nghỉ hưu, nhà phát triển đã dành toàn bộ thời gian để tái cấu trúc và hiện đại hóa ứng dụng đọc RSS NetNewsWire. Với hơn 2.000 lần commit, ứng dụng đã được chuyển đổi sang Swift, cải thiện hiệu suất, sửa lỗi và tối ưu hóa trải nghiệm người dùng để chuẩn bị cho các tính năng mới.
Đã tròn một năm kể từ ngày tôi chính thức nghỉ hưu — ngày làm việc cuối cùng của tôi là ngày 6 tháng 6 năm 2025 — và tôi thật sự thích cảm giác được nói rằng mình đã dành cả năm nay mà không đóng góp một xu nào vào giá trị cho các cổ đông. 🌴
Hy vọng của tôi khi nghỉ hưu là có thể hoàn thành khối lượng công việc lớn cho NetNewsWire. Cách đây một năm, ứng dụng này đang rất cần được hiện đại hóa, trả nợ kỹ thuật và sửa lỗi. Mọi người đều yêu cầu thêm tính năng mới, nhưng nền tảng cần được cải tạo rất nhiều trước khi tôi có thể bắt đầu xây dựng các "phòng ốc" mới.
Dưới đây là những điểm nhấn về những gì chúng tôi đã thực hiện với 2.188 lần commit trong năm qua:
- Áp dụng Swift structured concurrency (đồng cấu trúc) và async/await.
- Triển khai giao diện Liquid Glass UI trong khi vẫn hỗ trợ các phiên bản hệ điều hành gần đây.
- Chuyển đổi các trình phân tích cú pháp (parser) XML, HTML và ngày tháng từ Objective-C sang Swift.
- Sửa một lượng lớn lỗi, bao gồm cả các lỗi gây crash (sập ứng dụng).
- Giảm mức tiêu thụ pin, bộ nhớ, tỷ lệ treo, tỷ lệ giật khi cuộn và số lần ghi đĩa.
- Thực hiện nhiều cải tiến hiệu suất, đặc biệt là tìm ra những nơi mà ứng dụng có thể giảm thiểu công việc xử lý.
- Thực hiện các công việc "vệ sinh" mã nguồn — khôi phục GitHub CI, bắt đầu sử dụng SwiftLint, bật chế độ coi cảnh báo là lỗi, bắt đầu công việc địa phương hóa (localization), chuyển sang Logger, thêm bài kiểm thử (test).
- Đơn giản hóa và tái cấu trúc mã, xóa mã, đổi tên các thành phần, v.v. — giúp mã nguồn rõ ràng hơn ở nhiều nơi.
- Thêm hỗ trợ cho tiêu đề Cache-Control cho các nguồn feed, giúp các nhà xuất bản có thể tinh chỉnh tần suất NetNewsWire kiểm tra feed của họ.
- Tối ưu hóa đồng bộ hóa iCloud (vẫn còn nhiều việc phải làm với mục này).
- Xử lý các tính năng bị loại bỏ (ví dụ: chuyển sang NWPathMonitor).
- Thêm chẩn đoán và báo cáo lỗi vào giao diện người dùng — Thống kê lưu trữ iCloud và Nhật ký lỗi (Error Log) đã được phát hành, và nhiều tính năng tương tự hiện đang ở bản beta: Dinosaurs, Hoạt động hiện tại, Nhật ký hoạt động và Thống kê tài khoản.
Việc liệt kê các điểm nhấn có nghĩa là tôi đang lướt qua — hoặc thậm chí không đề cập đến — những điều mà tôi thực sự muốn kể cho bạn nghe! Ví dụ, có một thời điểm tôi thấy bực bội với cách mình xử lý nhật ký crash trên Mac, nên tôi đã viết một hệ thống nhỏ để tải chúng xuống từ máy chủ của mình và thực hiện symbolication. Nó rất đơn giản nhưng tạo ra sự khác biệt lớn — và điều đó có nghĩa là tôi không phải di chuyển sang một hệ thống thương mại nào đó, cũng như không phải thêm SDK của họ vào ứng dụng cho việc này.
Điểm cuối cùng trong danh sách trên, với tất cả các liên kết, đều xoay quanh việc cung cấp cho người dùng cái nhìn sâu sắc về những gì đang diễn ra, để khi ứng dụng không hoạt động như mong đợi, họ có thể thấy vấn đề nằm ở đâu. Ngay cả khi họ không thể tự sửa lỗi, họ ít nhất cũng có thể sao chép và thông báo cho tôi biết tình hình, để tôi không phải phỏng đoán. Nhờ đó và các bản sửa lỗi cũng như cải tiến khác, tôi có thể dành ít thời gian hơn cho việc hỗ trợ, điều này đồng nghĩa với việc có nhiều thời gian hơn để viết mã — và cuối cùng là có thêm thời gian cho các tính năng mới mà mọi người đang yêu cầu.
Chúng tôi vẫn chưa hoàn thành công việc nền tảng, nhưng đã gần xong. Việc làm việc trên ứng dụng này giờ đây thú vị hơn nhiều so với một năm trước, và tôi rất vui vì chúng tôi đã dành cả năm theo cách này.
Tôi cố tình dùng từ "chúng tôi" — tôi có thể đóng góp nhiều nhất, nhưng chúng tôi có một nhóm các cộng tác viên khác, và tôi cảm ơn tất cả họ vì sự giúp đỡ rất quý báu. Cộng tác viên năng nổ nhất sau tôi là Stuart Breckenridge, người đã thực hiện công việc Liquid Glass (và nhiều thứ khác) — và người này cũng có một trình đọc RSS dựa trên trình duyệt mới tên là Gobbler mà bạn nên xem thử!
PS: Trong năm qua, chúng tôi cũng đã chuyển từ Slack sang diễn đàn Discourse, để việc hỗ trợ và thảo luận có thể diễn ra trên web thay vì bị ẩn giấu. 😀
Bài viết liên quan

Công nghệ
Xbox đóng cửa studio Ninja Theory, nhà phát triển dòng game Hellblade
15 tháng 6, 2026

Công nghệ
Startup Patina dùng AI và thiết kế phân tử để "lật mặt" ngành công nghiệp nước hoa
21 tháng 5, 2026

Công nghệ
Startup Battlefield 2026: Hướng dẫn đăng ký và những điều bạn cần biết trước hạn chót 8/6
08 tháng 6, 2026
