Pensieri e parole su HCI, home computing, tecnologie desktop e sul Progetto Lobotomy

martedì 28 agosto 2007

Lobotomy@HackMeeting

0 commenti
Dietro costrizione da parte dell'amico HS1 (diciamo che ci scambiamo reciprocamente un favore... ;-) ) ho avanzato al gruppo che gestisce ed organizza l'HackMeeting, l'annuale raduno di hackers e smanettoni che quest'anno si terra' a Pisa il 28-29-30 settembre, una proposta per tenere un talk su Lobotomy. Il post apparso nella mailing list del coordinamento (girato a mio nome dall'amico acaro DW) ha riscosso un modesto ma pur sempre confortante apprezzamento, indi credo proprio che mi tocchera' inventarmi qualcosa da presentare al pubblico pisano alla fine del prossimo mese...
Per facilitarmi le cose ho assunto di tenere un seminario sugli strumenti di indicizzazione orientati al desktop presenti e futuri (dal classico Beagle di Gnome al prossimo Strigi di KDE) e di incastrare nel discorso il mio progetto, che vagamente e' assimilabile allo stesso concetto (sebbene l'approccio sia radicalmente diverso): certamente non posso permettermi di confabulare per una intera ora su qualcosa che ho ricominciato da poco a scrivere da principio e che anzi e' ancora in fase di (perenne) progettazione, per cui non esiste nemmanco uno screenshot abbozzato, sarebbe forse un tantino presuntuoso pretendere di interessare un gruppo di persone con qualcosa che non esiste se non nella mia testa, pertanto vedo di contestualizzare l'argomento su tematiche di piu' ampio respiro e che gia' adesso sono alla portata dell'utenza (Tracker, uno dei tanti indexers, verra' ad esempio immesso nella prossima release di Ubuntu e sara' da subito fruibile a tutti).
Ancora non so in quale dei tre giorni mi tocchera' presenziare (spero non proprio venerdi, forse sabato), ma vedro' di tenere aggiornato questo blog man mano che la cosa verra' definita.
Ci vediamo a Pisa ;-)

domenica 26 agosto 2007

Split to Integrate

0 commenti
Pubblicato un nuovo documento "informale" sul sito di Lobotomy, dove viene descritta (molto sommariamente...) l'architettura che si intende implementare nelle prossime fasi dello sviluppo (soprattutto di Synapse).
Buona parte del concetto nasce dall'intuizione espressa nel precedente post su questo blog, arricchita pero' da una visione di insieme piu' approfondita e ponderata.
So che avevo promesso un documento sull'approccio che verra' adottato per la costruzione della componente grafica vera e propria di Lobotomy, ma... Ci son da fare i mockups, e sono pigro :-P . Per non parlare del fatto che ho iniziato solo ieri a riscrivere from scatch Kiazma, con l'intento di ricostruire lo stack di widgets (magari non per intero, ma buona parte) gia' presente in GTK+ ma usando Clutter (e non GDK) come fondamento: sara' un lavoraccio, ma questa opera colossale mi permettera' sia di avere totale controllo dell'intero set di elementi grafici che verranno poi usati in Synapse (che a sua volta andra' riscritto) e nelle applicazioni XSLT che rappresenteranno il pool applicativo del desktop environment intero che di sfruttare i gradevolissimi effetti messi a disposizione dal canvas sviluppato da OpenedHand.
Insomma: le idee ci sono (e pure tante! Troppe!), il tempo e' sempre quel che e'. Prima di vedere anche solo una minima parte del sistema descritto nel documento linkato in apertura ne passera' di acqua sotto i ponti...

venerdì 24 agosto 2007

Tutto e' un metadato!

0 commenti
Se il motto di Hyppocampus e' "everything is a query" (ovvia parafrasi del classico "everything is a file"), il motto di Synapse (la componente grafica di Lobotomy) potrebbe diventare a breve "everything is a metadata".
Nell'ultimo periodo, profittando delle ferie (che oramai stanno per volgere al termine... Sigh...), ho avuto modo di pensare a lungo e di far collimare vecchi pensieri con nuove intuizioni, giungendo a conclusioni forse azzardate ma interessanti.
Oggi, l'applicazione: un pezzo di software dedicato ad un certo tipo di file, provvedendo alla visualizzazione e agli strumenti per la manipolazione. Qualche volta agisce anche quando non direttamente usato dall'utente (il client di posta scarica la posta, il player audio riproduce gli mp3 nella playlist...). E' fine a se' stessa, occupa memoria, deve essere debuggata, ha un aspetto ed un approccio diverso da tutte le altre applicazioni.
Come si puo' migliorare?
La prospettiva che meglio si adatta alla mia visione corrente e' quella del paradigma MVC, applicato a tutto il sistema operativo: il "model" viene interpretato da Hyppocampus, che indicizza e conserva in un formato quasi universale (quello dell'elemento arricchito da metadati) qualsiasi cosa; il "controller" e' un set di librerie (peraltro in buona misura gia' esistenti) che astraggono funzionalita' di vario genere (GStreamer, Phonon, WebKit...), e di demoni di sistema che provvedono alle varie attivita' di aggiornamento (scaricare la posta ed i feed RSS ad intervalli regolari e simili); infine, il "view" e'... il pezzo forte di questo post ;-)
Qualsiasi elemento indicizzato in Hyppocampus reca con se' i dati ad esso relativi. Questi dati devono essere presentati all'utente. Cosa c'e' di meglio che un CSS? Non mi riferisco alle ultime features previste/proposte/promesse per QT4, che permettono al piu' di personalizzare esteticamente una applicazione che comunque agisce sempre nello stesso modo, ma a definizioni (espresse in XML, XHTML, o qualcosa di molto simile) che permettono di formattare i contenuti sul video.
Esempio: il client di posta. Assunto che le operazioni di fetch e copia delle mail nel filesystem avvengano ad opera di un demone che, come gia' detto, rientra nella categoria "controller" del sistema, non mi resta che mostrare queste mail all'utente. Tutta l'applicazione e' rinchiusa in un template che recita: "recupera da Hyppocampus tutti gli elementi di tipo MAIL, ordinali cosi', mostra qui il metadato SOGGETTO, qua AUTORE e li' DATADICREAZIONE, quelli con il metadato LETTO con valore 1 falli traslucidi, quando uno viene cliccato mostra qua il valore del metadato CONTENUTO, e metti in cima questi due pulsanti per inviare un nuovo messaggio e rispondere a quello selezionato". Le icone da usare, i colori e gli effetti grafici addizionali diventano compito di Synapse, che interpreta ed applica il foglio di stile e conserva in se' tutte le preferenze dell'utente.
Gli stessi principi potrebbero essere adottati per una serie di programmi con cui tutti abbiamo a che fare: il player multimediale, l'aggregatore RSS, l'editor di testi... Synapse funge sempre e comunque da filemanager, semplicemente a seconda delle occasioni si trova a formattare i contenuti delle query eseguite in un modo piuttosto che in un altro.
Certo non e' la panacena di tutti i mali, ma, a parer mio, potrebbe essere un ottimo modo per ridurre notevolmente la mole di software piu' o meno utile che si trova in ogni sistema desktop. Senza contare che, basandosi completamente su una singola applicazione "mutante" ed avendo il tutto un discreto coefficiente di performance, ben si adatta all'ambiente embedded/mobile, in cui certo non ci si puo' permettere di avviare programmi su programmi.
Ancora a lungo devo meditare su quanto qui scritto, e paradossalmente mi trovo per l'ennesima volta a litigare con il design delle fondamenta di Lobotomy stesso: da due giorni mi arrovello per includere Clutter all'interno di Synapse sottoforma di widget GTK, e ora mi viene in mente che potrei riscrivere tutto Kiazma a mo' di widgets basati direttamente sullo stesso Clutter. Un lavoraccio che mi obbligherebbe a ricreare buona parte dello stack di funzionalita' gia' esistenti in GTK, ma che porterebbe pure ad una immensa flessibilita' e molto orientato al futuro del progetto...

venerdì 17 agosto 2007

Hyppocampus 0.3rc1

0 commenti
L'ho detto (pochi minuti fa', oltretutto) e l'ho fatto: la release 0.3rc1 di Hyppocampus e' ora disponibile dalla solita pagina su SourceForge!
Alla fine ho deciso di numerare questo pacchetto come "release candidate 1" perche' alcune cose devono ancora essere completate (e magari anche testate in modo decente...), e soprattutto per permettere agli altri componenti di Lobotomy di passare nello stesso momento alla nuova serie e tenere allineate le versioni.
L'unico grosso problema di questa release e' la modalita' di compilazione: avendo Hyppocampus come dipendenza il SubConsciousDaemon, ma non essendo il SubConsciousDaemon aggiornato alla stessa versione, la costruzione di questo particolare componente viene ostacolata dagli headers che in LibHyppo non tornano. Lo so, e' un delirio, ma la build di Lobotomy e' sempre stata un delirio: vedro' di mettere a posto al piu' presto (magari con la release 0.3 finale?) le cose, magari fornendo uno scriptone unico che esegua in maniera automatizzata il soddisfacimento delle dipendenze cicliche scaricando i pacchetti adeguati ed installandoli nell'ordine corretto.
Insomma: scaricate, e leggete la documentazione che ho scritto con tanto amore (e nel mio solito inglese funambolico...) in merito ai criteri di funzionamento del sistema.

UPGRADE: il pacchetto su SF e' stato or ora aggiornato per due motivi.
Innanzitutto e' ora possibile compilare SCD 0.2.3 con LibHyppo 0.3rc1 (ho dovuto spostare qualcosina, ma solo in via temporanea!), e dunque almeno uno dei tanti problemi della procedura di build e' stato sistemato.
E poi, cosa forse anche piu' importante, ho corretto il file di licenza allegato al pacchetto: negli headers di tutti i files avevo riportato che il software era sotto GPLv3, mentre il COPYING allegato risultava ancora fermo alla v2 :-P . Ebbene si: Hyppocampus (e tutti gli altri componenti in Lobotomy) passa alla distribuzione GPLv3; questo progetto e' sempre stato (e sempre sara') fondato su software libero, qualche tutela in piu' da parte della nuova licenza non puo' che essere gradito.

Click!

0 commenti
Nel delirio indotto dall'eccesso di lavoro (son tre giorni tre scrivo la documentazione e ritocco Hyppocampus 0.3 in vista dell'imminente release, che spero di far avvenire oggi, e che intanto leggo tutto quel che mi capita sull'Internet... L'estate mi fa male...) ho ceduto al richiamo del Web2.0 ed ho giocherellato un poco su Flickr, la nota community di photo sharing (ma che lo dico a fare? Posso facilmente immaginare che tutti sappiano cosa sia Flickr...).
Ho registrato un account a nome del progetto Lobotomy ed ho caricato la mia prima immagine (scattata col cellulare... I miei mezzi multimediali sono assai limitati...), assai rappresentativa del mio stato attuale.
Mi garba l'idea di utilizzare questa nota piattaforma per l'implicita promozione di Lobotomy: il solo fatto che da quella community passino milioni di utenti e' gia' una garanzia di visibilita'; per questo da oggi tutte le foto (e, in maggior misura, gli shots) riguardanti Lobotomy saranno accessibili da questa pagina, ad uso e consumo sia del mio pubblico che degli occasionali passanti (ovviamente i thumbails saranno sempre visibili anche dalle pagine incluse nel sito principale del progetto).
Allo stesso modo in cui un di' mi decidero' a condividere col mondo i video che vorrei realizzare con i componenti di Lobotomy in azione sull'account or ora registrato su YouTube.
Evviva il Web2.0 :-P

mercoledì 15 agosto 2007

Come eravamo, come siamo

0 commenti
La notizia di oggi, pigro ferragosto dal clima primaverile (alla faccia del riscaldamento globale!), e' che Gnome, quello che probabilmente e' il desktop environment piu' amato sul panorama freesoftware, compie 10 anni. E la pagina piu' linkata e', ovviamente, quella che riporta il primissimo annuncio ufficiale della nascita del progetto.
A seguire, un'orgia di felicitazioni e complimenti (cui mi aggiungo pure io, ci mancherebbe!) a questa longeva opera, che nel corso degli anni e' cresciuta a dismisura (basta dare uno sguardo alla lista di documentazione prevista per la piattaforma) ed ha segnato il passo dell'evoluzione del desktop computing su Linux. Ad oggi, anche grazie alla virale diffusione di Ubuntu, questo e' l'ambiente grafico piu' utilizzato dagli utenti pinguineschi (e non solo).

Ma...
Dando uno sguardo a certi screenshots pubblicati insieme a qualche commento particolarmente zelante in giro per l'Internet, la mia perplessita' cresce: stando alle immagini, Gnome e' passato da questo a questo.
Cosa e' cambiato in dieci anni?
Niente.

Per la carita': incredibili progressi nella presentazione grafica, mucchi di funzionalita', applicazioni integrate le une alle altre (piu' o meno...)...
Ma, ai fatti, nell'arco di due lustri (un'era geologica, in campo informatico) la minestra e' sempre la stessa: la barra con il taskmanager, i menu dei programmi, le finestre, le icone. Sempre loro, sempre nello stesso posto, magari con qualche colore in piu' ed una maggiore risoluzione.
Il numero di informazioni che ogni giorno un qualsiasi utente domestico si trova a manipolare e' esploso, la potenza computazionale messa a disposizione e' incrementata seguendo un'andamento esponenziale, l'insieme di possibilita' e' una composizione ortogonale tra questi due fattori.
Eppure la barra con il taskmanager, i menu dei programmi, le finestre e le icone sono sempre loro, sempre nello stesso posto.

Non a caso e' nato il Progetto Lobotomy: per sperimentare qualcosa di nuovo. Qualcosa studiato (almeno nelle intenzioni) da zero, non l'ennesima implementazione dello stesso sistema ma orientato ad una nuova prospettiva del desktop.
Quale sia questa prospettiva, sinceramente non lo so neppure io: come ho sempre sostenuto, Lobotomy non ha la pretesa di diventare il desktop environment del futuro; molto piu' semplicemente (ed umilmente) qui si sperimenta, spesso pure a casaccio e senza particolari obiettivi (i quali, si sa, diventano obsoleti nel giro di sei mesi), idee del qui presente maintainer o carpite su un blog o da qualche altra parte.
Giusto ieri ho iniziato a stendere un documentuccio (preannunciato molto vagamente nello scorso post) su quello che ci si aspetta dal prossimo BrainTop, sul quale ricomincero' a lavorare (dopo piu' di un anno!) dopo aver terminato l'ennesima revisione della gerarchia dei widgets previsti in Kiazma: li' si troveranno in buona sostanza una gran parte dei principi sui quali si intende fondare lo sviluppo di Lobotomy (almeno, della sua componente grafica) nei prossimi mesi.
Dopodiche'... Chi vivra', vedra'...

martedì 14 agosto 2007

Copione!

0 commenti
Amo l'idea della condivisione delle idee :-) .
Nel giro di un paio di giorni, attraverso links e blogs (e per di piu' in maniera praticamente casuale, senza premeditare ricerche specifiche), ho trovato belli che implementati un paio di frammenti di codice cui andavo meditando da tempo e che avevo appena aggiunto nella lista di TODO per Kiazma: per la gestione delle liste con l'attrito, simpatica feature piu' volte menzionata su questo blog e trovata implementata nel codice SVN di OpenMoko, e per la costruzione di insiemi di icone sensibili al passaggio del mouse (come nella dockbar di MacOSX, per capirci) abbozzata dall'instancabile MacSlow nel suo curioso blog (che consiglio a tutti: spesso ci si trovano hacks affascinanti applicati alle piu' avanzate tecnologie grafiche disponibili!) e che intendo utilizzare in un modo che al momento non ho avuto modo di descrivere al mio pubblico ma per cui al piu' presto vedro' di stendere una paginetta informale.
Ammetto di aver sempre preso dall'Internet frammenti di codice sparso, GPL o public domain, un po' per pigrizia ( ;-) ) un po' per effettiva ignoranza nei confronti di certe possibilita' offerte da molte librerie che pure uso spesso (GTK+ in primis), ma trovo che ultimamente (gli ultimi mesi) il proliferare di tali spesso interessanti e comunque innegabilmente utili perle sia cresciuto in buona misura: gli stimoli creativi (e competitivi) offerti dalle interfacce di iPhone, Windows Vista, MacOSX et similia inducono alcuni tra i piu' capaci hackers in circolazione (tanto per menzionarne uno tra quelli che tengono alta la bandiera italiana nel mondo: Emmanuele Bassi) a stupirci di quando in quando sia con implementazioni a codice aperto delle stesse funzionalita' che si vedono nei prodotti commerciali che con ottimi esercizi di stile che con interi progetti orientati al visibilio sia degli utenti che dei developers (cfr. Clutter).
Se nei prossimi tempi vedrete procedere il Progetto Lobotomy in modo piu' spedito (lo spero fortemente!) sara' anche per la mia (buona o cattiva che sia, dipende dai punti di vista) tendenza al copia&incolla.

sabato 11 agosto 2007

Quelli che... 0.3!

0 commenti
Piccolo aggiornamento sullo stato dei lavori in corso in casa Lobotomy: il ritardo accumulato in attesa per la prossima release e' consistente, ma mi giustifico dicendo che sto riscrivendo pressoche' daccapo Hyppocampus.
Il cambiamento piu' importante si nota nel fatto che il sistema di indicizzazione interno e sviluppato from scatch e' stato deposto in favore dell'utilizzo di DBI per l'utilizzo a mo' di backend di tutti gli RDBMS di cui esiste un driver: attualmente sto lavorando solo su PostgreSQL, forse faro' in tempo a testare anche su MySQL, mentre rimando al piu' prossimo futuro possibile il supporto a SQLite (che richiede qualche attenzione in piu', ma e' indispensabile qualora si volesse portare Lobotomy su piattaforma embedded).
So perfettamente che gia' poco tempo fa' avevo insinuato che non avrei usato alcun database esistente a causa dei grossi ostacoli che si ponevano nell'utilizzo di un RDBMS classico nella prospettiva di Hyppocampus, ma nuove strade si sono aperte da quando ho introdotto l'utilizzo di un parser scritto in bison/flex : fondamentalmente, adesso le query sono convertite dal modello logico che implementa il filesystem (una tabella con 2^64 colonne ed una riga per ogni elemento che vi si trova) a quello implementato nel DB vero (una tabella con 3 sole colonne, ed un insieme di righe per ogni file), in modo da preservare la facilita' di interrogazione da un lato e la compattezza dello storage dall'altro. Ricca documentazione accompagnera' questo complesso (almeno all'apparenza, ma non nella realta') meccanismo di trasfusione relazionale ;-) .
Le modifiche (sia esplicite, che introdotte implicitamente dalle nuove possibilita' offerte dalla disponibilita' di una base dati vera e propria su cui poggiarsi) sono tali che ho deciso di saltare direttamente alla serie 0.3 dello sviluppo, almeno per quanto riguarda Hyppocampus: con sommo dispiacere dei miei fans ( ;-P ) la nuova release del filesystem piu' relazionale sulla piazza non sara' accompagnata dalle relative versioni di Synapse e di SCD, ed anzi (questo vale in particolare per Synapse) a causa di piccoli ritocchi nelle modalita' di interrogazione SQL verra' a mancare pure la retrocompatibilita' con i prodotti esistenti. Vorrei cogliere l'occasione del salto di serie per fare grosse modifiche anche sugli altri progetti coinvolti in Lobotomy, ma cio' richiedera' (ulteriore) tempo e non mi sento di prometter nulla fino a settembre (sebbene in questo momento e per le prossime due settimane saro' in ferie dal lavoro, e potro' dedicare quasi ogni giorno al coding estremo in assetto estivo ;-) ).

venerdì 3 agosto 2007

CoreObjects

0 commenti
Su OSNews, uno dei miei portali di informazione preferiti, trovo un articolo concernente il Progetto Etoile, di cui gia' avevo letto qualcosa ma che solo ora va a rientrare nella mia personale cerchia dei "progetti da seguire da vicino".
Tale progetto ha scopi comuni (e pure scopi divergenti) rispetto a Lobotomy: l'intento dichiarato e' quello di costruire un nuovo paradigma di desktop, sebbene ad oggi da codesta opera ho visto solo graziose idee comunque sviluppate in una prospettiva WIMP.
Nell'articolo si parla di una (almeno, sulla carta) interessante tecnologia che permetterebbe di facilitare l'accesso ai files: nulla di nuovo sotto al sole, semplicemente il proposito e' quello di svincolare le applicazioni dalla gestione diretta degli elementi sul filesystem (e, piu' generalmente, dalla gestione degli errori relativi ai failures piu' hardware che software) aggiungendo un (ennesimo) strato di astrazione, ma taluni passaggi del brano hanno stuzzicato la mia fantasia.
Ad esempio, al fondo si accenna alla possibilita' di astrarre non solo i documenti ma le loro singole proprieta', in modo da salvare permanentemente (e/o trasferire attraverso una rete) solo quelle ed avere implicitamente la trattazione del versioning del materiale (chiaramente, la prima cosa che mi viene in mente pensando a "proprieta'" e' "metadato" ;-) ), e si fa riferimento pure ad una tecnologia Apple che astrae i tipi di informazione (sembra fatto apposta per questo :-P ).
Spero che i ragazzi di Etoile ottengano qualche buon risultato dalla loro analisi, e non e' detto che un giorno (come gia' mi e' passato per la testa) non li contatti per lavorare insieme su quello che in fin dei conti e' un obiettivo comune.
Per intanto (giusto per tranquillizzare coloro che frementi attendono la prossima release del sistema Lobotomy, in mostruoso ritardo) io sto lavorando su una pressoche' totale riscrittura di Hyppocampus... Maggiori dettagli a seguire ;-)

giovedì 2 agosto 2007

Clutter

0 commenti
Per quanto continui a sostenere i pensieri espressi nello scorso post su questo blog, mi rimangio il proposito di adottare GTK (quantomeno nella versione "liscia") per l'implementazione delle prossime features "avanzate" nei vari componenti grafici in Lobotomy: per quanto giusto oggi sia riuscito ad ottenere un primo prototipo di lista "scrollante" a la iPhone, esistono metodi ben piu' raffinati ed efficienti per ottenere certi risultati.
Poco fa' ho scaricato e compilato il codice dall'SVN del progetto Clutter, e ne sono rimasto affascinato: nei files di esempio, con poche righe di codice C (alla faccia di chi propugna Python o altre amenita': non e' il linguaggio che conta, ma la competenza ed il buon senso del programmatore!) si ottengono risultati piu' che ragguardevoli (ed in alcuni casi a dir poco strepitosi), con tanto di animazioni, rotazioni di immagini, trasparenze, prospettive e quant'altro, il tutto accellerato in OpenGL ed integrabile con GTK.
Guardando poi questo video (reperito sul blog del progetto) la prima cosa che ho pensato e' stata "Enter the Matrix" ;-P
Devo fortemente rivedere i miei propositi per il futuro di Lobotomy: assunto che ancora molto ho da lavorare sulla parte "non visibile" (la stesura del nuovo parser di Hyppocampus procede, a rilento ma procede) del sistema, alla luce delle tecnologie che oggi vengono proposte (e delle possibilita' offerte, tendenti ad infinito) non si tratta solo di includere qualche simpatico effetto grafico alle applicazioni, ma di stravolgere il modo stesso in cui l'informazione viene sfogliata, contestualizzata e visualizzata.
Nei prossimi giorni avro' molto su cui meditare...