Confronto PySide - PyQt
Recentemente è stato annunciata la prima release di PySide un set di bindings Python - Qt sviluppato da OpenBossa e sponsorizzato direttamente da Nokia.
Di seguito spiego i numerosi aspetti positivi di questi nuovi bindings, e i motivi per cui al momento non parteciperò attivamente al loro sviluppo e non li utilizzerò nelle mie applicazioni.
Partiamo con ordine. Nokia ha rilasciato il suo N900 il primo internet table Maemo based che funziona come telefono. Maemo è una piattaforma basata su Debian, che oramai ha raggiunto un discreto livello di maturità. Recentemente, successivamente all'acquisizione di Qt da parte di Nokia, è stata annunciata la prossima migrazione a Qt come toolkit di sviluppo, e quindi l'abbandono della piattaforma gnome-gtk che prima caratterizzava questi tablet. Per incentivare gli sviluppatori a produrre software per questo ottimo oggetto Nokia ha deciso di rendere disponibili anche i binding python-qt. Dopo un primo tentativo di accordo con Riverbank Computing (proprietaria del copyright di sip e PyQt) non andato a buon fine, ha deciso di rilasciare dei suoi bindings, sotto licenza LGPL. Ecco quindi come PySide ha avuto origine.
Follow up:
Ecco elencati di seguito i vantaggi che porterebbe l'utilizzo di PySide:
1. La licenza. La LGPL permette di scrivere applicazioni proprietarie e open source, di fatto non limitando le possibilità degli sviluppatori. A mio parere questo è il principale motivo per cui Nokia a spinto verso un nuovo set di bindings.
2. La quasi totale compatibilità a livello di API con PyQt, e quindi una semplice migrazione di progetti esistenti.
3. Nella roadmap è prevista una restrutturazione della API per renderla più pythonica. Tutti gli sviluppatori che hanno utilizzato PyQt e si sono ritrovati le limitazioni del c++ all'interno di python sanno cosa intendo.
4. Lo sviluppo dei binding procede di pari passo con lo sviluppo di Qt. Questo significa tempi di attesa praticamente azzerati, tra una release di Qt e quella dei bindings compatibili. Al momento infatti il team di PySide sta lavorando per integrare trasparentemente le ancora ben lungi da essere rilasciate Qt 4.6
5. Nella roadmap è previsto, anche se non a priorità alta, il supporto a python 3.
6. Il fatto che Nokia ci metta nome e soldi è in qualche modo una garanzia per il buon sviluppo e mantenimento, anche a lungo termine. Oltre che una garanzia di qualità.
Passiamo adesso ai motivi per cui al momento non parteciperò allo sviluppo e per cui non utilizzerò, sempre al momento, tali bindings:
1. Linux è l'unica piattaforma supportata da Nokia, lo sviluppo per le altre piattaforme è lasciato alla community. Questo fa trasparire, a mio parere, le intenzioni di Nokia, che aveva interesse a rendere disponibile i bindings LGPL per Maemo, e non tanto per tutti.
2. I bindings sono basati su Boost.Python. E sono appena nati. Infatti manca ancora il supporto ad alcune delle funzionalità di Qt che invece PyQt supporta. Inoltre il runtime PySide ha un footprint DECISAMENTE maggiore a quello di PyQt. D'altra parte, il team di PySide sta sperimentando con altri backend, e sta lavorando pesantemente all'ottimizzazione dell'attuale generatore di bindings.
A dire il vero sono abbastanza convinto che in un tempo ragionevole potranno surclassare PyQt, ma non adesso.
Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/skins/_item_feedback.inc.php on line 156
Trackback address for this post
Trackback URL (right click and copy shortcut/link location)
2 comments
L'importante e' che alla fine di tutto riusciremo a programmare R4
. SIP è un generatore di bindings oramai molto maturo, e costruito attorno a Qt (anche se può wrappare qualsiasi libreria c/c++).
Io stesso ho contribuito delle (piccole, quasi insignificanti) patch. Il grosso del lavoro sta nel creare una valida e funzionante alternativa a SIP.
Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/skins/_item_comment_form.inc.php on line 71
Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/skins/_item_comment_form.inc.php on line 115
Comments are not allowed from anonymous visitors.