Tại sao Canonical chọn QT trên GTK cho thế hệ tiếp theo của Unity?


33

Rất nhiều điều đã được viết rằng tôi hơi bối rối, nhưng nếu tôi không nhầm thì Canonical đang xây dựng thế hệ Unity tiếp theo cho các thiết bị di động với Qt, và trong tương lai gần, máy tính để bàn cũng sẽ được chuyển sang qt.

Tôi chỉ muốn biết lý do kỹ thuật và / hoặc chính trị thúc đẩy quyết định này và hậu quả của nó đối với các ứng dụng máy tính để bàn Ubuntu hiện tại.


3
Lập trình trong GTK là một nỗi đau rất lớn bởi vì nó được xây dựng từ GObject, đây là một nỗ lực khốn khổ để đưa các khái niệm OO vào C. Qt chỉ sử dụng C ++, hỗ trợ OO (và các mô hình khác). C ++ có thể không hoàn hảo, nhưng GObject chỉ đặt thanh rất thấp.
weberc2

Câu trả lời:


23

Bạn có thể tìm thấy câu trả lời trên danh sách gửi thư và trên blog của Mark Shuttleworth . Bài đăng blog này có thể trả lời nó tốt nhất:

Là một phần trong kế hoạch của chúng tôi cho Natty + 1, chúng tôi sẽ cần tìm một khoảng trống trên thư viện CD cho Qt và chúng tôi sẽ đánh giá các ứng dụng được phát triển với Qt để đưa vào CD và cài đặt mặc định của Ubuntu.

Dễ sử dụng và tích hợp hiệu quả, là những giá trị chính trong trải nghiệm người dùng của chúng tôi. Chúng tôi quan tâm rằng các ứng dụng chúng tôi chọn là hài hòa với nhau và toàn bộ hệ thống. Trong lịch sử, điều đó có nghĩa là chúng tôi đã ưu tiên rất nhiều cho các ứng dụng được viết bằng Gtk, bởi vì một lượng hài hòa nhất định đến theo mặc định từ việc sử dụng cùng một bộ công cụ dành cho nhà phát triển. Điều đó nói rằng, với OpenOffice và Firefox đã có từ đầu, Gtk rõ ràng không phải là một yêu cầu tuyệt đối. Điều tôi đang tranh luận bây giờ là các giá trị quan trọng và bộ công cụ chỉ là phương tiện cho mục đích đó. Chúng ta nên đánh giá các ứng dụng trên cơ sở mức độ đáp ứng yêu cầu của chúng, không ảnh hưởng đến chúng trên cơ sở các lựa chọn kỹ thuật được thực hiện bởi nhà phát triển.

Để đánh giá một ứng dụng cho cài đặt mặc định của Ubuntu, chúng ta nên hỏi:

  • Có phải phần mềm miễn phí không?
  • nó là tốt nhất trong lớp?
  • Nó có tích hợp với các thiết lập hệ thống và sở thích không?
  • Nó có tích hợp với các ứng dụng khác không?
  • những người không thể sử dụng chuột hoặc bàn phím có thể truy cập được không?
  • nó nhìn và cảm thấy phù hợp với phần còn lại của hệ thống?

Tất nhiên, sự lựa chọn Qt của nhà phát triển không có ảnh hưởng đến hai cái đầu tiên. Bản thân Qt đã có sẵn theo GPL trong một thời gian dài và gần đây đã có sẵn theo LGPL. Và có rất nhiều phần mềm tốt nhất được viết bằng Qt, đó là một bộ công cụ rất có khả năng.

Tuy nhiên, cài đặt hệ thống và prefs từ lâu đã là nguyên nhân gây ra ma sát giữa Qt và Gtk. Việc tích hợp với các cài đặt và tùy chọn hệ thống là rất quan trọng đối với ý nghĩa của một ứng dụng trực thuộc trên hệ thống. Nó ảnh hưởng đến khả năng quản lý ứng dụng đó bằng cùng một công cụ mà người ta sử dụng để quản lý tất cả các ứng dụng khác và loại trải nghiệm cài đặt và sở thích mà người dùng có thể có với ứng dụng. Điều này theo truyền thống là một vấn đề với các ứng dụng Qt / KDE trên Ubuntu, bởi vì tất cả các ứng dụng Gtk đều sử dụng kho tùy chọn có thể quản lý tập trung và các ứng dụng KDE làm những việc khác nhau.

Để giải quyết vấn đề này, Canonical đang thúc đẩy sự phát triển của các ràng buộc dconf cho Qt, để có thể viết một ứng dụng Qt sử dụng cùng khung cài đặt như mọi thứ khác trong Ubuntu. Chúng tôi đã ký hợp đồng với Ryan Lortie, người rõ ràng biết rất rõ, và anh ấy sẽ làm việc với một số người tại Canonical, người đã sử dụng Qt cho công việc phát triển tùy chỉnh cho khách hàng. Chúng tôi tự tin rằng kết quả sẽ là tự nhiên đối với các nhà phát triển Qt và sự thể hiện đầy đủ về ngữ nghĩa và phong cách của dconf.

Nhóm Qt từ lâu đã hoạt động tốt trong cộng đồng Ubuntu rộng lớn hơn - chúng tôi có đại diện Qt tuyệt vời tại UDS cứ sau sáu tháng, nhóm Kubfox có kinh nghiệm và quan tâm sâu sắc đến việc đóng gói và bảo trì Qt, có rất nhiều trao đổi kỹ thuật tốt giữa Qt ngược dòng và khác nhau các bộ phận của cộng đồng Ubuntu, bao gồm Canonical. Ví dụ, mọi người Qt đang làm việc để tích hợp uTouch.

Tôi muốn vẽ một sự khác biệt giữa những người ăn vặt và ăn thịt người ở những nơi rõ ràng. Ứng dụng KDE không biết gì về cấu hình hệ thống dconf và kết quả là không thể dễ dàng tích hợp với máy tính để bàn Ubuntu. Vì vậy, chúng tôi sẽ không đề xuất Amarok thay thế Banshee bất cứ lúc nào sớm! Nhưng tôi nghĩ rằng nó hoàn toàn hợp lý khi dcs, một khi nó có các ràng buộc Qt tuyệt vời, được cộng đồng KDE xem xét. Có những người tốt hơn để dẫn dắt cuộc trò chuyện đó nếu họ muốn, vì vậy tôi sẽ không đẩy ý tưởng đi xa hơn ở đây. Tuy nhiên, nếu ứng dụng KDE học cách nói chuyện dcs ngoài các cơ chế KDE tiêu chuẩn, điều này rất đơn giản, nó sẽ là một ứng cử viên cho cài đặt mặc định của Ubuntu.

Quyết định mở cửa cho Qt hoàn toàn không phải là một lời chỉ trích về Gnome. Đây là một kỷ niệm về sự đa dạng và phức tạp của phần mềm miễn phí. Các giá trị dễ sử dụng và tích hợp này vẫn là các giá trị được chia sẻ với Gnome và là cơ sở tuyệt vời để cộng tác với các nhà phát triển và thành viên dự án Gnome. Có lẽ bản thân Gnome sẽ nắm lấy Qt, có lẽ là không, nhưng nếu có thì việc chúng ta sẵn sàng thổi bùng con đường này sẽ là một đóng góp trong lãnh đạo. Việc tạo ra một hệ sinh thái sôi động sẽ dễ dàng hơn nhiều nếu bạn chấp nhận một lượng phân kỳ nhất định từ cách thức chính tắc, vì vậy để nói Công việc của chúng tôi về thiết kế tập trung vào Gnome, với các cài đặt và tùy chọn tập trung hiện tại khi chúng tôi chuyển sang Gnome 3.0 và gtk3.

Tất nhiên, đây là một cơ hội hoàn hảo cho những người sẽ chọc vào mối quan hệ đó để làm điều đó, nhưng theo quan điểm của tôi, điều quan trọng nhất là mối quan hệ vững chắc mà chúng ta có với những người thực sự viết các ứng dụng theo biểu ngữ Gnome. Chúng tôi muốn trở thành cách tốt nhất để làm cho công việc khó khăn của những nhà phát triển phần mềm miễn phí đó trở thành vấn đề , theo ý chúng tôi, cách tốt nhất để đảm bảo nó tạo ra sự khác biệt thực sự trong hàng triệu cuộc sống mỗi ngày và là cách tốt nhất để kết nối họ với người dùng của họ.

Đối với những người tốt ở Trolltech, giờ là Nokia, người đã biến Qt thành một bộ công cụ tuyệt vời - cảm ơn bạn. Đối với các nhà phát triển muốn sử dụng nó và là một phần của trải nghiệm Ubuntu - xin chào mừng.


6
Lần trước tôi đã kiểm tra QT là hoàn toàn miễn phí. Nó không như vậy trước đây nhưng bây giờ mọi thứ đều miễn phí.
Mario Kamenjak

5
@VassilisGr Qt đã tương thích GPL một thời gian rồi (điều này làm cho nó miễn phí như những thứ GPL khác). Tuy nhiên, để Qt nhận được sự đóng góp mã từ cộng đồng, khoản đóng góp đó phải được cấp theo giấy phép kép cho phép bất kỳ công ty nào sở hữu Qt ngày nay bán giấy phép không GPL cho mã nếu ai đó trả tiền cho họ. Theo định nghĩa của Stallman về "Miễn phí như trong Phần mềm Tự do" không phải là vấn đề (miễn là chúng tôi chỉ xem xét lấy phần mềm từ những người không trả tiền và do đó đang sử dụng GPL ...) Ubuntu sẽ không trả tiền, và do đó là GPL, mà Linux dù sao cũng ... rất tốt.
HostileFork 1/03/2015

14

GTK + không hỗ trợ độc lập độ phân giải, các thiết bị di động hiện đại có mật độ điểm ảnh cực cao. Nếu bạn chạy ứng dụng GTK + trên màn hình di động, tất cả các yếu tố giao diện người dùng sẽ nhỏ đến mức không thể sử dụng được.

Đây là một lỗi mở trên GTK + kể từ năm 2008 cho đến khi nó bị đóng cửa vào năm 2014 với "chúng tôi có hỗ trợ quy mô hi-dpi bây giờ - nó không hoàn toàn giống như vậy, nhưng đủ gần để đưa ra nhận xét lỗi này".

Khi GTK + 3 được phát hành, dự án đã có cơ hội hoàn hảo để thêm độc lập độ phân giải, vì dù sao chúng cũng đã phá vỡ tính tương thích. Họ đã chọn không, và bây giờ thực sự là quá muộn đối với họ.

Trên Lộ trình GTK + , tính độc lập độ phân giải được lên kế hoạch cho bản phát hành sau 4.0, vì vậy họ sẽ phát hành 4.0 sau đó bản phát hành chính sau đó sẽ có bản phát hành. Nếu họ tuân theo kế hoạch đó thì ngay cả GNU / Linux trên máy tính để bàn cũng sẽ phải từ bỏ GTK + vì màn hình máy tính để bàn và màn hình máy tính xách tay DPI cao đã có sẵn và sắp trở thành bình thường mới.


2

Tôi đưa ra các lý do Kỹ thuật / thực dụng: Nokia đã mua Trolltech và đầu tư rất nhiều vào QT. Nó nhẹ và có nhiều năm tối ưu hóa cho nền tảng di động. Bất kể ý kiến ​​hiện tại của bạn về Nokia, N900 đã đi trước thời đại nhiều năm ... và nó dựa trên debian / QT ... nhưng đắt tiền. Tuy nhiên, tôi không có kiến ​​thức thực sự về các quyết định.


2
QT cũng cơ bản hơn di động. Nhiều lợi ích hơn cho nhà phát triển tạo ra một ứng dụng bằng cách sử dụng QT, vì họ sẽ tìm thấy sự hỗ trợ riêng trên nhiều hệ điều hành khác - Android, Blackberry, Windows Mobile, WebOS. và tất nhiên là Mac OS và Windows. QT cũng được hưởng lợi từ những người đóng góp nhiều hơn đáng kể.
mike stewart

1

Blog của Ubuntu CTO Matt Zimmerman cũng có nhiều thông tin:

Chính trong tinh thần này, tôi đã suy nghĩ về Qt gần đây. Chúng tôi muốn làm cho việc phát triển ứng dụng cho Ubuntu nhanh chóng, dễ dàng và không đau đớn, và Qt là một lựa chọn đáng để khám phá cho các nhà phát triển ứng dụng. Khi nghĩ về điều này, tôi đã nhận ra rằng có khá nhiều điểm chung giữa các điểm mạnh của Qt và một số hướng mới trong Ubuntu:

  • Qt có lịch sử sử dụng lâu dài trên ARM cũng như x86 , nhờ tính phổ biến trên các thiết bị nhúng. Các sản phẩm tiêu dùng đã được xây dựng bằng Qt trên ARM trong hơn 10 năm. Chúng tôi đã cung cấp các sản phẩm Ubuntu cho ARM gần hai năm nay và 10.10 hỗ trợ nhiều bo mạch ARM hơn bao giờ hết, bao gồm các bảng tham chiếu từ Freescale, Marvell và TI. Qt đang bổ sung tối ưu hóa ARMv7 để mang lại lợi ích cho các chip ARM mới nhất. Chúng tôi làm điều này để cung cấp cho các OEM một sự lựa chọn về phần cứng, mà không phải hy sinh sự lựa chọn phần mềm. Qt bảo tồn sự lựa chọn này cho các nhà phát triển ứng dụng.
  • Qt là một khung ứng dụng đa nền tảng , với các cổng chính thức cho Windows, MacOS và hơn thế nữa, và các cổng cộng đồng thử nghiệm cho Android, iPhone và WebOS. Hỗ trợ đa nền tảng mạnh mẽ là một trong những nguyên tắc ban đầu của Qt, và nó cho thấy sự trưởng thành của các cảng chính thức. Với Ubuntu Light được cài đặt trên các máy tính chạy Windows và Ubuntu One hạ cánh trên Android và iPhone, chúng tôi cần khả năng tương tác với các nền tảng khác. Ngoài ra còn có một lượng lớn các nhà phát triển đã biết cách nhắm mục tiêu Windows, những người có thể tiếp cận người dùng Ubuntu bằng cách chọn Qt.
  • Qt có một hệ thống đầu vào cảm ứng khá trưởng thành , hiện đã hỗ trợ đa chạm và cử chỉ (bao gồm cả QML), mặc dù nó chỉ hoàn thành trên Windows 7 và Mac OS X 10.6. Trong khi đó, Canonical đã làm việc với cộng đồng để phát triển một khung công tác cảm ứng đa cấp cấp thấp cho Linux và X11, vì lợi ích của Qt và các bộ công cụ khác. Những nỗ lực này cuối cùng sẽ gặp nhau ở giữa.

Nhìn chung, tôi nghĩ Qt có rất nhiều thứ để cung cấp cho những người muốn phát triển ứng dụng cho (và trên) Ubuntu, đặc biệt là bây giờ. Nó đã hỗ trợ các ứng dụng đa nền tảng phổ biến như VLC, chưa kể đến toàn bộ bản phân phối Kubfox. Tôi đã bỏ lỡ nó khi điều này xảy ra vào năm ngoái, nhưng Qt hiện có sẵn dưới cả LGPL 2.1 hoặc GPL 3.0, điều này sẽ làm cho nó phù hợp với hầu hết mọi ứng dụng Ubuntu. Nó có sự ủng hộ thương mại mạnh mẽ cũng như một cộng đồng phát triển lớn. Tất nhiên, không có giải pháp nào đáp ứng được tất cả các nhu cầu của nhà phát triển và Ubuntu hỗ trợ nhiều bộ công cụ và khung vì lý do này, nhưng Qt có vẻ như là một công cụ tuyệt vời để có trong hộp công cụ của chúng tôi cho con đường phía trước.

Một bài viết của Ars Technica thảo luận về bài đăng trên blog này cung cấp một số hiểu biết:

Qt có thể đưa các nhà phát triển bên thứ ba đến với Linux

Mặc dù Gtk + vẫn có giá trị và có một số lý do để tiếp tục sử dụng nó để xây dựng phần mềm Linux gốc, Qt hiện là lựa chọn rõ ràng cho các ISV đang nhắm mục tiêu vào nhiều nền tảng. Qt làm cho nó cực kỳ dễ dàng để phù hợp với giao diện gốc của nền tảng cơ bản hoặc xây dựng giao diện người dùng hoàn toàn tùy chỉnh phù hợp tối ưu với thiết bị đích hoặc yếu tố hình thức.

Khi Nokia và Intel đưa MeeGo đến một loạt các thiết bị, nó sẽ thu hút một số nhà cung cấp phần mềm thương mại lớn. Sẽ là tương đối dễ dàng cho các công ty phần mềm đó để đưa các ứng dụng Qt di động của họ lên máy tính để bàn Linux bằng cùng một mã mà họ sử dụng trên MeeGo. Qt được thiết kế đặc biệt để làm cho điều đó dễ dàng. Đây sẽ là một chiến thắng lớn cho Linux máy tính để bàn vì nó sẽ mang đến các ứng dụng của bên thứ ba mà không có sẵn.

Điều đáng chú ý là một số nhà cung cấp phần mềm di động nổi tiếng đã háo hức đón nhận Qt nhờ sự hỗ trợ của Nokia cho bộ công cụ. Chẳng hạn, công ty truyền phát video di động Qik đang làm việc trên một cổng dựa trên Qt thử nghiệm của ứng dụng phổ biến của mình với mục đích đưa nó đến MeeGo.

Tác giả của bài viết là người tạo ra ứng dụng Gwibber IM, vì vậy anh ta có một số kinh nghiệm phát triển GUI cho Linux.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.