Perché Canonical sceglie QT su GTK per la prossima generazione di Unity?


33

È stato scritto così tanto che sono un po 'confuso, ma se non sbaglio Canonical sta costruendo la prossima generazione di Unity per dispositivi mobili con Qt, e nel prossimo futuro anche il desktop verrà migrato su qt.

Volevo solo conoscere le ragioni tecniche e / o politiche alla base di questa decisione e quali conseguenze potrebbe avere per le applicazioni desktop Ubuntu attualmente esistenti.


3
La programmazione in GTK è una vera seccatura perché si basa su GObject, che è un miserabile tentativo di inserire i concetti di OO in C. Qt usa semplicemente C ++, che supporta OO (e altri paradigmi) fuori dalla scatola. Il C ++ potrebbe non essere perfetto, ma GObject imposta la barra in modo davvero molto basso.
weberc2,

Risposte:


23

Puoi trovare la risposta sulla mailing list e sul blog di Mark Shuttleworth . Questo post sul blog probabilmente risponde meglio:

Come parte della nostra pianificazione per Natty + 1, dovremo trovare un po 'di spazio sul CD per le librerie Qt e valuteremo le applicazioni sviluppate con Qt per l'inclusione sul CD e l'installazione predefinita di Ubuntu.

La facilità d'uso e l'integrazione efficace sono valori chiave della nostra esperienza utente. Ci preoccupiamo che le applicazioni che scegliamo siano armoniose tra loro e con il sistema nel suo insieme. Storicamente, ciò ha significato che abbiamo dato una preferenza molto forte alle applicazioni scritte usando Gtk, perché una certa armonia deriva per impostazione predefinita dall'uso dello stesso toolkit di sviluppo. Detto questo, con OpenOffice e Firefox presenti fin dall'inizio, Gtk non è chiaramente un requisito assoluto. Quello che sto discutendo ora è che sono i valori che sono importanti e il toolkit è solo un mezzo per raggiungere questo scopo. Dovremmo valutare le app sulla base di quanto soddisfano i requisiti, senza pregiudicarle sulla base delle scelte tecniche fatte dallo sviluppatore.

Nel valutare un'app per l'installazione predefinita di Ubuntu, dovremmo chiedere:

  • è un software gratuito?
  • è il migliore della classe?
  • si integra con le impostazioni e le preferenze del sistema?
  • si integra con altre applicazioni?
  • è accessibile a persone che non possono usare un mouse o una tastiera?
  • sembra coerente con il resto del sistema?

Naturalmente, la scelta dello sviluppatore di Qt non ha alcuna influenza sui primi due. Qt stesso è stato disponibile sotto GPL per molto tempo, e più recentemente è diventato disponibile sotto LGPL. E c'è un sacco di software best-in-class scritto con Qt, è un toolkit molto capace.

Le impostazioni di sistema e le preferenze, tuttavia, sono state a lungo causa di attrito tra Qt e Gtk. L'integrazione con le impostazioni e le preferenze di sistema è fondamentale per il senso di un'applicazione "appartenente" al sistema. Influisce sulla capacità di gestire quell'applicazione utilizzando gli stessi strumenti utilizzati per gestire tutte le altre applicazioni e il tipo di esperienza di impostazioni e preferenze che gli utenti possono avere con l'app. Questo è stato tradizionalmente un problema con le applicazioni Qt / KDE su Ubuntu, perché tutte le app Gtk usano un archivio di preferenze gestibile centralmente e le app KDE fanno le cose diversamente.

Per ovviare a questo, Canonical sta guidando lo sviluppo di associazioni dconf per Qt, in modo che sia possibile scrivere un'app Qt che utilizza lo stesso framework di impostazioni di tutto il resto in Ubuntu. Abbiamo stretto un contratto con Ryan Lortie, che ovviamente conosce molto bene dconf, e lavorerà con alcune persone di Canonical che hanno utilizzato Qt per lavori di sviluppo personalizzati per i clienti. Siamo certi che il risultato sarà naturale per gli sviluppatori di Qt e una completa espressione della semantica e dello stile di dconf.

Il team di Qt ha lavorato a lungo bene nella più ampia comunità Ubuntu - ogni sei mesi abbiamo un'ottima rappresentazione di Qt su UDS, il team di Kubuntu ha una profonda esperienza e interesse per il packaging e la manutenzione di Qt, c'è un sacco di buoni scambi tecnici tra Qt a monte e vari parti della comunità Ubuntu, incluso Canonical. Ad esempio, le persone di Qt stanno lavorando per integrare uTouch.

Farei una distinzione tra "Qt" e "KDE" nei luoghi ovvi. Un'app di KDE non sa nulla della configurazione del sistema dconf e di conseguenza non può integrarsi facilmente con il desktop Ubuntu. Quindi non proporremo presto Amarok in sostituzione di Banshee! Ma penso che sia del tutto plausibile che dconf, una volta che abbia ottimi collegamenti Qt, sia considerato dalla comunità di KDE. Se vogliono, ci sono persone migliori per condurre quella conversazione, quindi non spingerò ulteriormente l'idea qui. Tuttavia, se un'app KDE dovesse imparare a parlare dconf in aggiunta ai meccanismi standard di KDE, che dovrebbero essere semplici, sarebbe un candidato per l'installazione predefinita di Ubuntu.

La decisione di essere aperti a Qt non è in alcun modo una critica a GNOME. È una celebrazione della diversità e della complessità del software libero. Questi valori di facilità d'uso e integrazione rimangono valori condivisi con GNOME e rappresentano un'ottima base per la collaborazione con sviluppatori e membri del progetto GNOME. Forse GNOME stesso abbraccerà Qt, forse no, ma se lo fa, la nostra volontà di tracciare questa pista sarebbe un contributo alla leadership. È molto più facile creare un ecosistema vibrante se si accetta una certa divergenza dal modo canonico, per così dire Il nostro lavoro sul design è incentrato su GNOME, con impostazioni e preferenze al centro dell'attenzione mentre passiamo a GNOME 3.0 e gtk3.

Naturalmente, questa è un'opportunità perfetta per coloro che si prenderebbero gioco di quella relazione per farlo, ma a mio avviso ciò che conta di più è la solida relazione che abbiamo con le persone che effettivamente scrivono applicazioni sotto il banner GNOME. Vogliamo essere il modo migliore per fare in modo che il duro lavoro di quegli sviluppatori di software libero contenga , nel senso che intendiamo, il modo migliore per assicurarci che faccia davvero la differenza in milioni di vite ogni giorno e il modo migliore per collegarli a i loro utenti.

Alle brave persone di Trolltech, ora Nokia, che hanno reso Qt un ottimo toolkit - grazie. Per gli sviluppatori che desiderano utilizzarlo ed essere parte dell'esperienza Ubuntu - benvenuto.


6
L'ultima volta che ho controllato QT è completamente gratuito, prima non era così, ma ora è tutto gratuito.
Mario Kamenjak,

5
@VassilisGr Qt è già compatibile con GPL da un po 'di tempo (il che lo rende gratuito come le altre cose GPL). Tuttavia, affinché Qt ottenga un contributo in codice dalla comunità, tale contributo deve essere concesso in base a una doppia licenza che consente a qualsiasi azienda che possiede Qt oggi di vendere una licenza non GPL al codice se qualcuno li paga. Che nella definizione Stallman di "Free as in Freedom Software" non è un problema (purché prendiamo in considerazione solo il prendere software dalle persone che non hanno pagato e quindi utilizzano GPL ...) Ubuntu non pagherebbe , e quindi essere GPL, che Linux è comunque ... così bello.
HostileFork

14

GTK + non supporta l'indipendenza di risoluzione, i moderni dispositivi mobili hanno densità di pixel ultra elevate. Se si esegue un'applicazione GTK + su uno schermo mobile, tutti gli elementi dell'interfaccia utente sarebbero così piccoli da risultare inutilizzabili.

Questo è stato un bug aperto su GTK + dal 2008 fino alla sua chiusura nel 2014 con "Abbiamo ora il supporto della scala hi-dpi - non è esattamente la stessa cosa, ma abbastanza vicino da rendere obsoleto questo bug".

Quando GTK + 3 è stato rilasciato, il progetto ha avuto la perfetta opportunità di aggiungere indipendenza dalla risoluzione, perché stavano comunque rompendo la compatibilità. Hanno scelto di non farlo, e ora è davvero troppo tardi per loro.

Sulla tabella di marcia GTK + , l'indipendenza di risoluzione è prevista per la versione successiva alla 4.0, quindi rilasceranno la versione 4.0 e successivamente la versione principale. Se si attengono a quel piano, anche il desktop GNU / Linux dovrà abbandonare GTK + perché sono già disponibili monitor per desktop con DPI elevato e monitor per laptop che stanno per diventare la nuova normalità.


2

La mia opinione sui motivi tecnici / pragmatici: Nokia ha acquistato Trolltech e ha investito molto in QT. È leggero e ha anni di ottimizzazione verso la piattaforma mobile. Indipendentemente dalle tue attuali opinioni su Nokia, l'N900 era anni prima dei suoi tempi ... ed era basato su debian / QT ... ma costoso. Tuttavia, non ho una vera conoscenza delle decisioni.


2
QT è anche sostanzialmente più portatile. Più rapporto qualità-prezzo per uno sviluppatore che crea un'applicazione utilizzando QT, in quanto troveranno supporto nativo su molti, molti più sistemi operativi - Android, Blackberry, Windows Mobile, WebOS tra gli altri. e ovviamente Mac OS e Windows. Il QT beneficia anche di un numero significativamente maggiore di collaboratori.
Mike Stewart,

1

Il blog del CTO di Ubuntu Matt Zimmerman è anche informativo:

È con questo spirito che ho pensato a Qt di recente. Vogliamo rendere veloce, facile e indolore lo sviluppo di applicazioni per Ubuntu e Qt è un'opzione che vale la pena esplorare per gli sviluppatori di applicazioni. Pensando a questo, mi sono reso conto che c'è un po 'di comunanza tra i punti di forza di Qt e alcune delle nuove direzioni in Ubuntu:

  • Qt ha una lunga storia di utilizzo su ARM e x86 , in virtù della sua popolarità sui dispositivi embedded. I prodotti di consumo sono stati realizzati utilizzando Qt su ARM da oltre 10 anni. Da quasi due anni rendiamo i prodotti Ubuntu disponibili per ARM e 10.10 supporta più schede ARM che mai, comprese le schede di riferimento di Freescale, Marvell e TI. Qt sta aggiungendo ottimizzazioni ARMv7 a beneficio degli ultimi chip ARM. Facciamo questo per offrire agli OEM una scelta di hardware, senza sacrificare la scelta del software. Qt conserva questa stessa scelta per gli sviluppatori di applicazioni.
  • Qt è un framework di applicazioni multipiattaforma , con porte ufficiali per Windows, MacOS e altro e porte di comunità sperimentali per Android, iPhone e WebOS. Il forte supporto multipiattaforma era uno dei principi originali di Qt, e lo dimostra la maturità dei porti ufficiali. Con Ubuntu Light installato su computer con Windows e Ubuntu One su Android e iPhone, abbiamo bisogno dell'interoperabilità con altre piattaforme. C'è anche una vasta popolazione di sviluppatori che già sanno come scegliere come target Windows, che possono raggiungere anche gli utenti Ubuntu scegliendo Qt.
  • Qt ha un sistema di input touch abbastanza maturo , che ora supporta supporto multi-touch e gesti (incluso QML), sebbene sia completo solo su Windows 7 e Mac OS X 10.6. Nel frattempo, Canonical ha lavorato con la comunità per sviluppare un framework multi-touch di basso livello per Linux e X11, a vantaggio di Qt e altri toolkit. Questi sforzi alla fine si incontreranno nel mezzo.

Nel complesso, penso che Qt abbia molto da offrire alle persone che vogliono sviluppare applicazioni per Ubuntu (e su), in particolare ora. Alimenta già le applicazioni multipiattaforma popolari come VLC, per non parlare dell'intera distribuzione di Kubuntu. L'ho perso quando è successo l'anno scorso, ma Qt è ora disponibile sotto LGPL 2.1 o GPL 3.0, il che dovrebbe renderlo adatto praticamente a qualsiasi applicazione Ubuntu. Ha un forte supporto commerciale e una grande comunità di sviluppatori. Ovviamente nessuna soluzione singola soddisferà tutte le esigenze degli sviluppatori e Ubuntu supporta più toolkit e framework per questo motivo, ma Qt sembra un ottimo strumento da avere nel nostro toolbox per la strada da percorrere.

Un articolo di Ars Technica che discute questo post sul blog fornisce alcuni spunti:

Qt può portare sviluppatori di terze parti su Linux

Sebbene Gtk + abbia ancora valore e ci sono una serie di ragioni per continuare a usarlo per la creazione di software Linux nativo, Qt è ora la scelta ovvia per gli ISV che prendono di mira più piattaforme. Qt rende eccezionalmente facile conformarsi all'aspetto nativo della piattaforma sottostante o creare un'interfaccia utente totalmente personalizzata che si adatta perfettamente a un dispositivo di destinazione o a un fattore di forma.

Mentre Nokia e Intel portano MeeGo su una vasta gamma di dispositivi, attirerà alcuni dei principali fornitori di software commerciali. Sarebbe relativamente facile per quelle società di software portare le loro applicazioni Qt mobili sul desktop Linux usando lo stesso codice che usano su MeeGo. Qt è specificamente progettato per renderlo facile. Questa sarebbe una grande vittoria per Linux desktop perché porterebbe applicazioni di terze parti che altrimenti non sarebbero disponibili.

Vale la pena notare che alcuni importanti produttori di software mobile stanno già adottando con entusiasmo Qt a causa del supporto di Nokia per il toolkit. La società di streaming video mobile Qik, ad esempio, sta lavorando su una porta sperimentale basata su Qt della sua popolare applicazione con l'obiettivo di portarla su MeeGo.

L'autore dell'articolo è il creatore dell'app IM Gwibber, quindi ha una certa esperienza nello sviluppo di GUI per Linux.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.