Dự án hồi sinh GTK1 gặp phải vấn đề biên dịch trên nhiều nền tảng bất chấp sự quan tâm của các lập trình viên

Nhóm Cộng đồng BigGo
Dự án hồi sinh GTK1 gặp phải vấn đề biên dịch trên nhiều nền tảng bất chấp sự quan tâm của các lập trình viên

Nỗ lực hồi sinh GTK1 của Robin Rowe , bộ công cụ GUI nhẹ từ cuối những năm 1990, đã thu hút sự chú ý của các lập trình viên đang tìm kiếm các giải pháp thay thế cho các framework hiện đại cồng kềnh. Tuy nhiên, những nỗ lực đầu tiên để xây dựng bộ công cụ đa nền tảng này đang tiết lộ những vấn đề ổn định đáng kể, làm nổi bật những thách thức trong việc duy trì phần mềm cũ.

Vấn đề biên dịch gây khó khăn cho việc áp dụng ban đầu

Các thành viên cộng đồng đang cố gắng biên dịch GTK1 gặp phải các lỗi khác nhau trên các nền tảng Windows , Mac và Linux . Lịch sử commit của dự án cho thấy rằng các thay đổi mã nguồn đang được thực hiện mà không đảm bảo thư viện có thể biên dịch thành công trên tất cả các hệ thống được hỗ trợ. Sự không ổn định này đặc biệt đáng lo ngại đối với các lập trình viên có thể muốn sử dụng GTK1 cho các ứng dụng sản xuất hoặc để duy trì phần mềm hiện có phụ thuộc vào bộ công cụ gốc.

Các vấn đề biên dịch một phần xuất phát từ mục tiêu đầy tham vọng của Rowe trong việc hợp nhất ba codebase trước đây riêng biệt - các phiên bản Windows , Linux và MacOS được duy trì bởi các nhóm khác nhau trong nhiều năm. Mặc dù việc hợp nhất này có ý nghĩa từ góc độ bảo trì, nhưng nó đang tạo ra những thách thức tích hợp cần được giải quyết trước khi bộ công cụ trở nên thực sự khả dụng.

Yêu cầu Build theo từng nền tảng:

Windows:

  • Visual Studio
  • CMake
  • Git Bash
  • libunistd

Linux (Ubuntu/Debian):

  • Công cụ build và CMake thông qua apt-get

MacOS:

  • Xcode
  • CMake
  • Yêu cầu cấu hình đường dẫn bổ sung

Những lo ngại về tương thích API xuất hiện

Một câu hỏi quan trọng được cộng đồng đặt ra tập trung vào khả năng tương thích nhị phân với GTK 1.2 gốc. Các lập trình viên có ứng dụng hiện tại hoặc các bản vá cho bộ công cụ cổ điển muốn có sự đảm bảo rằng GTK1 sẽ hoạt động như một sự thay thế trực tiếp. Một số thành viên cộng đồng đã duy trì các bản phân phối GTK 1.2 của riêng họ với các bản vá, và họ đang đánh giá xem việc di chuyển sang triển khai mới này có hợp lý hay không.

Câu hỏi về tương thích trở nên phức tạp hơn khi xem xét rằng GTK1 nhằm mục đích thêm một số API của GTK2 trong khi vẫn duy trì tính chất nhẹ của bản gốc. Cách tiếp cận lai này có thể cung cấp các đường dẫn di chuyển dễ dàng hơn cho một số ứng dụng, nhưng nó cũng có nguy cơ tạo ra một bộ công cụ không hoàn toàn thỏa mãn các yêu cầu cũ hoặc hiện đại.

Tính năng hiện đại so với hạn chế cũ

Cuộc thảo luận tiết lộ một căng thẳng cơ bản giữa việc bảo tồn sự đơn giản của GTK1 và giải quyết những thiếu sót rõ ràng của nó theo tiêu chuẩn ngày nay. Bộ công cụ gốc thiếu hỗ trợ Unicode và khử răng cưa phông chữ - những tính năng có thể chấp nhận được vào năm 1999 nhưng cảm thấy thô sơ bây giờ. Mặc dù các bản vá tồn tại để thêm hỗ trợ khử răng cưa, việc triển khai chúng đòi hỏi phải xây dựng lại tất cả các ứng dụng phụ thuộc.

GTK1 khiến tôi quan tâm vì nó cần thiết để xây dựng các ứng dụng retro mà tôi thích. CinePaint là một trong số đó, và cũng có hàng chục ứng dụng GTK cổ điển khác. Một lý do kỹ thuật để quan tâm đến GTK1 là kích thước mã. GTK2 lớn hơn nhiều so với GTK1 . GTK3 lớn hơn nhiều so với GTK2 .

Lợi thế về kích thước vẫn là điểm bán hàng mạnh nhất của GTK1 . Các phiên bản GTK hiện đại đã tăng trưởng đáng kể về độ phức tạp và phụ thuộc, khiến chúng không phù hợp cho các hệ thống nhúng, liên kết tĩnh, hoặc các tình huống mà việc sử dụng tài nguyên tối thiểu quan trọng hơn các tính năng tiên tiến.

So sánh kích thước phiên bản GTK :

  • GTK 1.2 (1999): 168.000 dòng code
  • GTK 2.0 (2002): 460.000 dòng code
  • GTK 3.0+: Lớn hơn đáng kể với các phụ thuộc bổ sung

Thách thức phân phối và bảo trì

Hầu hết các bản phân phối Linux hiện tại không còn đóng gói GTK 1.2 , với Slackware là một ngoại lệ đáng chú ý. Điều này tạo ra một vấn đề con gà và quả trứng khi các lập trình viên quan tâm đến các ứng dụng GTK1 trước tiên phải xây dựng bộ công cụ từ mã nguồn, tạo thêm ma sát cho việc áp dụng. Việc thiếu hỗ trợ phân phối rộng rãi cũng có nghĩa là người dùng cuối có thể gặp khó khăn khi chạy các ứng dụng dựa trên GTK1 mà không có các bước thiết lập bổ sung.

Thành công của dự án sẽ phần lớn phụ thuộc vào việc giải quyết các vấn đề biên dịch hiện tại và thiết lập một quy trình phát hành ổn định. Không có các bản dựng đáng tin cậy trên cả ba nền tảng chính, GTK1 có nguy cơ vẫn là một sự tò mò thay vì trở thành một công cụ thực tế cho các lập trình viên thực sự cần một giải pháp GUI nhẹ.

Hiện tại, các lập trình viên quan tâm đến GTK1 nên mong đợi gặp phải các vấn đề biên dịch và sẵn sàng đóng góp các bản sửa lỗi thay vì chỉ đơn giản sử dụng bộ công cụ. Dự án cho thấy tiềm năng cho các trường hợp sử dụng cụ thể, nhưng nó cần thêm công việc phát triển trước khi có thể phục vụ như một nền tảng đáng tin cậy cho các ứng dụng mới hoặc như một giải pháp bảo trì cho phần mềm cũ.

Tham khảo: GTK1 Cross-Platform GUI Toolkit