28 settembre 2008

Quello che le note dimenticano e non riscrivono - parte x di y

Al solito, la mole delle informazioni che le note di rilascio di GNOME dimenticano di riportare è smisurata. E stavolta Davyd ne è coscente e se ne scusa.

Proviamo a metterci una pezza per gli affezionatissimi utenti italiani di questo un ambiente desktop molto diffuso e multi-piattaforma (sic. cit.).

Dipendenze esterne

Come ogni utente di GNOME sa, anche quelli che lo usano solo per chattare su internet con aMSN, con la dicitura "dipendenze esterne" si intendono quelle librerie di programmazione o framework o cosi del genere non direttamente inclusi in GNOME, ma su cui le applicazioni di e per GNOME possono fare affidamento (complicato, astratto, quasi dechirico, ma è utile e logico, fidatevi).

A quanto pare sia le note di rilascio che la relativa pagina sul Wiki si sono dimenticati di far notare che, oltre ai citati telepathy-glib, libempathy e libempathy-gtk per le comunicazioni tipo instant messaging e in parte audio/video e libcanberra per i temi sonori, nelle dipendenze esterne ufficiali hanno trovato spazio:
  • Clutter - Clutter! Porca miseria, vi siete dimenticati di dire che Clutter è ora ufficiale. Ma vi pare cosa da poco? OK, va bene, non c'è alcuna applicazione che al momento ne faccia uso (si era parlato del gioco tipo Tetris, ma non s'è visto nulla; Emmanuele "io so tutto" Bassi avrebbe dovuto scrivere un paio di plugin per EyeOfGnome e _soprattutto_ qualcosa tipo Coverart per Rhythmbox [che non serve a nulla, ma fa tanto figo] e invece si è dato alla macchia), e questo magari pregiudica un po' il test, però dire che ora è virtualmente possibile scrivere codice che abbia animazioni in 2D-e-mezzo, ben pensata e ben progettata per integrarsi con la sintassi e la logica di Glib e GTK+ magari sarebbe risultato utile visto che è una mancanza dell'attuale stack fornito.
  • PolicyKit - secondo "porca miseria!". Anche in questo caso si tratta di un componente abbastanza utile e abbastanza essenziale per un ambiente desktop moderno. È pur vero che PolicyKit, framework per l'autenticazione e l'autorizzazione a compiere determinate e ben definite azioni che magari richiedono i permessi di amministratore, era stato introdotto in modo ufficioso già con GNOME 2.22, però, anche in questo caso, sprecare due paragrafi per dire che ora è ufficialmente possibile usarlo e che altre applicazioni fanno uso delle sue caratteristiche, non sarebbe stata una cattiva idea.
  • Conduit - dimenticato da tutti anche lui (o lei? forse esso, ma non volevo fare pubblicità a compagnie petrolifere), è stato ufficialmente rifiutato come programma da includere nel desktop - sviluppatori di Conduit, siamo seri: ma voi veramente pensate che quella cosa lì sia veramente chiara e comprensibile a chi abbia la necessità di sincronizzare qualcosa??!!??? - ma altrettanto ufficialmente accettato come dipendenza esterna. Questo significa che le singole applicazioni possono appoggiarsi alle caratteristiche offerte da Conduit per proporre delle funzioni di sincronizzazione. Non mi viene in mente un esempio che sia uno (magari Rhythmbox? Crea la playlist speciale "Lettore mp3" e sincronizzala con i file presenti sul lettore quando viene connesso. Ha senso?), però avere un framework flessibile ed efficace di riferimento per fare qualcosa di particolare può sempre risultare utile, no? Specie se serve, specie per evitare la riscrittura delle stesse logiche.
  • SQLite - sempre più lacunoso, ma o mi ricordo male io oppure anche SQLite è stato ufficialmente tirato dentro le dipendenze esterne. Quanto meno adesso è utilizzato in evolution-data-server per salvare l'indice delle vostre cartelle di posta (no, purtroppo la copia interna di libdb è ancora compilata, Giove solo sa perché).

Piattaforma di sviluppo

Nella diabolica suddivisione logica di GNOME, a questa sezione vanno ascritte quelle librerie di programmazione che sono mantenute, sviluppate e aggiornate direttamente dallo GNOME Project.

Per la verità la caratteristica più interessante è nel fatto che l'elenco di moduli inclusi in questa categoria si va piano piano assottigliando. Al momento infatti 13 moduli su 22 sono ufficialmente dichiarati deprecati (inclusi per retro-compatibilità, ma da non usare in nuovo codice).

La novità - saltata nelle note ufficiali, ovvio, mica sto qui a ripetere le cose nuove in GTK+ e Glib - più evidente, ma anche oscura da leggere come un grimorium, è nell'integrazione di DBus e PolicyKit in GConf (ve l'avevo detto che era oscura, no). Cercando di fare luce, con integrazione di DBus credo s'intenda il fatto che ora GConf usa DBus come sistema interno di scambio di messaggi (invece di una sua implementazione privata) e come sistema per agganciarsi alla sessione utente; l'integrazione con PolicyKit riguarda invece la possibilità di autorizzare (con tutte le fiatures che PolicyKit si porta dietro) sia la modifica delle chiavi predefinite che quelle mandatory (che per l'occasione abbiamo ribattezzato nella traduzione italiana vincolanti, ma è sperimentale). Sarebbe interessante provare se, una volta attivata un'autorizzazione, l'autorizzazione stessa viene ereditata senza problemi anche nelle interfacce grafiche tipo GConf-Editor o Pessulus, ma al momento non posso fare prove con quanto installato sotto /opt/gnome2.

Desktop

I nuovi moduli inclusi ve li hanno già esaltati sulle note di rilascio.

A me resta solo il lavoro sporco di andare a leggere i changelog in cerca di tutte le molte nuove caratteristiche, miglioramenti, correzioni di bug (sic. cit.) che non hanno trovato spazio altrove. In ordine sparso:
  • gdm - come punto di partenza, il login è perfetto, no? Ecco, nessuno in fin dei conti sa che novità ci siano per un semplice motivo: fino a una settimana dal rilascio si era tutti convinti che si dovesse per l'ennesima volta usare la vecchia versione 2.20. Quindi se mi concedete 10 minuti mi vado a informare anche io. [attendere 10 minuti prima di continuare la lettura per onestà intellettuale] Fatto! Allora quello che è certo è che il nuovo GDM è una quasi totale riscrittura, che fa incetta di tutti i framework, dipendenze esterne e librerie ufficiali come ConsoleKit, PolicKit, DBus e GConf per gestire al meglio comunicazioni con il resto del sistema e autorizzazioni, che dovrebbe ora essere in grado di avviare e interagire con demoni abitualmente attivi solo durante la sessione utente come gnome-settings-daemon (per la gestione del tema, ma anche l'uso di mouse, tastiera e le funzioni di accesso universale) e gnome-power-manager (per la gestione dell'alimentazione), che la riscrittura è stata effettuata nella prospettiva di una futura espandibilità in ogni direzione (tema per il greeter, integrazione con le applicazioni utente, e tanto tanto altro), ma che tutto ciò potrebbe essere un pelo incompleto o non testato. Insomma, il nuovo gdm nelle intenzioni ha le carte in regola per essere il Chuck Norris del sistemi grafici di autenticazione ma non è detto che il suo triplo calcio volante sia ugualmente efficace. Non ho avuto voglia di approfondire cosa sia stato implementato e cosa no e perché non si sia decisa la sua inclusione fino alla fine. Pensateci da soli, magari partendo da qui. Oppure chiedete a qualche amico che usa Fedora: loro lo stanno usando già da sei mesi, prima ancora che fosse rilasciato come stabile.
  • gnome-session - altro modulo completamente riscritto, altro modulo completamente ignorato nelle note. Meglio per me che ho di che scrivere, altrimenti mi metto a gridare forte più forte al vento, gridando una dieci volte cento, sono riuscito a farmi del male.... OK mi sono ripreso. Dicevamo totale riscrittura anche di gnome-session, ma stavolta sono un po' più informato. Di questi tempi "totale riscrittura" vuole dire una sola cosa: usare DBus per la comunicazione tra i processi. Via il vecchio codice risalente ai tempi di GNOME 1.x e dentro nuove interessanti caratteristiche come la possibilità di dialogare con i processi che si occupano di sospendere il sistema e di cambiare utente, ma soprattutto la possibilità per le applicazioni di inibire il termine della sessione se necessario, che se state masterizzando o direi che vi può risultare decentemente utile (c'è anche un simpatico dialogo, ma non è possibile catturare in schermata... in realtà io l'ho provato con gedit, mica lo so se brasero inibisce; di certo se l'applicazione non lancia l'opportuno segnale, gnome-session mica può fare l'indovino). Già che erano in ballo, è stato riscritto anche il sistema di avvio automatico delle applicazioni e il ciclo vitale delle applicazioni stesse all'interno della sessione (per esempio se l'applicazione deve essere riavviata qualora termini, oppure se debba essere avviata solo in particolari condizioni), il tutto sfruttando solo delle semplici chiavi GConf (anche se hanno duplicato una chiave e non so quale sia quella giusta...) e i file .desktop installati dalle applicazioni. Tutte le informazioni necessarie per capire come funge la cosa ed eventualmente per aggiornare la vostra applicazione, sono qui. Lettura consigliata a chiunque volesse capire meglio come funziona GNOME 2.24 e obbligata per chiunque stia scrivendo applicazioni per GNOME/GTK+ che in qualche modo sono integrate con la sessione.
  • nautilus - anche se le note di rilascio non lo dicono, la vera novità è nella possibilità di aprire schede nelle finestre di esplorazione... Eh? Davvero? Lo dicono? Ah, ma non quello che intendevo io. Cioè, non l'ho inteso bene neanche io, ma anche qui siamo di fronte alla ennesima riscrittura del codice, anche se questa volta limitatamente alla gestione delle viste (in fondo solo sei mesi fa lo avevamo riscritto portandolo da gnome-vfs a gio, accontentatevi). Così nel codice di Nautilus fanno la loro comparsa le view slot (che riprendendo loopback hanno richiesto solo quattromilacinquecentosette righe di codice aggiunte e millesettecentosettanta righe di codice rimosse), curiosi e astratti elementi concettuali chiari solo al loro creatore Christian Neumair che in pratica rendono possibile il "multiview" alla base delle schede sopra citate. In teoria potrebbero rendere possibile, come dice loopback, le viste "split", ma qui andiamo veramente oltre. Da segnalare, sempre ad opera di Neumair, la riscrittura - ancora! uff, più ubiquo di miglioramenti (sic. cit.), magari stavolta esagero io e si tratta solo di consolidamento - della gestione dei livelli di zoom e di un complicatissimo sistema di limitazione del numero di righe della didascalia delle icone (nella vista a icone): in pratica, ora, in presenza di quei nomi di file lunghi lunghi lunghi lunghi lunghi lunghi che vi sballano tutta l'ordinata disposizione delle icone, Nautilus elide il nome e mostra solo le prime N righe (con N ampissimamente -pure troppo- configurabile via solita oscura e invisibile chiave GConf), almeno finché non ci passate sopra col mouse. Dicono anche di aver risolto il problema delle icone che si sovrappongono sulla scrivania, ma visto che è la quarta volta che lo risolvono e non ho ancora provato dal vivo, io non mi fido. Di certo la funzione "Ripristina" dal cestino funziona. A meraviglia.
  • gnome-panel - niente di sconvolgente, giusto miglioramenti (sic. cit.), specie nell'Orologio (che però era stato riscritto nella precedente versione), nell'uso di GIO, di DBus e nell'adeguamento al nuovo gnome-session. Perché ho scritto questo paragrafo allora? Ma che vi frega, mi sta simpatico gnome-panel, va bene?
  • gnome-settings-daemon - oltre ai soliti miglioramenti e correzioni di bug (sic. cit.), oltre all'adeguamento alle nuove dipendenze e lo smaltimento di quelle deprecate, è da segnalare il plugin housekeeping, che si fa carico di tenere sotto controllo la dimensione della directory $HOME/.thumbnails e di rimuovere le miniature più vecchie quando la dimensione della directory supera una certa soglia. Faico!
  • gvfs - epico ed epocale (ma le allitterazioni sono cosa buona o fanno pena? dite la vostra nei commenti, nel caso le aumento o le riduco) il passaggio dalla versione 0.2 di sei mesi fa all'attuale 1.0. In effetti di miglioramenti e correzioni di bug (sic. cit.) ce ne sono stati parecchi, ma per l'ovvia natura di gestore di file system virtuali non appaiono come fisicamente visibili. Tutti i backend (fuse, hal, ftp, http, trash) dovrebbero ora funzionare in modo corretto o meglio non ci si dovrebbe proprio accorgere che esistono per il semplice motivo che funzionano e non creano problemi, in particolare il backend gphoto (che non è vero che non serve a niente perché tutte le macchine fotografiche digitali usano il mass storage, serve anche per i lettori musicali basati su MTP, che ora¹ vi compariranno nella finestra Computer e si potrà con semplicità copiare e spostare file per mezzo del file manager). Inoltre hanno deciso di usare potenze di 10 invece che di 2 per dimensioni di file/cartelle/volumi (oppure solo per i volumi?) in modo da non trovarsi con una chiavetta USB che sulla scatola riporta 64MB e sul computer vi appare come da 61,7MB. Si potrebbe obiettare che a sbagliare è la scatola, ma d'altro canto... è il mercato, baby!
Per ora la pianto perché devo fare cose, vedere gente, rileggere log, cavalcare orche assassine (mai nome fu più azzeccato, la traduzione di orca a volta è uno stillicidio) e perché altrimenti mi si viene a dire che voglio monopolizzare lo spazio sui planet che mi ospitano (???!!!?? Ok l'ho scritto ma non lo penso. _Voglio_ monopolizzare quegli spazi, fare la superstart e finire su pollycoke, ovvio) ma magari in un futuro non troppo lontano, prima di 6 mesi per lo meno, trovo il tempo e la voglia per un secondo post con le maggiori novità presenti nelle altre applicazioni incluse nello GNOME Desktop.

PS - dai, seriamente, ma non preferite quando scrivo solo due righe ermetiche e allusive che non ci capisce niente nessuno? A volte nemmeno io? Tipo, che so...
Certo, l'Uomo Ragno. Da grandi poteri derivano grandi responsabilità. Che magari esagero a farlo diventare rinuncia e abnegazione, magari era più eccitante Diabolik, ma comunque è sempre meglio che prendere ispirazione da Tex Willer, no?
[1] in realtà era così anche sei mesi fa, ma c'era qualche problema, per cui distribuzioni come Ubuntu avevano disattivato il backend.

7 commenti:

Daniele N ha detto...

Ciao, ottimo Changelog alternativo! :P

Dici che tutte le applicazione in cui è stato aggiunto il supporto a D-Bus si siano appesantite? Perché già gnome-panel mi occupa più di 18 Mb in memoria, poi aggiungiamo altra roba... Io ho scritto una piccola applicazione in GTK e pare che proprio quest'ultime siano la causa di pesantezza! Mi dispiace perché in questo modo pian piano si costringe utenti con vecchi pc a comprarli nuovi oppure a cambiare Desktop Manager. Tu che dici?

Ah, ti inviai tempo fa una mail riguardo la traduzione.

dvd ha detto...

Si scrive "cosciente".
Le allitterazioni sono cosa buona.

Per il resto, ottimo lavoro!

Sajmon75 ha detto...

Il miglior articolo degli ultimi 6 mesi almeno. Ottimo lavoro, grazie a te ho conosciuto dettagli che, per pigrizia d'accordo, non avrei recuperato dai siti ufficiali.

:))

Fabio ha detto...

grazie del changelog, avevo voglia di leggere le correzioni piu a basso livello ma non per questo meno importanti

Filippo ha detto...

No no, la scatola usa i prefissi del Sistema Internazionale.. siamo noi abituati male!

Serverless ha detto...

Bel post, è sempre interessante andare oltre la superficie :)

massimiliano ha detto...

Ciao, ma hanno fatto anche miglioramenti al composite manager di metacity?