Applicazioni web e encoding
1 Luglio 2009
Applicazioni web e encoding
Chi, sviluppando applicazioni web, affronta per la prima volta il problema di rendere la propria applicazione utilizzabile da persone che utilizzano lingue non basate sull’alfabeto latino, si scontra inevitabilmente con problemi legati all’errata interpretazione degli encoding dei caratteri.
Un’applicazione web coinvolge differenti ambienti, ognuno dei quali dotato di un proprio encoding/charset. In particolare bisogna dialogare con:
- l’encoding utilizzato dal filesystem del server
- l’encoding con cui lavora il server web
- l’encoding dichiarato nelle pagine
- l’encoding che utilizza il browser
- l’encoding con cui si accede al server di database (o alla base di dati memorizzata)
- l’encoding con cui il server di database memorizza le informazioni
In questa pagina è riassunto il comportamento per le applicazioni PHP che utilizzano Apache su di un server Linux e PostgreSQL come server di database. A tal fine si precisano i seguenti aspetti:
- PostgreSQL memorizza su filesystem i dati nell’encoding specificato alla creazione del database.
- Ogni client di postgres (es. pgsql) può definire l’encoding in cui le query vengono scritte o i dati restituiti. La stessa cosa vale per la libreria PHP di accesso a PostgreSQL utilizzando pg_set_client_encoding
- Le stringhe PHP hard coded sono nel charset del documento, ovvero quello definito dall’editor durante la redazione della pagina PHP
- I dati che arrivano dal browser sono convertiti dal browser stesso nell’encoding della pagina.
Sulle ultime installazioni di Linux PostgreSQL crea di default i DB in UTF-8, pertanto è fondamentale specificare l’encoding da usare nella connessione al db se le pagine (come redatte e come dichiarate) non sono in UTF-8.
Impostazione dell’encoding nelle pagine
Salvare le pagine sul filesystem
Per questo primo problema la soluzione è semplice: le pagine vanno scritte utilizzando lo stesso encoding che viene dichiarato in HTML. Questo è fondamentale per far sì che i caratteri digitati nella pagina vengano visualizzati correttamente e, soprattutto, senza essere obbligati a utilizzare funzioni di conversione.
Comunicazioni tra browser e server web
Per ogni pagina vi sono 2 encoding che vengono presi in considerazione dai browser al fine di decidere il corretto set di caratteri da utilizzare:
- L’encoding precisato negli header
- L’encoding dichiarato tramite il tag meta
In mancaza di header specifico Apache imposta in automatico l’header in base al tag meta della pagina. In ogni caso Apache può essere forzato a indicare un encoding predefinito indipendentemente dal tag meta specificato utilizzando la direttiva AddDefaultCharset. E’ pertanto consigliato specificare sempre l’header nella pagina tramite la direttiva PHP:
header("Content-type: text/html; charset=");
Dati inseriti dall’utente
Il browser converte automaticamente i dati inseriti dall’utente nell’encoding della pagina. E’ tuttavia consigliabile specificare l’attributo ACCEPTCHARSET sui form in quanto, come specificato dalla stessa Microsoft, il comportamento del browser potrebbe essere imprevedibile:
If the this attribute is not specified, the form will be submitted in the character encoding specified for the document. If the form includes characters outside the character set specified for the document, Microsoft Internet Explorer will attempt to determine an appropriate character set. If an appropriate character set cannot be determined, then the characters outside of the character set will be encoded as an HTML numeric character reference. (…) If the user enters characters that are not in the character set of the document containing the form, the UTF-8 character set will be used. UTF-8 is the preferred format for multilingual text.
Impostazioni in PHP
Le connessioni al database vanno impostate con l’encoding corretto in modo che i dati forniti vengano convertiti nel formato previsto dal server di database per la memorizzazione su filesystem.
In ogni pagina bisogna, pertanto, precisare la direttiva pg_set_client_encoding per la connessione al database.
Bisogna fare attenzione al fatto che, in sua mancanza, l’applicazione funzionerà correttamente in quanto i dati memorizzati vengono ripresi nello stesso formato. Accedendo, però, direttamente al database con una console, le informazioni inserite saranno completamente errate e non modificabili.
Note su alcune funzioni PHP
Fino a PHP5 molte funzioni PHP lavorano esclusivamente in ISO-8859-1. Se si utilizza UTF-8 è meglio verificare il comportamento di ogni funzione che lavora con le stringhe.
In particolare:
- non funziona strlen. Usare come workaround strlen(utf8_decode($str)).
- htmlspecialchars presuppone che la stringa sia in ISO-8859-1. La cosa non dovrebbe causare problemi con encoding differenti, ma nel caso è meglio precisarlo con i parametri aggiuntivi della funzione (htmlspcialchars($str, ENT_COMPAT, “UTF-8″))
- Alcune funzioni di ricerca potrebbero non trovare le corrispondenze. Per le ricerche, in particolare con espressioni regolari, si consiglia di utilizzare preg_match con l’opzione /u (altrimenti anche questa lavora in ISO-8859-1). La seguente, ad esempio, verifica che una stringa sia lunga al massimo 10 caratteri utilizzanto UTF-8.
preg_match("/^\w{,10}$/u", $string)
Conclusioni
Spero che le informazioni fornite siano utili per risolvere problemi di conversione che, spesso, fanno perdere una grande quantità di tempo.
AddDefaultCharsetLa fine delle applicazioni web?
31 Marzo 2009
In questo post cercherò di ripercorrere la storia delle applicazioni web attraverso le mie esperienze personali fino a fare un ragionamento su quello che potrebbe essere il loro futuro.
I primi passi
Nel 1998 lavoravo alla mia tesi di laurea realizzando il prototipo di un’applicazione web per la gestione documentale.
All’epoca ci si poteva connettere ad Internet con dei modem a 29K (o a 56K se si era già disposti a spendere) e potete immaginare quanto fosse difficile spiegare i vantaggi delle applicazioni web agli amministratori delle aziende.
La tecnologia utilizzata si basava su Netscape Fasttrack Server e sul linguaggio Javascript Server Side.
Nello stesso anno Microsoft annunciava l’Option Pack di Windows NT 4.0: una serie di strumenti aggiuntivi per il sistema operativo server che introduceva il supporto delle Active Server Pages: il primo passo di quella che, anni più tardi, si sarebbe concretizzata nella “guerra dei browser”.
Dall’intranet a Internet
Pochi mesi dopo realizzavo un progetto di gestione distribuita di anagrafiche.
La conoscenza di Internet da parte del pubblico non era molto cresciuta, ma la posta elettronica stava lentamente diventando un fenomeno di massa. Parlare di applicazioni web era meno difficile e gli sguardi erano simili a quelli che si ottengono adesso cercando di introdurre i concetti di Enterprise 2.0: “bello, ma per il momento non mi serve”. All’epoca un forte aiuto iniziava ad essere dato dai servizi di internet banking, rigorosamente accessibili solo con connessione telefonica dedicata verso la banca.
Le tecnologie utilizzate questa volta sfruttavano Linux e il mondo open source attraverso Apache, Mini SQL (mSQL) e w3-msql, un’estensione cgi che permetteva di realizzare una ben poco potente programmazione server side.
Anni luce indietro rispetto al Javascript della Netscape, ma con vari vantaggi tra cui:
- supporto per un database relazionale
- nessuna necessità di compilazione del codice per la sua esecuzione
- strumenti liberi e gratuiti
L’era moderna
Nello stesso periodo PHP veniva rilasciato nella sua versione 3: ancora uno strumento grezzo, ma già più avanzato di w3-msql.
Con la versione 4 di questo prodotto inizio, verso la fine del 2000, quello che è il primo progetto di livello “enterprise” in questa tecnologia.
Si tratta di nuovo di un sistema di gestione anagrafica completato da un sistema per la gestione dei dati aziendali che consente di tenere traccia dei compiti da svolgere.
In questi anni Internet è ormai diventato un fenomeno di massa e le applicazioni web, oltre grazie ai già citati siti di internet banking, sono portate al pubblico attraverso i siti di e-commerce.
Un nuovo look
Il primo sistema di Webmail è stato fatto da un italiano (l’ho scoperto su wikipedia scrivendo questo articolo!) nel 1995. Solamente con la diffusione su larga scala delle e-mail gratuite, tuttavia, questo strumento raggiunge il grande pubblico.
Esso è visto come un accessorio utile per le emergenze, ma nel 2004, con GMail, Google compie il grande passo e lancia quella che è la prima web application che riesce ad imitare l’interattività con l’utente propria delle applicazioni per desktop.
Questo passo dà la spinta finale a questa tecnologia e nei mesi seguenti diventa il modo principale in cui le nuove applicazioni devono essere sviluppate:
- accessibili da ogni parte del mondo
- senza bisogno di installazioni sui computer
- con una completa gestione dei dati sul server
- utilizzabili con un semplice browser
Il presente
Mentre il mondo si trova sommerso dallo tsunami delle web application, il fronte dell’onda si è già spostato e inizia ad interrogarsi sul futuro di questa tecnologia.
Il vantaggio dell’utilizzo da qualsiasi pc non è più sufficiente. Il mondo adesso vuole poter utilizzare le informazioni dal proprio programma preferito o dal proprio dispositivo preferito.
Se sto ascoltando la musica con un media player voglio poter accedere alle informazioni sulla canzone che sto ascoltando direttamente cliccando sul titolo e non passando da un browser.
Se sono in auto il mio navigatore deve essere in grado di prelevare le informazioni sul traffico, magari calcolate automaticamente in base a informazioni fornite dai navigatori di altri utenti, direttamente e ripresentarmele nel formato grafico più utile o utilizzarle per ricalcolare la strada in base ai suoi algoritmi interni.
Se utilizzo il mio frigorifero, voglio che sia in grado di ordinare i prodotti mancanti senza obbligarmi a connettermi ad un sito internet, ma semplicemente scegliendoli da una lista (questo è forse un po’ futuristico, ma neanche troppo: in fondo con i film si può già fare…).
In quest’ottica i siti web sono già uno strumento antiquato e il futuro pensa ad un web basato sui web services e sulle informazioni semantiche. Uno scenario che non lascia molto spazio alle interfacce utente avanzate realizzate con Javascript e AJAX.
I primi passi in questa direzione sono stati già compiuti e possono essere visti in vari esempi:
- un sistema di social bookmarking come del.icio.us avrebbe ben poco successo senza un plugin che permette l’utilizzo direttamente da un browser
- database musicali come CDDB sono già utilizzati da anni dai media player o da cd ripper per recuperare informazioni su cd e canzoni
- le api di programmazione che consentono di integrare funzionalità dei site web 2.0 nei propri programmi si sprecano (per un elenco basta consultare Programmable Web)
- i sistemi di webmail, malgrado la loro diffusione, non soppiantano i client di posta tradizionali e gli applicativi come Google Office sono ben lontani, come percentuale di mercato, anche da comprimari come OpenOffice
- questo stesso sito ha vari plugin per Firefox che mi consento di effettuare le operazioni più comuni senza accedere direttamente al sito
Una struttura per il futuro
La struttura applicativa 3-tier che ha dominato il web in questi anni, si evolve in una nuova struttura in cui il data e l’application tier rimangono sul web server, mentre il presentation tier migra sul client, sempre più spesso realizzato con strumenti di programmazione tradizionali o come plugin per programmi già esistenti. L’interfaccia web diventa uno dei possibili canali, ma sempre più quello di riserva o da utilizzare per operazioni straordinarie non altrimenti previste.
In quest’ottica, mi piacciono molto le tecnologie che consentono di realizzare plugin per i browser. Questi programmi sono multipiattaforma, facili da installare e aggiornare (i browser offrono meccanismi automatici per tenerli aggiornati) e, per loro stessa natura, fortemente orientati al web.
Neanche da dire che il prodotto più maturo, al momento, è XUL, il linguaggio su cui si basa la famiglia di prodotti di Mozilla (Firefox, Thunderbird, Sunbird, …).
Chissà che la miriade di toolkit Javascript che si stanno diffondendo in questi mesi non siano destinati ad una fine ben più rapida del tempo che stanno impiegando per raggiungere la maturità.
XWCM – XML Web Content Management
10 Febbraio 2009
Un sito web2.0 è, prima di tutto, un sito e, come tale, ha bisogno di un sistema di gestione dei contenuti che faciliti la redazione delle pagine agli autori e permetta agevolmente di apportare variazioni grafiche globali.
Questo, però, non è il solo motivo per cui oggi parlerò di un CMS. Il motivo reale è legato al fatto che tale sistema rappresenta il mio primo progetto open source rilasciato sotto una licenza libera.
Descrizione
XWCM nasce nel 2006 come progetto interno della mia azienda, Logic, per realizzare un motore di CMS che consentisse la massima libertà di personalizzazione delle pagine.
Questo sistema doveva rispettare le seguenti caratteristiche:
- permettere una separazione netta tra grafica e contenuti
- gestire la struttura del sito in modo da mantenere un sistema di menu coerente e uniforme
- permettere la gestione di siti in più lingue senza richiedere necessariamente una struttura identica tra le varie lingue
- richiedere la quantità minima di pre-requisiti tecnici e, in particolare, evitare di appoggiarsi ad un database relazionale
- i contenuti sono redatti da sviluppatori web dotati di accesso diretto ai file del sito (tramite FTP o altro) e, pertanto, un’interfaccia grafica di gestione non è tra le priorità
Al fine di semplificare la parte di gestione dei template, che si sarebbe potuta rivelare ardua partendo da zero, si è scelto di utilizzare XSLT e basare tutti i contenuti su XML.
Per ulteriore semplicità di gestione dei contenuti e per poter facilmente utilizzare editor esistenti per la redazione degli stessi, si è scelto di basare i contenuti stessi su file XML redatti rispettando la sintassi del XHTML.
Il sistema ha rapidamente raggiunto una versione stabile e completa di tutte le caratteristiche necessarie e in questi giorni Logic ha deciso di concedermi il permesso di rilasciarne il codice sotto una licenza libera.
Questa scelta è stata dettata dal desiderio di migliorare il sistema e completarlo con un’interfaccia grafica per la gestione del sito in modo da trasformarlo da un sistema pensato per sviluppatori ad un sistema utilizzabile da tutti.
Realizzazione di un sito
Realizzare un sito con XWCM risulta estremamente semplice, a condizione di avere alcune conoscenze di XSLT per personalizzare il template e di XML per redarre i contenuti.
Il prerequisito fondamentale è quello di avere a disposizione un server web con supporto per PHP (almeno nella versione 4.3) e supporto per domxml e xslt attivati.
Una volta configurato il tutto è sufficiente copiare sul server la libreria XWCM presente nel pacchetto di distribuzione e la cartella con il sito demo. Se tutto funziona correttamente il sito dimostrativo è visualizzato all’indirizzo http://<servername>/demo_site.
Personalizzazione del sito
La libreria utilizza 2 file principali per la personalizzazione del sito: un file che descrive la struttura del sito stesso e un template.
Il file della struttura (menu.en.xml) è, in linea di principio, un insieme di tag “file” con struttura ad albero che descrivono esattamente le pagine del sito e le loro relazioni gerarchiche. All’interno di questo file è presente l’indicazione del path del template da utilizzare.
Il template è un file XSLT che trasforma l’XML generato dalla libreria nella pagina vera e propria. Per la personalizzazione di questo file è necessario consultare la documentazione per capire come viene generato l’XML da elaborare.
Una volta sistemati questi file è sufficiente creare i file di contenuto con i corrispondenti file php in modo che la loro posizione rifletta la struttura del sito definita nel file del menu.
Caratteristiche avanzate
Tra le principali caratteristiche supportate da XWCM, oltre a quelle già sopra indicate, si possono evidenziare:
- Supporto per la generazione dinamica delle pagine (esempio elencare dati presi da un db)
- Supporto per template dinamici
- Supporto per template multipli. Sezioni del sito o anche singole pagine possono essere dotate di template differenti
- Generazione automatica del filo d’arianna
Esempi
Oltre al sito demo presente nel pacchetto lo stesso sito di XWCM è realizzato con XWCM stesso. Puntando al file del menu dovrebbe essere possibile ricavare tutte le informazioni necessarie per accedere ai sorgenti del template e degli altri file che compongono il sito.
Conclusioni
Spero che il progetto possa entusiasmare altre persone e la comunità di utenti e sviluppatori si ampli fino a dare la possibilità di creare un sistema di CMS completo e affidabile.
Se avete provato la libreria vi prego di darmi un riscontro.
The World Wide Mash
7 Gennaio 2009
Uno dei fenomeni che stanno alla base del web2.0 e che lo caratterizzano è legato all’utilizzo di parti di altri siti per costruire il proprio. Questo modo di operare viene identificato con il termine “mashup” il cui significato letterale è quello di poltiglia.
Questo nomignolo poco gratificante deriva dal fatto che spesso i servizi utilizzati non sono esattamente pensati per essere utilizzati all’interno di altri siti e il risultato è quello di un’accozzaglia di oggetti debolmente interconnessi tra loro e, a volte, anche poco integrati graficamente.
Ultimamente, tuttavia, questo modo di utilizzare pezzi di siti, si sta strutturando per consentire un utilizzo più organico e, anche se siamo lontani dal web semantico desiderato da Tim Berners Lee, ci stiamo avviando verso il “mesh-up”, in cui la poltiglia assume il significato di interconnessione strutturata.
Vediamo alcuni esempi di mashups e come si sta muovendo il mondo dell’informatica.
Una breve storia dei mashups
Anche se ci si deve spingere poco indietro nel tempo, il primo esempio di mashup si fa risalire al sito housingmaps.com. Questo sito non fa altro che prelevare le informazioni da Craiglist, un sito di annunci commerciali molto legato alla compravendita di abilitazioni, e combinarle con Google maps in modo da localizzare geograficamente le case in vendita.
L’innovazione fondamentale che l’ideatore del sito ha apportato è stata quella di non limitarsi ad utilizzare informazioni provenienti da altre sorgenti e ripubblicarle, come nel caso di news tramite RSS, banner pubblicitari o video presi da siti specializzati. In questo sito i dati vengono elaborati proprio come dati a se stanti e ricombinati (eventualmente con altri) per creare qualcosa di nuovo e non esistente prima.
Da questo primo esempio si sono sviluppate moltissime idee, e oggi nascono all’incirca 3 esempi di mashup al giorno, con funzioni che spaziano dai servizi di localizzazione fino ai giochi.
Il punto di partenza per chi voglia cimentarsi è sicuramente Programmable web che, oltre ad un nutrito database di esempi, fornisce l’elenco completo di tutte le API disponibili e i link a vari howto che spiegano come utilizzare una determinata API.
Il numero, sicuramente ragguardevole di 3600 mashups censiti e 1250 API disponibili (che corrispondono ad altrettanti servizi accessibili via web) dà un’idea dell’importanza e della diffusione del fenomeno.
Dalla parte opposta chi fornisce i servizi vede in questo strumento un metodo eccezionale per farsi conoscere ed imporsi come standard de facto. Google maps, in tal senso, è l’esempio principe con quasi 1600 mashups conosciuti e, forse grazie anche a questo, surclassa i propri concorrenti come notorietà nel settore delle mappe geografiche.
Le tecnologie
Indipendentemente dall’idea che vi sta dietro, le tecnologie che vengono utilizzate si basano quasi sempre su XML anche se spesso l’accesso ai servizi è nascosto dietro vere e proprie librerie che, oltre al puro trasferimento di dati, celano pezzi di codice che registrano gli accessi o ne limitano le possibilità.
Il formato XML dei dati può essere rappresentato da uno standard, come nel caso dei RSS, o da formati proprietari specificatamente pensati per il servizio desiderato.
L’accesso ai dati avviene utilizzando direttamente i dati in formato XML, utilizzando web services basati sui più disparati protocolli di comunicazione (SOAP, REST o XML-RPC) o, nel caso non esistano altri metodi, tramite l’analisi della pagina web in cui tali dati sono visualizzati.
Oltre agli aspetti indicati è importante anche capire dove il mashup può avvenire: sul server che ospita il sito o direttamente sul browser dell’utente che lo sta visualizzando.
Mentre i mashups realizzati sul server possono usufruire di una serie più completa di API, quelli su client si devo limitare alle possibilità offerte da Javascript, tuttavia ne permettono la realizzazione, come caso limite, anche senza disporre di un server web.
Editor di mashups
Creare un mashup richiede alcune competenze di programmazione e non è sicuramente alla portata di tutti. Per facilitare la creazione di questi oggetti sono disponibili software specifici o servizi accessibili via web.
Purtroppo la maggior parte di questi strumenti è pensata come strumento per le aziende e non è disponibile gratuitamente. Tra le versioni utilizzabili senza costi di licenza ve ne sono 2 particolarmenti promettenti.
Yahoo! Pipes fornisce un servizio accessibile via web che permette, attraverso una comoda interfaccia grafica, di combinare tra loro differenti flussi di dati, rielaborarli e ottenere un risultato in vari formati che vanno dagli standard RSS e JSON fino ad alcuni formati proprietari.
Di questo servizio è senza dubbio pregevole l’interfaccia utente per la creazione dei “pipes”, che consiste in un editor di diagrammi scritto in Javascript di ottima qualità. Il formato di output, viceversa, non sembra, ad un’analisi superficiale, facilmente configurabile, se non passando dai risultati esportati e rielaborandoli quantomento attraverso un XSLT.
Gnip utilizza un approccio più orientato alla programmazione e l’interfaccia per la creazione dei filtri è sicuramente meno semplice. Esso, tuttavia, ha il vantaggio di permettere la creazione e pubblicazione sul sito di “produttori” di informazioni, dove un produttore può essere già uno strumento che combina fonti differenti. sotto questo aspetto lo strumento di Yahoo! fornisce una lista chiusa di strumenti utilizzabili, anche se decisamente soddisfacente.
In entrambi i casi è sicuro che limitandosi agli strumenti base messi a disposizione senza scrivere una linea di codice si ottiene un risultato molto distante da un vero e proprio mashup.
Conclusioni
Per chi volesse approfondire l’argomento, oltre al già citato sito di Programmable web, si può far riferimento alla pagina di Wikipedia in cui vi sono vari riferimenti a tecnologie, strumenti e esempi significativi.
La gratificazione dell’utente
5 Dicembre 2008
Dall’analisi degli strumenti di enterprise2.0 fatta nel precedente post si intuisce come, tra tutte le necessità aziendali che le tecnologie proposte sono in grado di soddisfare, quella preponderante sia relativa alla comunicazione e all’informazione.
Rod Boothby analizza questa necessità, comparando gli strumenti attualmente in uso, quali telefono e e-mail, con i nuovi strumenti che si basano sui principi del web2.0 come blog e wiki.
Il primo confronto paragona 2 aspetti dell’informazione quali la sincronicità e la possibilità di riutilizzo. Sotto questo aspetto il web2.0 ne esce vincitore esaltando le capacità di asincronicità, catalogazione, ricercabilità e referenziabilità che abbiamo iniziato ad apprezzare grazie all’e-mail.
Il punto fondamentale, tuttavia, è dato dalla capacità di queste nuove tecnologie di esaltare la gratificazione e, come conseguenza, la partecipazione delle persone allo scambio ideologico.
La teoria dell’altruismo reciproco
Robert Trivers, nel suo trattato “L’evoluzione dell’altruismo reciproco” (maggiori approfondimenti sul tema), analizza dal punto di vista biologico ed evolutivo un comportamento estremamente diffuso in varie comunità animali, che si concretizza a partire dalla capacità di non infierire o aiutare il più debole, fino a comportamenti di vera e propria condivisione delle eccedenze.
Sicuramente non mancano gli esempi per dimostrare che anche il genere umano ne è affetto, tuttavia, parlando di Internet e informatica, possiamo citare 2 esempi fortemente attuali:
- il file sharing
- il mondo del software open source
In entrambi i casi gli utenti mettono a disposizione della collettività beni o servizi in modo altruistico e questo comportamento ha tutta una serie di ricadute. Prima tra tutte la forte tendenza che hanno queste persone a costituirsi in comunità. Questa tendenza, parte integrante della teoria citata, serve a incrementare i benefici del comportamento altruistico e gli svantaggi per chi adotta comportamenti non consoni ed egoistici.
Il motivo principale per cui questi comportamenti vengono adottati è legato al rapporto tra ciò che si dà e ciò che gli altri ricevono. Il meccanismo funziona quando la percezione del valore ricevuto (dagli altri) è superiore al valore del sacrificio sopportato (da se stessi). Questo in quanto dietro il comportamento altruistico si cela la speranza di potere, in futuro, usufruire di questa differenza.
Il valore aggiunto per i dipendenti
Questo valore aggiunto, calandosi in ambito aziendale, si può concretizzare in vari modi, di cui i principali sono la gratificazione e la speranza di futuro riconoscimento.
Mentre la seconda rappresenta una speranza a lungo termine, la prima è immediata e può derivare da vari aspetti:
- Sensazione di avere il controllo su parte del processo aziendale
- Conoscenza in tempo reale delle decisioni che l’azienda assume
- Possibilità di ribattere a tale decisioni e di ricevere commenti in risposta
- Possibilità di condividere le proprie idee, vedendosene attibuita la paternità e ricevendo feedback immediati e riconoscimenti pubblici
Tra gli esempi citati nel paragrafo precedente, il mondo dell’open source si avvicina molto ad un processo aziendale e può essere paragonato ad un’azienda di software di dimensioni immense.
In questo contesto i 4 aspetti sopra indicati si concretizzano nel seguente modo:
- Il mio contributo si inserisce nel contesto del software che il mondo utilizza: contribuisco a qualche cosa di mondiale
- Ogni decisione è resa pubblica e non mi viene nascosta. Principio che consente il funzionamento di team di sviluppo geograficamente distribuiti
- Possibilità, tramite forum, wiki e commenti ai post, di ribattere a qualsiasi decisione
- Possibilità di dire la mia opinione o proporre la mia idea sapendo di poter contare su un confronto sincero e su una corretta attribuzione delle idee
Unitamente alla speranza di futuro riconoscimento che si potrebbetrasformare in sostanziose offerte di lavoro, questi aspetti hanno contribuito a far diventare l’open source un fenomeno di successo.
Massimizzare gli effetti dei nuovi strumenti
Per ottenere la maggiore gratificazione, come suggerisce Dion Hinchcliffe in questo post bisogna imporre il minor numero di regole possibile, proprio per esaltare la sensazione di controllo che viene fornita all’utente.
In secondo luogo l’aspetto più importante è il feedback: dai vertici verso il basso, ma anche dai dipendenti verso l’alto e tra dipendenti stessi. In questo articolo sono riportati degli esempi di successo che la mancanza di confronto e riconoscimento avrebbe stroncato, dando un forte colpo allo sviluppo scientifico.
I blog sono sicuramente lo strumento ideale, a condizione che siano sottoposti a linee guida di utilizzo estremamente sintetiche e liberi per tutti. Solo in questo modo si riuscirà a trasformare un lavoratore in un innovatore.
Per concludere voglio ricordare una massima che nel mondo del software libero è molto diffusa e che può far capire l’importanza del processo sopra descritto:
“Se io do un Euro a te e tu un Euro a me, abbiamo 1 Euro a testa.
Se io do un’idea a te e tu un’idea a me, abbiamo 2 idee a testa.”
Registrazioni e identità, dall’e-mail a OpenID
13 Novembre 2008
Nel precedente post ho sconsigliato, per problemi di privacy e sicurezza, l’utilizzo di OpenID come sistema centralizzato di autenticazione per tutti i servizi web.
Vorrei ritornare sull’argomento per approfondire il funzionamento di OpenID (dal punto di vista di un utente) per motivare meglio questa scelta e spiegare nel dettaglio la soluzione che reputo più idonea.
Analizziamo i vari metodi di registrazione che si possono trovare sui siti web esponendo pregi e difetti.
Registrazione con username e password
Il metodo più facile per gestire la registrazione è quello di chiedere all’utente che si vuole iscrivere di scegliere esclusivamente uno username e una password.
Questo metodo non fornisce al sito alcuna informazione sull’identità dell’utente, ma consente esclusivamente di accertarsi che, nei successivi accessi, chi entra è la stessa persona che è entrata la prima volta.
In questo modo il sito è in grado di collegare le azioni compiute, siano esse informazioni memorizzate o altro, allo username. Questo può consentire di attivare meccanismi di restrizione dei permessi quali, ad esempio, consentire l’accesso alle informazioni esclusivamente all’utente che le ha inserite.
Questa soluzione, tuttavia, ha 2 grossi limiti.
Il primo è un limite “organizzativo”: cosa succede, ad esempio, se non mi ricordo più la password?
Il secondo è un problema di funzionalità. Supponiamo di voler creare una “rete” di fiducia in cui l’accesso alle informazioni è consentito non solo all’utente che le inserisce, ma anche a ad altri. Questi altri possono essere identificati esclusivamente tramite username. Questo comporta che la corrispondenza username – persona reale deve essere effettuata al di fuori del meccanismo proposto, ad esempio con una mail tra le 2 persone in cui si dice “il mio username è xyz”.
Registrazione standard Web 1.0
Per ovviare ai problemi sopra elencati, in tutti i siti che attualmente conosciamo, la registrazione è accompagnata dalla richiesta di un indirizzo e-mail. La procedura di registrazione si svolge nel seguente modo:
- Scelta di username e password e indicazione del proprio indirizzo di e-mail
- Invio di una e-mail di conferma con un link
- Cliccando sul link l’account viene attivato
Ovviamente vi sono variazioni sul metodo che si basano sul fornire una password automatica che l’utente può poi cambiare, utilizzano direttamente l’indirizzo e-mail come username o sfruttano altri metodi per ottenere conferma, quali un SMS come nel caso dei provider telefonici.
Qualunque sia la variante, tuttavia, l’utente viene identificato non solo come colui che si è registrato, ma anche come colui che risponde ad un indirizzo e-mail o altro strumento di comunicazione.
L’indirizzo e-mail costituisce un’identificazione univoca e, se viene pubblicato, consente anche a chi mi conosce di associarmi a tale account.
Il meccanismo funziona e i problemi precedentemente esposti sono stati risolti. I promotori di altri sistemi, tuttavia, segnalano che questo meccanismo porta ad una proliferazione di username, password e dati per ogni utente (uno per ogni sito) con disagi per chi va tutti i giorni su svariati account e li vuole tenere allineati.
OpenID
OpenID permette, tra le altre cose, di avere un account unico. Ecco come funziona l’iter di registrazione.
- Mi registro su un sito che fornisca il servizio di provider OpenID utilizzando il metodo standard basato su e-mail
- A questo punto, per registrarmi ad un altro sito che si comporti da client OpenID fornisco esclusivamente la mia URI OpenID, ovvero l’URI che mi identifica su internet
- Il nuovo sito fa una richiesta al mio provider OpenID chiedendogli i miei dati e il provider, prima di inviarli, mi chiede conferma tramite redirezione su una sua pagina e, se non l’ho già fatto, richiesta di username e password originali
- Il client a questo punto mi autentica registrando le informazioni che è riuscito a ricavare dal mio account OpenID
- Nei successivi accessi fornirò sempre la mia URI e la richiesta di password avverrà sempre e solo da parte del provider OpenID e solamente alla prima connessione
Tramite questo metodo ho avuto i seguenti vantaggi:
- Sono stato identificato in modo univoco su internet (identità)
- Non ho dovuto ripetere i miei dati per la nuova registrazione
- In teoria il nuovo sito potrà aggiornare le informazioni ogni volta che cambieranno sul mio account
- Utilizzo uno username/password unici per tutti i servizi
- Inserisco username e password una sola volta e vale per tutti i siti attivati
E’ un meccanismo fantastico, ma il rovescio della medaglia è che il mio provider non solo può accedere a tutti i miei siti spacciandosi per me (basta una modifica al programma o la memorizzazione in chiaro della password), ma ne ha anche l’elenco in quanto deve memorizzare i siti autorizzati.
Dormireste sonni tranquilli?
Come utilizzare OpenID
OpenID ha grossi vantaggi, soprattutto nella capacità che ha di mantenere sincronizzati i propri dati tra siti differenti e, se completato con le informazioni che possono essere memorizzate tramite un file FOAF, potrebbe costituire veramente la nostra identità in rete.
Il meccanismo che propongo è quello di rinunciare allo username/password unici per ogni sito. Questa rinuncia è, a mio avviso, minima e se non se ne può fare a meno, piuttosto utilizziamo i meccanismi di memorizzazione automatica dei browser.
La procedura di registrazione, pertanto, potrebbe essere la seguente:
- Registrazione utilizzando il primo metodo (solamente username e password, senza e-mail) completato con la mia URI OpenID)
- Il sito scarica dal provider OpenID i miei dati e memorizza la mia URI per successivi aggiornamenti
- La URI OpenID non potrà mai essere usata per l’accesso al mio sito, ma dovrò sempre usare username e password forniti al sito stesso
In questo modo ho mantenuto il vantaggio di collegare tutti i miei siti alla mia identità e permettere alle persone di sapere che quel sito è della persona descritta a quell’URI e citata come amico da quell’altro utente.
Alla semplice URI (che potrebbe essere direttamente il mio file FOAF), OpenID ha aggiunto la dimostrazione della proprietà dell’URI, meccanismo fondamentale per costruire una rete di fiducia basata su tale identità.
“Chi sono” – la nostra identità sul web
9 Novembre 2008
Come primo post su questo blog sarebbe forse giusto parlare dell’autore, dei suoi interessi e della sua vita. Tuttavia io preferisco mirare direttamente all’obiettivo entrando subito negli argomenti a cui questo blog è dedicato. Il “chi sono” del titolo, pertanto, non si riferisce a me, ma alla nostra identità in Internet.
Così come succede nella vita reale, anche nel mondo virtuale abbiamo bisogno di “definirci”, di trovare un modo univoco per rappresentare la nostra identità. Se nella vita reale posso dire io sono Tizio, residente in questa città e abitante a questo indirizzo, non è altrettanto facile classificarci nel momento in cui siamo in rete.
Chi sono io? Sono la persona descritta su Facebook o su LinkedIn, quella presente su Flickr o su TripAdvisor o, ancora, sono l’autore di questo blog? Le nostre identità in rete sono multiple e spesso discordanti, in quanto non è presente un meccanismo che consenta di trasferire e mantenere sincronizzate le informazioni.
Un secondo aspetto è quello della veridicità della frase: “la persona descritta a quell’indirizzo internet sono io”. Posso dirvi che mi chiamo Tim Berners-Lee e che questa è la pagina che mi descrive, ma difficilmente, basandovi esclusivamente su Internet, potete essere in grado di accertarlo.
Questo problema è ancora più grande nel momento in cui quella pagina contiene, come nell’esempio proposto, informazioni significative su opere o conoscenze che possono influenzare pesantemente il mio interlocutore e indurlo ad assegnare un peso differente alle mie affermazioni.
Per nostra fortuna la tecnologia ci sta già venendo incontro e ci fornisce 2 strumenti che, combinati, riescono a risolvere completamente i problemi esposti. Tali strumenti sono FOAF e OpenID.
FOAF
Friend Of A Friend è uno strumento estremamente semplice. Si tratta, essenzialmente, di uno standard basato su RDF che permette di descrivere una persona e tutti i collegamenti che essa ha con altre persone o cose, siano esse definite o meno sul web.
In pratica si tratta di creare un file RDF all’interno del quale vi siano tutte le informazioni che normalmente ci vengono richieste iscrivendoci ad un sito, dai dati anagrafici ai nostri recapiti. Tali informazioni saranno poi completate dai collegamenti del tipo “lavoro in questa azienda”, “ho scritto questi libri”, “questo è il mio blog” e, forse più importante di tutti dal punto di vista del social networking, “conosco questa persona” dove la persona presa in causa è l’URL di un altro file FOAF.
Se creiamo il nostro file e lo pubblichiamo in qualche modo in internet, possiamo iniziare a dire in giro “questo sono io” e fornire a chiunque sempre le stesse informazioni. I miei amici potranno iniziare a collegarmi tramite i file FOAF e la rete di interconnessioni comincerà ad ingrandirsi.
Se tutti i siti che ci chiedono nome e recapiti si accontentassero di un URL, potrebbero non solo evitarci la fatica di ripetere le stesse informazioni ad ogni registrazione, ma anche tenerle costantemente aggiornate riscaricando la nuova versione del file ogni volta che viene modificato.
I file FOAF sono il primo tassello del “Giant Global Graph” del precedentemente citato Tim Berners-Lee, in cui il web si trasforma da un insieme di pagine interconnesse ad un insieme di informazioni interconnesse, intendendo con informazione il dato puro e semplice.
Crearsi un’identità
Creare il proprio file FOAF è relativamente semplice e può essere fatto seguendo 2 strade, ognuna con vantaggi e svantaggi.
La prima consiste nell’iscriversi ad un sito di social networking che fornisca tale servizio. E’ facile trovare in rete degli elenchi, tuttavia così facendo ci si lega a tale sito e la vostra identità in rete ne seguirà le sorti. I problemi che nascono sono gli stessi di un indirizzo mail. Nel momento in cui voglio (o sono obbligato) a cambiarlo devo contattare tutti coloro che lo usano affinché lo sostituiscano con quello nuovo.
Nel caso dell’identità questo potrebbe essere particolarmente oneroso, in quanto i suoi riferimenti si potrebbero essere diffusi in modo considerevole e cambiarli non è così facile come mandare una singola mail.
Il secondo metodo è quello di crearsi il proprio file FOAF tramite un servizio on-line come Foaf-a-matic e pubblicarlo sul proprio sito.
In questo caso il rischio di dover cambiare è più limitato, a condizione di essere il titolare del dominio o di avere un rapporto di estrema fiducia con chi ce lo fornisce, tuttavia diventa più oneroso l’aggiornamento che comporta una variazione manuale del file.
In entrambi i casi permane poi un problema: come garantire agli altri che il file a quell’URL è veramente il mio?
Aggiungiamo OpenID
Sul sito ufficiale viene detto che OpenID elimina la necessità di avere molteplici username per accedere ai vari siti presenti in internet. In base a questa definizione OpenID sembra essere un protocollo per implementare un sistema di autenticazione centralizzato e, in effetti, come tale funziona.
Dal punto di vista dell’utente il meccanismo è semplice:
-
Mi registro su un sito che fornisca il servizio di provider OpenID
-
Mi collego ad un sito che supporti gli account OpenID (il client)
-
Invece di registrarmi fornisco la mia URL OpenID
-
Vengo rimbalzato sul sito del provider dove possono inserire username e password
-
Le mie informazioni sono inviate al client il quale mi autentica
Bello, ma nasce immediatamente un problema: mi fido così tanto di questo provider da consegnarli l’account per accedere a tutti i miei siti? Io no di sicuro.
Sotto quest’ottica OpenID avrà uno scarso successo come meccanismo globale, ma potrebbe rivelarsi molto utile in ambito aziendale configurandosi come un sistema unificato di autenticazione: mi registro sul server OpenID aziendale e posso accedere a tutti i servizi internet senza fornire nuovamente username e password. In questo caso l’azienda garantisce la mia identità solamente per i servizi dell’azienda stessa e io fornisco username e password solamente a chi quei servizi già li gestisce.
Se OpenID non costituisce un sistema integrato di autenticazione, in che modo può completare il meccanismo di gestione globale della propria identità? Prendendolo per il solo protocollo che gli sta alle spalle e non per l’uso che ne viene proposto.OpenID dovrebbe essere utilizzato semplicemente come metodo di comunicazione tra computer per autenticare l’accesso ad una determinata pagina.
In sintesi il processo è questo:
-
Dico ad un servizio “io sono la persona descritta a questa URL”
-
Tramite OpenID viene richiesto l’accesso a tale URL e io, inserendo username e password, acconsento al trasferimento dei miei dati
-
In quella pagina è presente un link al file FOAF che mi descrive
-
Il sito mi identifica come la persona descritta da tale file in modo univoco e può sempre scaricare gli aggiornamenti che mi riguardano
Un descrizione alternativa di questo meccanismo è fornita in questo post, anche se si lascia sempre passare il concetto che l’URL OpenID può sostituire username e password. A mio avviso deve limitarsi ad accompagnarli così come un indirizzo e-mail completa la registrazione tramite l’invio di un link di conferma.
Conclusioni
Tramite FOAF e OpenID viene definita la nostra identità in rete nel senso di URI univoca per ognuno di noi. Ovviamente posso continuare a dire di essere l’inventore del web, ma il W3C, quando parlerà di me, parlerà della persona con una certa URI e tale persona non potrò essere io, in quanto non sarò in grado di “dimostrarlo” a chi me lo chiedesse.
Tramite questi 2 protocolli abbiamo un metodo per costruire la nostra rete di conoscenze in internet.