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

venerdì 4 maggio 2007

Plugging Plugins

L'ultima sballata idea che giusto quest'oggi e' affiorata dalla mia mente rientra perfettamente entro gli scopi della serie 0.2.X di Lobotomy: l'espandibilita' dei componenti del progetto mediante plugins.
Cos'e' un plugin? Esso e' un file (un modulo, in C e' un oggetto linkabile dinamicamente esattamente come una libreria) che va piazzato nella cartella predefinita per l'applicazione che si vuole estendere; generalmente, all'avvio l'applicazione cerca in suddetta cartella, si linka ai moduli, e parte.
Perche' non permettere il link "a caldo" dei componenti esterni?
Due sono le soluzioni che al momento mi sovvengono (probabilmente ne esistono altre): inotify o DBus. La prima si concretizza con un file descriptor aperto sulla cartella dedicata ad ospitare appunto i plugins, il quale, grazie all'aiuto del kernel e una callback registrata sul mainloop di glib, permette di rilevare automaticamente la creazione di un nuovo file e la conseguente procedura di verifica/caricamento; la seconda con la presenza di un daemon presso cui le applicazioni si registrano e che, dato in ingresso un file, chiede a tutte (attraverso DBus) se il plugin avanzato e' di loro proprieta'.
Quest'ultima opzione e' quella che richiede maggiori risorse (e' per l'appunto un processo in esecuzione, un componente attivo del sistema) ma che garantisce la maggiore trasparenza per l'utente, il quale ha un'unica interfaccia per il caricamento di nuovi plugins e non ha da sapere dove piazzare il file sul filesystem. Teoricamente, sarebbe possibile aggiungere un nuovo plugin trascinando il link al file dal browser ad una icona nella traybar.
Prossimamente meditero' ancora sulle potenzialita' dell'idea, che spero di implementare al piu' presto onde permettere una facile e veloce estendibilita' dei vari componenti di Lobotomy.

Nessun commento: