Dlaczego Canonical wybiera QT zamiast GTK dla następnej generacji Unity?

33

Napisano tak wiele, że jestem trochę zdezorientowany, ale jeśli się nie mylę, Canonical buduje kolejną generację Unity dla urządzeń mobilnych z Qt, aw niedalekiej przyszłości pulpit zostanie również migrowany do qt.

Chciałem tylko poznać techniczne i / lub polityczne powody, dla których podjęła tę decyzję, oraz jakie konsekwencje może to znaczyć dla istniejących aplikacji komputerowych Ubuntu.

opensas
źródło
3
Programowanie w GTK jest ogromnym problemem, ponieważ jest zbudowane z GObject, co jest nieszczęśliwą próbą wprowadzenia koncepcji OO do C. Qt po prostu używa C ++, który obsługuje OO (i inne paradygmaty) po wyjęciu z pudełka. C ++ może nie być idealny, ale GObject po prostu ustawia pasek tak bardzo bardzo nisko.
weberc2

Odpowiedzi:

23

Odpowiedź znajdziesz na liście mailingowej i na blogu Marka Shuttlewortha . Ten post na blogu prawdopodobnie najlepiej na to odpowiada:

W ramach planowania Natty + 1 będziemy musieli znaleźć trochę miejsca na dysku CD dla bibliotek Qt, a my ocenimy aplikacje opracowane w Qt pod kątem włączenia na CD i domyślnej instalacji Ubuntu.

Łatwość użycia i skuteczna integracja to kluczowe wartości w naszym doświadczeniu użytkownika. Dbamy o to, aby wybrane przez nas aplikacje były harmonijne ze sobą oraz z całym systemem. Historycznie oznaczało to, że bardzo mocno preferowaliśmy aplikacje napisane przy użyciu Gtk, ponieważ pewna ilość harmonii pochodzi domyślnie z użycia tego samego zestawu narzędzi dla programistów. To powiedziawszy, ponieważ OpenOffice i Firefox były tam od samego początku, Gtk najwyraźniej nie jest absolutnym wymogiem. Argumentuję teraz, że ważne są wartości, a zestaw narzędzi jest jedynie środkiem do osiągnięcia tego celu. Powinniśmy oceniać aplikacje na podstawie tego, jak dobrze spełniają one wymagania, a nie przesądzać o nich na podstawie technicznych wyborów dokonanych przez programistę.

Oceniając aplikację pod kątem domyślnej instalacji Ubuntu, powinniśmy zapytać:

  • czy to jest wolne oprogramowanie?
  • czy jest najlepszy w swojej klasie?
  • czy integruje się z ustawieniami i preferencjami systemowymi?
  • czy integruje się z innymi aplikacjami?
  • czy jest dostępny dla osób, które nie mogą korzystać z myszy lub klawiatury?
  • czy wygląda i czuje się spójny z resztą systemu?

Oczywiście wybór Qt przez programistę nie ma wpływu na pierwsze dwa. Sama Qt była dostępna na licencji GPL od dłuższego czasu, a ostatnio stała się dostępna na licencji LGPL. I jest mnóstwo najlepszych w swojej klasie programów napisanych za pomocą Qt, jest to bardzo sprawny zestaw narzędzi.

Jednak ustawienia systemowe i ustawienia wstępne były od dawna przyczyną tarcia między Qt i Gtk. Integracja z ustawieniami i preferencjami systemu ma kluczowe znaczenie dla poczucia „przynależności” aplikacji do systemu. Wpływa na możliwość zarządzania tą aplikacją przy użyciu tych samych narzędzi, których używa się do zarządzania wszystkimi innymi aplikacjami, oraz na rodzaj ustawień i preferencji, jakie użytkownicy mogą mieć z aplikacją. Jest to tradycyjnie problem z aplikacjami Qt / KDE na Ubuntu, ponieważ wszystkie aplikacje Gtk używają centralnie zarządzanego sklepu z preferencjami, a aplikacje KDE działają inaczej.

Aby temu zaradzić, Canonical kieruje rozwojem powiązań dconf dla Qt, dzięki czemu możliwe jest napisanie aplikacji Qt, która używa takich samych ram ustawień, jak wszystko inne w Ubuntu. Zawarliśmy umowę z Ryanem Lortie, który najwyraźniej bardzo dobrze zna dconf, i będzie współpracował z niektórymi ludźmi z Canonical, którzy używali Qt do niestandardowych prac programistycznych dla klientów. Jesteśmy przekonani, że wynik będzie naturalny dla programistów Qt, a także pełne odzwierciedlenie semantyki i stylu dconf.

Zespół Qt od dawna dobrze działa w szerszej społeczności Ubuntu - co sześć miesięcy mamy doskonałą reprezentację Qt w UDS, zespół Kubuntu ma duże doświadczenie i zainteresowanie pakowaniem i konserwacją Qt, istnieje wiele dobrej wymiany technicznej między Qt upstream i różnymi części społeczności Ubuntu, w tym Canonical. Na przykład ludzie Qt pracują nad integracją uTouch.

W oczywistych miejscach dokonałbym rozróżnienia między „Qt” i „KDE”. Aplikacja KDE nie wie nic o konfiguracji systemu dconf i dlatego nie może łatwo zintegrować się z pulpitem Ubuntu. Więc nie zamierzamy proponować Amaroka, aby zastąpił Banshee w najbliższym czasie! Myślę jednak, że jest całkiem prawdopodobne, że dconf, gdy będzie miał świetne powiązania Qt, będzie brany pod uwagę przez społeczność KDE. Są lepsi ludzie, którzy chcą prowadzić tę rozmowę, jeśli chcą, więc nie popchnę dalej tego pomysłu. Niemniej jednak, jeśli aplikacja KDE nauczy się mówić dconf jako dodatek do standardowych mechanizmów KDE, co powinno być proste, będzie to kandydat do domyślnej instalacji Ubuntu.

Decyzja o otwarciu na Qt nie jest w żaden sposób krytyką GNOME. To święto różnorodności i złożoności wolnego oprogramowania. Te wartości łatwości użytkowania i integracji pozostają wspólnymi wartościami z GNOME i stanowią doskonałą podstawę do współpracy z programistami i członkami projektu GNOME. Być może sam GNOME obejmie Qt, a może nie, ale jeśli tak, to nasza gotowość do wytyczenia tego szlaku byłaby wkładem w przywództwo. O wiele łatwiej jest stworzyć żywy ekosystem, jeśli zaakceptujesz pewną rozbieżność z kanonicznym sposobem, że tak powiem. Nasza praca nad projektowaniem koncentruje się wokół GNOME, z ustawieniami i preferencjami, na których skupiamy się obecnie, gdy przechodzimy do GNOME 3.0 i gtk3.

Oczywiście jest to idealna okazja dla tych, którzy żartują z tego związku, ale moim zdaniem najważniejsza jest solidna relacja, którą mamy z ludźmi, którzy faktycznie piszą aplikacje pod sztandarem GNOME. Chcemy być najlepszym sposobem, aby ciężka praca twórców wolnego oprogramowania miała znaczenie , co oznacza najlepszy sposób, aby zapewnić rzeczywistą różnicę w milionach istnień ludzkich każdego dnia i najlepszy sposób, aby połączyć ich z ich użytkownicy.

Do dobrych ludzi z Trolltech, teraz Nokia, którzy stworzyli Qt świetny zestaw narzędzi - dziękuję. Programiści, którzy chcą z niego korzystać i uczestniczyć w Ubuntu - zapraszamy.

Rinzwind
źródło
6
Ostatnio sprawdziłem, że QT jest całkowicie darmowy. Nie było tak wcześniej, ale teraz wszystko jest bezpłatne.
Mario Kamenjak,
5
@VassilisGr Qt od pewnego czasu jest kompatybilny z GPL (co czyni go tak bezpłatnym, jak inne rzeczy GPL). Jednak aby Qt mógł wziąć wkład kodu od społeczności, wkład ten musi być przyznany na podstawie podwójnej licencji, umożliwiającej każdej firmie, która jest dziś właścicielem Qt, sprzedanie kodu innym niż GPL, jeśli ktoś je zapłaci. Które w definicji Stallmana „Free as in Freedom Software” nie stanowi problemu (o ile rozważamy pobieranie oprogramowania od ludzi, którzy nie zapłacili, a więc korzystają z GPL ...) Ubuntu nie płaci, i tym samym być GPL, którym zresztą Linux jest ... tak dobrze.
HostileFork
14

GTK + nie obsługuje niezależności rozdzielczości, nowoczesne urządzenia mobilne mają bardzo wysoką gęstość pikseli. Jeśli uruchomisz aplikację GTK + na ekranie mobilnym, wszystkie elementy interfejsu użytkownika będą tak małe, że nie będą nadawać się do użytku.

Jest to otwarty błąd w GTK + od 2008 roku, dopóki nie został zamknięty w 2014 roku, z komentarzem „mamy teraz obsługę skali hi-dpi - to nie jest dokładnie to samo, ale wystarczająco blisko, aby ten błąd stał się przestarzały”.

Kiedy GTK + 3 zostało wydane, projekt miał doskonałą okazję do dodania niezależności rozdzielczości, ponieważ i tak łamały one kompatybilność. Nie zdecydowali się, a teraz jest już dla nich za późno.

Na mapie drogowej GTK + niezależność rozdzielczości jest planowana na wydanie po wersji 4.0, więc wydadzą wersję 4.0, a następnie będzie dostępna główna wersja. Jeśli trzymają się tego planu, to nawet GNU / Linux na komputerach stacjonarnych będzie musiał zrezygnować z GTK +, ponieważ monitory stacjonarne o wysokiej rozdzielczości i monitory laptopowe są już dostępne i wkrótce staną się normalne.

trampster
źródło
2

Moje podejście z przyczyn technicznych / pragmatycznych: Nokia kupiła Trolltech i dużo zainwestowała w QT. Jest lekki i ma lata optymalizacji w kierunku platformy mobilnej. Niezależnie od twoich obecnych opinii na temat Nokii, N900 wyprzedzał swoje lata ... i był oparty na Debianie / QT ... ale był drogi. Nie mam jednak prawdziwej wiedzy na temat decyzji.

Mike Stewart
źródło
2
QT jest również znacznie bardziej przenośny. Więcej korzyści za programistę, który tworzy aplikację za pomocą QT, ponieważ znajdą natywną obsługę wielu, wielu innych systemów operacyjnych - między innymi Androida, Blackberry, Windows Mobile i WebOS. i oczywiście Mac OS i Windows. QT korzysta również ze znacznie większej liczby współpracowników.
Mike Stewart
1

Blog Ubuntu CTO Matta Zimmermana zawiera również informacje:

Właśnie w tym duchu ostatnio myślałem o Qt. Chcemy, aby tworzenie aplikacji dla Ubuntu było szybkie, łatwe i bezbolesne, a Qt to opcja, którą warto zbadać dla programistów aplikacji. Myśląc o tym, zdałem sobie sprawę, że istnieje silna podobieństwo między mocnymi stronami Qt a niektórymi nowymi kierunkami w Ubuntu:

  • Qt ma długą historię użycia na ARM, a także na x86 , ponieważ jest popularny na urządzeniach wbudowanych. Produkty konsumenckie są budowane przy użyciu Qt na ARM od ponad 10 lat. Od prawie dwóch lat udostępniamy produkty Ubuntu dla ARM, a 10.10 obsługuje więcej płyt ARM niż kiedykolwiek, w tym płyty referencyjne Freescale, Marvell i TI. Qt dodaje optymalizacje ARMv7, aby skorzystać z najnowszych układów ARM. Robimy to, aby zaoferować producentom OEM wybór sprzętu, bez rezygnacji z wyboru oprogramowania. Qt zachowuje ten sam wybór dla programistów aplikacji.
  • Qt to platforma dla wielu platform , z oficjalnymi portami dla Windows, MacOS i więcej oraz eksperymentalnymi portami społecznościowymi dla Androida, iPhone'a i WebOS. Silne wsparcie dla wielu platform było jedną z pierwotnych zasad Qt i pokazuje dojrzałość oficjalnych portów. Ponieważ Ubuntu Light jest instalowany na komputerach z systemem Windows, a Ubuntu One ląduje na Androidzie i iPhonie, potrzebujemy współdziałania z innymi platformami. Istnieje również duża populacja programistów, którzy już wiedzą, jak atakować system Windows, którzy mogą również dotrzeć do użytkowników Ubuntu, wybierając Qt.
  • Qt ma dość dojrzały system wprowadzania dotykowego , który teraz obsługuje wielodotyki i gesty (w tym QML), chociaż jest kompletny tylko w Windows 7 i Mac OS X 10.6. W międzyczasie firma Canonical współpracuje ze społecznością nad opracowaniem niskiego poziomu środowiska wielodotykowego dla systemów Linux i X11, z korzyścią dla Qt i innych zestawów narzędzi. Te wysiłki w końcu spotkają się w środku.

Ogólnie rzecz biorąc, myślę, że Qt ma wiele do zaoferowania osobom, które chcą tworzyć aplikacje dla (i na) Ubuntu, szczególnie teraz. Obsługuje już popularne aplikacje międzyplatformowe, takie jak VLC, nie wspominając już o całej dystrybucji Kubuntu. Tęskniłem za tym, gdy stało się to w zeszłym roku, ale Qt jest teraz dostępny na licencji LGPL 2.1 lub GPL 3.0, co powinno sprawić, że będzie on odpowiedni dla praktycznie każdej aplikacji Ubuntu. Ma silne wsparcie komercyjne, a także dużą społeczność programistów. Żadne pojedyncze rozwiązanie nie zaspokoi wszystkich potrzeb programistów, dlatego Ubuntu obsługuje wiele zestawów narzędzi i platform z tego powodu, ale Qt wydaje się być doskonałym narzędziem do posiadania w naszym zestawie narzędzi na przyszłość.

Artykuł Ars Technica omawiający ten post na blogu zawiera pewne spostrzeżenia:

Qt może sprowadzić zewnętrznych programistów do systemu Linux

Chociaż Gtk + wciąż ma wartość i istnieje wiele powodów, aby nadal używać go do tworzenia natywnego oprogramowania Linux, Qt jest teraz oczywistym wyborem dla niezależnych dostawców oprogramowania, którzy są ukierunkowani na wiele platform. Qt sprawia, że ​​wyjątkowo łatwo jest dostosować się do natywnego wyglądu platformy bazowej lub zbudować całkowicie niestandardowy interfejs użytkownika, który jest optymalnie dostosowany do docelowego urządzenia lub formy.

Gdy Nokia i Intel wprowadzą MeeGo do szerokiej gamy urządzeń, przyciągnie to kilku głównych dostawców oprogramowania komercyjnego. Firmom tworzącym oprogramowanie stosunkowo łatwo byłoby przenieść swoje mobilne aplikacje Qt na pulpit systemu Linux przy użyciu tego samego kodu, którego używają w MeeGo. Qt jest specjalnie zaprojektowany, aby to ułatwić. Byłaby to ogromna wygrana dla stacjonarnego Linuxa, ponieważ przyniosłaby aplikacje innych firm, które w innym przypadku nie byłyby dostępne.

Warto zauważyć, że niektórzy wybitni dostawcy oprogramowania mobilnego już chętnie korzystają z Qt ze względu na wsparcie Nokia dla zestawu narzędzi. Na przykład Qik, firma zajmująca się strumieniowym przesyłaniem wideo, pracuje nad eksperymentalnym portem popularnej aplikacji opartej na Qt w celu dostarczenia jej do MeeGo.

Autor artykułu jest twórcą aplikacji Gwibber IM, więc ma pewne doświadczenie w tworzeniu GUI dla Linuksa.

muru
źródło