Tình hình phát triển Nimf, Clair và Guiyom tháng 7 năm 2026
Gần đây, quá trình phát triển Nimf, Clair và Guiyom mất nhiều thời gian hơn dự kiến. Nguyên nhân là phần lớn công sức đang được dành cho việc sắp xếp lại nền tảng của các dự án, thay vì bổ sung những tính năng có thể nhìn thấy ngay.
Ba dự án độc lập với nhau, nhưng định hướng phát triển có quan hệ chặt chẽ. Clair cung cấp các chức năng nền tảng dùng chung trên nhiều hệ điều hành, Guiyom là một bộ công cụ GUI đa nền tảng hoạt động trên Clair, còn Nimf dự kiến sẽ sử dụng cả Clair và Guiyom trong tương lai.
Dưới đây là phần tóm tắt tình hình phát triển hiện tại.
Nimf
Kế hoạch dài hạn của Nimf là chuyển các thành phần chính sang Ada và nâng cấp hệ thống để việc nhập văn bản hoạt động ổn định trong nhiều môi trường desktop và ứng dụng khác nhau.
Một số phần trong kiến trúc Nimf hiện tại liên kết chặt bộ công cụ GUI với vòng lặp chính của máy chủ phương thức nhập. Vì vậy, khi chuyển từ môi trường đồ họa sang console, nếu phần xử lý liên quan đến GUI bị dừng thì giao tiếp với máy chủ Nimf cũng có thể bị ảnh hưởng, khiến phương thức nhập trên console không hoạt động bình thường.
Tôi cũng đã thử tách phần xử lý GTK sang một luồng riêng và dùng hàng đợi sự kiện để giao tiếp với vòng lặp chính của Nimf. Ban đầu cách này có vẻ hoạt động, nhưng sau một thời gian dài hệ thống cuối cùng vẫn bị dừng, nên đây không phải là giải pháp căn bản.
Kế hoạch là giải quyết vấn đề này bằng cách áp dụng Guiyom vào Nimf. Mục tiêu là cải thiện kiến trúc để trạng thái của tầng GUI không thể chặn hoạt động cốt lõi của máy chủ phương thức nhập.
Ngoài ra, trong các môi trường như Wayland, Flatpak, Snap, SDL và Wine, dữ liệu nhập đôi khi không được chuyển đúng qua các giao diện phương thức nhập hiện có. Những vấn đề tương thích này cũng sẽ được xử lý. Nếu cần, một giao diện tương thích với IBus có thể được triển khai để hỗ trợ các môi trường đó.
Bước đầu tiên hiện nay là chuyển nimf-settings sang kiến trúc sử dụng Ada và
Guiyom. Sau đó, các mẫu được thiết lập trong chương trình cài đặt sẽ được dùng
để từng bước chuyển phần quản lý trạng thái cốt lõi, IPC, quản lý dịch vụ và
tầng dùng chung của bộ máy nhập liệu trong Nimf sang Ada.
Tuy nhiên, việc nâng cấp Nimf trên quy mô đầy đủ cần các chức năng nền tảng từ Guiyom và Clair, vì vậy tiến độ tổng thể cũng chịu ảnh hưởng bởi tình hình phát triển của hai dự án này.
Guiyom
Guiyom là một bộ công cụ GUI đa nền tảng đang được phát triển bằng Ada.
Dự án áp dụng một thiết kế khác biệt so với các bộ công cụ GUI truyền thống, nhưng thiết kế tổng thể và thiết kế chi tiết sẽ không được công bố trước khi đơn xin cấp bằng sáng chế P3 được nộp.
Guiyom được thiết kế và triển khai với các mục tiêu chính là hiệu năng, an toàn, độ tin cậy và khả năng bảo trì trong môi trường quy mô lớn hoặc khắc nghiệt. Thiết kế hướng tới việc quản lý trạng thái và tài nguyên một cách có thể dự đoán không chỉ trên đường thực thi bình thường mà cả trong nhiều tình huống lỗi.
Công việc hiện tại tập trung vào việc hoàn thiện nền tảng cốt lõi và các phần triển khai theo từng nền tảng, đồng thời hoàn thành phần triển khai kỹ thuật và xác minh cần thiết trước khi nộp đơn sáng chế P3.
Guiyom phụ thuộc vào vòng lặp sự kiện và các chức năng trung lập nền tảng khác của Clair. Vì vậy, công việc hỗ trợ Microsoft Windows và trung lập hóa nền tảng đang được tiến hành trong Clair cũng ảnh hưởng đến tiến độ tổng thể của Guiyom.
Clair
Clair là một thư viện đang được phát triển bằng Ada để cung cấp các chức năng hệ thống cần thiết cho việc phát triển ứng dụng đa nền tảng.
Mục tiêu của Clair là cung cấp vòng lặp sự kiện, I/O bất đồng bộ, xử lý tín hiệu, thực thi tiến trình, quản lý thời gian và bộ định thời, chức năng tệp và thư viện động, ghi nhật ký, quốc tế hóa, biểu thức chính quy và hạ tầng kiểm thử.
Kho mã nguồn công khai có tại:
https://github.com/hodong-kim/clair
Trọng tâm phát triển hiện tại của Clair là hỗ trợ Microsoft Windows và trung lập hóa nền tảng.
Một số chức năng và giao diện của Clair trước đây được viết dựa trên các giả định dành cho hệ điều hành họ Unix. Trong quá trình bổ sung hỗ trợ Windows, có thể thấy rằng chỉ thêm mã dành riêng cho Windows là chưa đủ. Các hợp đồng dùng chung giữa các nền tảng và phần triển khai riêng cho từng hệ điều hành cũng cần được tách biệt rõ ràng.
Vì vậy, Clair đang triển khai vòng lặp sự kiện và các chức năng hệ thống cho Windows, đồng thời tách chức năng dành riêng cho Unix khỏi chức năng dùng chung giữa các nền tảng. Những khu vực chính như tệp, tiến trình và ghi nhật ký cũng đang được xem xét lại để có thể sử dụng nhất quán trên nhiều hệ điều hành. Môi trường build cũng đang được cải thiện để các phụ thuộc và tệp nhị phân cho Windows có thể được tạo và xác minh theo cách tái lập được.
Clair.Test cũng đang được mở rộng thành một framework kiểm thử trung lập về
ngôn ngữ, có thể tích hợp kiểm thử cho mã Ada, mã C và các chương trình bên
ngoài.
Do đó, Clair không ở trạng thái ngừng phát triển hoặc chỉ đơn thuần bị trì hoãn. Đúng hơn, việc hỗ trợ Windows đã mở rộng phạm vi công việc nền tảng cần hoàn thành.
Trong ngắn hạn, công việc này là một nút thắt của toàn bộ nhóm dự án. Tuy nhiên, về dài hạn, đây là quá trình cần thiết để cung cấp cùng một API cấp cao và cách xử lý lỗi nhất quán trên Linux, FreeBSD, macOS, Windows và các môi trường được hỗ trợ khác.
Tình hình phát triển tổng thể
Mối quan hệ giữa ba dự án có thể được tóm tắt như sau.
Clair
↓
Guiyom
↓
Nâng cấp Nimf
Công việc hỗ trợ Microsoft Windows và trung lập hóa nền tảng của Clair cần tiến triển trước khi nền tảng đa nền tảng của Guiyom có thể được mở rộng một cách ổn định. Sau đó, Guiyom phải đạt đủ độ hoàn thiện trước khi kiến trúc GUI và kiến trúc máy chủ phương thức nhập của Nimf có thể được cải thiện toàn diện.
Điều này có thể khiến tiến độ của Nimf và Guiyom trông chậm, nhưng công việc nền tảng dùng chung lấy Clair làm trung tâm vẫn đang tiếp tục.
Thay vì bổ sung các tính năng dễ nhìn thấy càng nhanh càng tốt, công việc hiện tại nhằm bảo đảm rằng quá trình phát triển sau này không một lần nữa bị giới hạn bởi một hệ điều hành hoặc bộ công cụ GUI cụ thể.
Hiện vẫn khó đưa ra lịch hoàn thành chính xác. Tuy nhiên, sau khi các nút thắt hiện tại được giải quyết, việc phát triển ba dự án sẽ có thể tiến hành độc lập và song song hơn.