Stallman a Genova
Esattamente una settimana fa Richard Stallman è intervenuto alla Biblioteca Berio con un discorso su "Copyright vs Community". Ho registrato e trascritto il discorso in inglese, che potete leggere integralmente qui.
Per semplificare la lettura qui sotto c’è un "indice" ai principali argomenti trattati:
- Origini del movimento free software
- Le 4 libertà fondamentali del software libero
- Si possono applicare le 4 libertà all’hardware?
- Si possono applicare le 4 libertà alle opere letterarie e artistiche?
- Copyright nell’antichità
- Copyright con l’avvento della stampa
- Copyright come legge industriale, non per le persone
- Copyright nell’era digitale
- Effetti sociali del file sharing
- Proposta di rinegoziazione dei diritti a favore delle persone
- Pressione delle aziende per estendere la durata del copyright
- Pressione delle aziende per estendere l’ambito del copyright: Digital Millenium Copyright Act (DMCA)
- Ebook e la loro minaccia alle libertà
- La campagna delle case discografiche e l’uso di testimonial famosi
- Proposta: ridurre la durata del copyright a 10 anni
- Proposta: tre tipologie di opere
- Tipologia 1, opere di utilità pratica: gli stessi 4 diritti del free software
- Tipologia 2, opere che esprimono opinioni: limitazione sulla possibilità di modificare
- Tipologia 3, opere di intrattenimento: libertà di modificare dopo 10 anni
- File sharing della musica: due proposte alternative per finanziare gli artisti
Visto che alla conferenza avevo il registratore ma non la macchina fotografica, c’è qualcuno che era presente e può gentilmente fornirmi una fotografia dell’evento da mettere sul blog? Grazie a chk root per la foto fornita.
Personalizzare i temi grafici di WordPress e rimanere aggiornati
Sto cominciando ad avere confidenza con WordPress e subito mi sono messo a curare la grafica del blog. Innanzitutto ho sostituito il tema grafico (theme) di base con uno un po’ meno spartano. Guardando sul Theme Viewer ho trovato TypoXP, un buon punto di partenza. La licenza del tema permette di modificarlo e così ho fatto, cambiando un po’ la grafica e traducendo alcune parti in italiano.
Ora però se l’autore originale del tema decidesse di produrre un aggiornamento, io mi ritroverei a dover gestire le sue modifiche oltre alle le mie. Se ignorassi le sue modifiche, perderei dei miglioramenti magari utili. Se ignorassi le mie modifiche, perderei le mie personalizzazioni.
E’ un problema comune a tutti i temi di WordPress (e in genere al software scaricato da Internet e poi modificato). Con l’aiuto di CVS, il problema è facile da risolvere.
Leggi il seguito di questo post »
Java open source?
Altro argomento a tenere banco a JavaOne è stato l’annuncio dei vertici di Sun dell’apertura del codice sorgente di Java. “It’s not a question of whether, but how” ha detto Rich Green. Cioè la decisione è gia stata presa, si tratta solo di stabilire i modi.
Ma di cosa può avere paura Sun? In fin dei conti non si tratta di proteggere un segreto. Larga parte della tecnologia è già disponibile in formato sorgente, vari progetti sono stati aperti da Sun alla comunità. Fra questi Tomcat, NetBeans e, ultimo in senso cronologico, GlassFish. Quindi dov’è il problema?
Il motivo che rende la questione un problema per Sun è che aprire il codice vuol dire perdere controllo su Java. Mentre fino ad ora Java è stato un prodotto della Sun, l’apertura permetterebbe a chiunque di prendere Java, modificarlo, estenderlo e proporlo come un’alternativa al Java della Sun.
Apro a caso una delle applicazioni dimostrative da un Apple Mac e leggo:
import com.apple.cocoa.application.*; import com.apple.cocoa.foundation.*;
L’applicazione è un giochino di elicotteri. Le librerie importate permettono al programma di usare le risorse del Mac in modo più efficiente, di girare più veloci e di offrire un’interfaccia in stile Mac. Sotto molti aspetti, l’utilizzo di queste librerie rende il programma “migliore”.
Questo però non può andar bene a Sun. Un programma scritto con le librerie Cocoa non può funzionare sotto Solaris, il sistema operativo della Sun, o sotto altri sistemi operativi. L’esempio del Mac era fin troppo semplificativo, ma se vi ricordate la questione della Java Virtual Machine di Microsoft e tutte le incompatibilità che introduceva sia nel run-time che nell’ambiente di sviluppo, sapete di cosa sto parlando.
I personaggi che si muovono su questa scena sono del calibro di IBM e BEA, che vorrebbero avere più voce in capitolo, per esempio nella definizione delle API di riferimento come J2EE. L’apertura del codice permetterebbe loro di creare, se volessero, uno strappo rispetto alla gestione di Java della Sun. E ci ritroveremmo con due versioni della tecnologia.
Sun ha creato il Java Community Process (JCP), aperto a chiunque voglia contribuire alle direzione futura di Java. Tutte le aziende interessate (incluso IBM e BEA citate prima) ovviamente ne fanno già parte. Immagino che la possibilità di partecipare sia effettiva, cioè che non comandi sempre e solo Sun, ma rimane il fatto che influenzare e cambiare Java fuori dai binari del JCP oggi non è possibile.
(Vecchie) tecnologie e applicazioni web
Nel 2001 tenni otto lezioni all’Università di Genova nell’ambito del corso di Calcolatori Elettronici II. Ho recuperato il materiale che avevo messo on-line a supporto delle lezioni. Rileggendo ciò che scrivevo allora non posso fare a meno di sorridere. Le cose sono evolute parecchio. Tecnologie che una volta erano molto “in” adesso sono molto “out”. Libri che erano in terza edizione allora sono in quinta edizione adesso. Metà delle aziende start-up a cui facevo riferimento non esistono più.
Metto quelle pagine on-line così come sono, senza modifiche, nella convinzione che potranno essere ancora utili agli studenti di informatica, se non a quelli di archeologia moderna. Ecco il materiale:
- Terminologia di base, sito statico, motore di ricerca, directory, portale, commercio elettronico, B2C, B2B, sviluppo collaborativo.
- Tipologie di rete per applicazioni web, componenti hardware e software per applicazioni web, url, mappatura degli URL su file statici, mappatura degli URL su generatori di contenuto dinamico.
- Gestione dello stato nelle applicazioni web, database – le proprietà ACID, esempio: applicazione bibliotecaria, esempio: conti correnti.
- Web browser, web/application server e database, esecuzione di generatori dinamici, API verso la richiesta HTTP, API verso il database, pooling delle risorse, tecnologie per generatori dinamici.
- Una semplice applicazione web: l’agenda telefonica.
- Cookie e sessioni, registrazione utenti, gestione di gruppi di utenti, modulo collaborativo: bboard, modulo collaborativo: calendario.
- Component-Based Software Engineering (CBSE), tecnologie basate su componenti, CBSE nelle applicazioni web, cataloghi di componenti web.
- XML, origini di XML, confronto con HTML, applicazioni.
NetBeans & co.
La scelta di IDE per Java si fa più ampia. Oltre a NetBeans ed Eclipse segnalo anche due strumenti meno diffusi: Java Studio Creator (JSC) e Java Studio Enterprise (JSE). JSC e JSE sono entrambi basati su tecnologia NetBeans. Ne condividono infatti la maggior parte delle funzionalità e l’interfaccia utente. Ovviamente ci sono anche delle differenze.
JSC è un ambiente visuale per applicazioni web. L’idea è di essere semplice da utilizzare e di creare applicazioni di bassa o media complessità in breve tempo. “Visuale” vuol dire che le pagine web sono composte visivamente trascinando i componenti direttamente nella posizione desiderata. Vuol dire anche che operazioni come collegare pagine diverse attraverso un percorso di navigazione avviene utilizzando il mouse. JSC utilizza il round-trip engineering, cioè le pagine create in modo visuale si traducono automaticamente e immediatamente in codice e, similmente, modifiche al codice si riflettono sulla rappresentazione visuale. I componenti disponibili partono da quelli di base e direttamente legati all’HTML, come campi di testo e liste, per arrivare a quelli più complessi come calendari e tabelle in grado di gestire la paginazione e di ordinare i dati in base a colonne diverse. Sono anche disponibili componenti AJAX.
JSC utilizza JavaServer Faces e Java Server Pages, ovvero le tecnologie Java più leggere e recenti per applicazioni web. JSF e JSP unite a query SQL permettono lo sviluppo rapido di applicazioni senza richiedere di imparare tecnologie più complesse di livello enterprise, quali gli Enterprise JavaBeans. Comunque, se questi fossero richiesti, l’integrazione con gli EJB è possibile in Java Studio Creator esattamente come negli altri ambienti della famiglia NetBeans.
JSE è invece l’IDE più orientata allo sviluppo di applicazioni complesse di livello enterprise. JSE sembra una versione di NetBeans stabilizzata e priva di alcune funzionalità recenti disponibili in NetBeans 5. Probabilmente la scelta è appunto di stabilità – più che comprensibile visto che NetBeans 5, non appena uscito, aveva numerosi bug (poi corretti negli aggiornamenti successivi). Detto questo JSE offre due funzioni avanzate non disponibili in NetBeans. Si tratta dell’editor UML e del gestore di web services.
L’editor UML è grafico e permette, tramite il round-trip engineering, di tenere sincronizzati i “class diagram” con il codice Java. E’ una funzione molto interessante soprattutto per chi ha sempre sviluppato a livello di codice e vuole vedere il design dei propri programmi documentato tramite UML.
Il gestore di web services è invece un pannello dove si possono tenere sotto controllo sia le definizioni statiche dei web services, sia la loro esecuzione run-time. Penso che questo pannello vada nella direzione di allontanarsi dai “deployment descriptor” (i vari web.xml) ed avvicinarsi alle “annotations”, ovvero alla specifica, a livello di codice, di metadati che indichino quali porzioni di programma fanno riferimento ad un web service, quali ad un EJB, ecc. Questa evoluzione è benvenuta e risolverebbe gli attuali problemi di incompatibilità fra application server diversi nella gestione dei deployment descriptor.
Ultima nota interessante per il futuro è che l’editor UML ed il gestore di web services di cui ho parlato a proposito di JSE saranno disponibili nella prossima versione di NetBeans, cioè la 5.5. Per il momento chi utilizza NetBeans può avere una preview delle funzionalità guardando gli Enterpise Pack tutorial.
JavaOne e mobility
Si è chiusa il 19 Maggio JavaOne, la conferenza annuale tenuta dalla Sun a San Francisco. E’ la conferenza dove si incontrano aziende e individui che utilizzano Java per lo sviluppo di sistemi informatici di tutti i tipi, dai gestionali aziendali ai dispositivi mobili, dalle tecnologie di base alle applicazioni per utenti finali.
Ho seguito la conferenza attraverso il suo sito web. Anche se ci sono state numerose sessioni dedicate ad ambiti specifici di utilizzo, l’interesse e l’importanza della conferenza è dato dalle sue sessioni plenarie, dove esperti e responsabili illustrano dove Java sta andando come linguaggio e come tecnologia. E’ il posto dove curiosare per scoprire le innovazioni, direzioni nuove e i temi caldi per il prossimo anno.
In numeri, quello che coglie l’attenzione è la diffusione di Java: più di 3 miliardi di dispositivi in tutto il mondo, di cui 800 milioni di desktop, 1 miliardo di cellulari e dispositivi mobili in generale e 1 miliardo e mezzo di smart card. L’ambito dei dispositivi mobili è interessante: se da un lato parliamo di applicazioni semplici come rubriche telefoniche e giochini scaricabili a un euro l’uno, dall’altro i numeri sono abbastanza grandi da creare potenziale e nuove opportunità.
La stessa Sun parla di prima “ondata” dei dispositivi mobili, quindi di qualcosa non ancora maturo ma che comunque serva a (a) familiarizzare gli utenti con la tecnologia e creare richiesta e (b) sviluppare l’offerta hardware e software con prodotti sempre migliori e a minor costo. E interessante abbastanza? Un po’ di scetticismo è necessario dopo aver visto il mercato dei PDA rimanere di nicchia e quello dei tablet PC non decollare neanche. Forse perché il prodotto di riferimento (che il classico PC desktop con schermo da 17 pollici o più e connessione a larga banda) è così buono che lascia poco spazio a prodotti diversi. Però è anche vero i portatili stanno superando i desktop nelle vendite, che gli utenti hanno alcune necessità specifiche (come leggere la posta fuori dall’ufficio, vedi Blackberry) e che i cellulari contituiscono un formato di grandissimo successo che non è in competizione né con i desktop né con i laptop.
Sarà interessante vedere se la “ricetta” Java su dispositivi mobili funzionerà così com’è stata delineata e come eventualmente l’hardware o il software dovranno evolvere.
Primo blog
Ho aperto questo sito e questo blog per vari motivi. Spiegherò prima il perché del sito. Le ragioni sono semplicissime.
Da circa due mesi mi occupo di pubblicare fotografie on-line di gite in Liguria con lo scopo di condividerle con gli amici. Ogni gita produce un album fotografico che richiede circa 10 Mbyte di spazio. La maggior parte dei siti che permettono di pubblicare foto gratuitamente offrono dai 20 ai 50MByte, che sono insufficienti per i miei scopi non appena il numero di album diventa un po’ alto. Altri siti danno più spazio ma hanno altre limitazioni nella qualità delle immagini, nell’usabilità del software di caricamento o impongono pop-up e pubblicità. La soluzione era ovviamente passare ad un sito a pagamento che offrisse più spazio, più controllo, ecc ed è quello che ho fatto prendendo il sito predonzani.com in hosting. Le mie foto sono ora qui. Non hanno valore artistico (rientrano tranquillamente nella categoria che gli inglesi chiamano “holiday snapshots”) ma hanno sicuramente valore affettivo. Quindi, amici, dateci dentro e guardate i vostri album fotografici preferiti.
Ora il perché del blog. Alla fine del 2000, Giampiero, Christian, Alberto e io creammo un sito web collaborativo all’Università di Genova, nel laboratorio lips, dove lavoravamo e studiavamo. Lo scopo era riunire una comunità ovviamente di professori, ricercatori e studenti ma anche di persone esterne all’Università che si interessassero di tecnologie web. Il sito permetteva di pubblicare documenti, commentarli, gestire gruppi di discussioni, pubblicare presentazioni e tante altre cose. Usavamo la tecnologia ACS (ArsDigita Community Server), che oggi vive nel progetto OpenACS. Anche se questo tipo di sistema non era nuovo (il più notevole esempio è photo.net, comunità fotografica creata da Philip Greenspun, autore di ACS stesso e dell’ottimo libro Philip and Alex’s Guide to Web Publishing), in Italia non c’erano molti casi simili e quelli esistenti erano agli albori. Testimonianza di questo fu il fatto che per un certo periodo nel 2001 il nostro sito compariva fra i primi risultati italiani nelle ricerche su google su argomenti legati al web, a XML e all’ingegneria del software.
Non mi ricordo bene le statistiche di quanti utenti registrati avessimo ma erano quasi un centinaio e non erano solo parenti e amici.
Il nostro scopo era quello di giocare col web e sperimentare gli strumenti collaborativi. Avevamo tutti gli ingredienti per creare un comunità on-live: avevamo una comunità di partenza (gli studenti della nostra facoltà), le conoscenze (delle persone che ho citato) e un bel po’ di materiale e argomenti che valeva la pena sviluppare e su cui all’epoca, almeno in Italia, si trovava pochissimo.
A metà 2001 cambiai lavoro e anche le altre persone presero strade diverse dall’Accademia, tranne Alberto che penso sia oggi uno dei più giovani professori universitari italiani. Il nostro sito andò avanti fino alla rottura hardware del server Sun su cui girava e adesso gira su nuovo hardware e su altre tecnologie.
Questo blog riprende in un certo senso quell’esperimento. Avendo a disposizione un sito mio, mi sono detto: perché no? Certo molte cose sono cambiate. Innanzitutto non ho molto da dire, o meglio, non ho molto da dire che non sia già detto da qualche altra parte sul web. Anche una lettura distratta di slashdot permette di avere più notizie in un giorno di quanto io possa pensare in un mese. Secondo, gli strumenti sono cambiati. Questo è un blog personale e non un sistema collaborativo vero e proprio. Per me un sistema collaborativo deve essere “fra pari”, cioè deve dare a tutti i partecipanti le stesse possibilità di creare contenuto, di commentare e in generale di partecipare. Un blog personale, sia nei propositi che nella pratica che si osserva nella blogosphere, non è questo. Terzo, la mia comunità di partenza è costituita dalle mie conoscenze personali ed è comunque molto varia per interessi.
Detto questo, mi occupo di informatica e mi tengo aggiornato. Il mio interesse si realizza principalmente nel lavoro che svolgo alla ManyDesigns ma questo blog mi permette di raccontare qualche cosa anche al di fuori di un sito aziendale, magari in modo più libero e meno strutturato.
Ringrazio WordPress per il software di blogging e con questo chiudo il mio primo blog che, in onore alla tradizione, deve essere dedicato a spiegare il perché della sua esistenza.