YouRank

15 June, 2008 (12:36) | business, communication, fun, human

Qualche mese fa mi sono imbarcato in un’avventura molto sfidante, quella di YouRank, inizialmente mi sono occupato dell’aspetto metodologico della realizzazione del prodotto, ma da dicembre dell’anno scorso sono diventato anche uno degli sviluppatori, in particolare mi occupo della realizzazione dell’estensione che viene installata all’interno del browser.

YouRank, tecnicamente parlando, è un motore di ricerca distribuito che non si basa solamente sugli aspetti strutturali del web (link, tags, microformats, ecc…), ma anche e sopratutto sull’attvità dell’utente. Se sto cercando un termine, i motori di ricerca attuali mi porteranno su pagine che contengono (sintatticamente) quel termine, magari è quello che stavo effettivamente cercando, magari no e allora proseguirò nella ricerca sfruttando i link della pagina in cui mi trovo. Attraverso l’uso del link sto implicitamente dicendo che quel link è semanticamente collegato alla ricerca che stavo facendo e di questo YouRank ne tiene conto.

Non ho mai creduto nelle soluzioni dove la semantica (il significato delle cose) viene dedotta da un sistema artificiale, la mia opinione è che i computer esistono per semplificarci la vita e per sostituirci in tutti quei compiti in cui noi non eccelliamo, non il contrario :-). L’originalità di YouRank sta nel cercare di capire cosa è veramente importante deducendolo dal comportamento dell’utente: all’utente gli aspetti semantici (questo link è importante, questo no), e a YouRank gli automatismi collegati (mi ricorderò del fatto che per te questo link è importante)

La sfida tecnologica è stata quella (e lo è tuttora) di realizzare un prodotto sotto molti aspetti innovativo in un ambiente di sviluppo (mozilla/xul/xpcom) non particolarmente “friendly”. L’estensione è composta da alcuni oggetti xpcom realizzati in c++ (compreso lo storage sqlite opportunamente modificato/ottimizzato) mentre tutto il resto è in javascript

L’ambiente non lo considero amichevole perchè:

  • Non esiste nessuna libreria di unit testing: esistono molte librerie di unit testing in javascript, ma nessuna che sia stata pensata per essere utilizzata in un contesto diverso da quello di una pagina web, io avevo bisogno di qualcosa che potesse essere eseguito da linea di comando e che desse un feedback interpretabile in maniera automatica. La soluzione è stata quella di realizzare una libreria di unit testing ad hoc
  • Non esiste un sistema di build: certo, esiste l’ambiente di build di mozilla/firefox, ma provate ad automatizzarlo in modo che funzioni su tutte le piattaforme che supportiamo (win, linux, mac), in modo che non ci vogliano giorni per ricostruirlo e in modo che una build da ambiente pulito non ci metta delle ore. Alla fine ho scelto ant e make come tools e una serie di file di build non propriamente semplici ma che rispettano tutti i requisiti di cui sopra
  • Non esiste nessun ambiente di sviluppo: komodo forse è la cosa che si avvicina di più, ma niente di paragonabile alla “developer experience” che puoi avere con eclipse per lo sviluppo di un’applicazione java. Nota: io sono un utente vim e non mi stanno molto simpatici gli IDE (sopratutto quelli che pretendono di essere più furbi di me), quindi per me non è stato un grande problema, ma trovare un ambiente di sviluppo condiviso è stato (lo è tuttora) un problema
  • Mi ero dimenticato dell’incubo della portabilità del codice senza avere una virtual machine :-)

Attualmente il ciclo di sviluppo è settimanale, lo sviluppo di una release inizia il giovedì mattina e termina il mercoledì sera, parallelamente giovedì mattina inizia la fase di test esplorativo della nuova release che viene condotto internamente e che dura due giorni, il rilascio al pubblico avviene di lunedì. Questo lunedì verrà rilasciato il prossimo update che introdurrà la compatibilità con Firefox 3

Nei prossimi giorni mi occuperò di scrivere alcuni post tecnici sul blog di YouRank, quindi se siete interessati all’idea, installatelo, provatelo, ditemi cosa ne pensate e tenete d’occhio il blog :-)

Write a comment