Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/inc/_core/__core.init.php on line 814

Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/inc/sessions/_sessions.init.php on line 268

Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/inc/_main.inc.php on line 135

Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/inc/_main.inc.php on line 139

Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/inc/_main.inc.php on line 147

Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/inc/_main.inc.php on line 154

Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/inc/_main.inc.php on line 201

Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/inc/_main.inc.php on line 207

Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/inc/_main.inc.php on line 235

Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/inc/_main.inc.php on line 250

Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/inc/_main.inc.php on line 261

Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/inc/_main.inc.php on line 273

Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/inc/files/model/_file.funcs.php on line 583

Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/inc/_connect_db.inc.php on line 29

Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/inc/_core/_param.funcs.php on line 1739

Warning: Cannot modify header information - headers already sent by (output started at /home/mhd-01/www.kojia.net/htdocs/uranio/inc/_core/__core.init.php:814) in /home/mhd-01/www.kojia.net/htdocs/uranio/inc/sessions/model/_session.class.php on line 222

Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/inc/items/model/_item.funcs.php on line 114

Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/inc/_core/model/dataobjects/_dataobject.class.php on line 417

Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/inc/_core/model/dataobjects/_dataobject.class.php on line 433

Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/inc/_core/model/dataobjects/_dataobject.class.php on line 442

Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/inc/_blog_main.inc.php on line 507

Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/inc/items/model/_item.class.php on line 1877

Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/inc/items/model/_item.class.php on line 3546

Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/inc/items/model/_itemlist.class.php on line 538

Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/inc/items/model/_itemlistlight.class.php on line 118

Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/inc/items/model/_itemlistlight.class.php on line 178

Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/inc/items/model/_itemlistlight.class.php on line 833

Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/inc/generic/model/_genericelement.class.php on line 109

Warning: Cannot modify header information - headers already sent by (output started at /home/mhd-01/www.kojia.net/htdocs/uranio/inc/_core/__core.init.php:814) in /home/mhd-01/www.kojia.net/htdocs/uranio/inc/_core/_template.funcs.php on line 59

Deprecated: Assigning the return value of new by reference is deprecated in /home/mhd-01/www.kojia.net/htdocs/uranio/plugins/code_highlight_plugin/_code_highlight.plugin.php on line 344
Confronto PySide - PyQt

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

Comment from: IGN [Member] Email
Surclassare una piattaforma consolidata e' una cosa da prendere con le pinze. Ci devono fare i peggio giri sopra e comunque lasciare qualche pezzo del vecchio. Un merge di vecchio e nuovo per un nuovo prodotto?

L'importante e' che alla fine di tutto riusciremo a programmare R4 :vezzo:.
31.08.09 @ 11:50
Comment from: Duplo [Member] Email
Per problemi di licenze, dovuti all'ovvio motivo che Phil Thompson sopravvive con le licenze commerciali di PyQt, non possono utilizzare SIP per PySide.

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.
01.09.09 @ 22:42

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.