Indice Di Popolarità (di un pacchetto DEB)

Fa un po' ridere...se uno ci pensa, ma in questa uggiosa domenica di Febbraio è il meglio che posso inventare.

Prefazione

OBBIETTIVO OBIETTIVO: Tirar fuori un numero che possa rappresentare il voto per un pacchetto, cioè un programma specifico. Le votazioni si fanno su tutto o quasi, e, se non si vogliono stabilire troppi parametri per dare un giudizio numerico ad un programma, scegliamo allora il voto della massa. Che cos'è? È quello che si ottiene facendo una media dei gusti degli utenti che utilizzano quel programma rispetto all'insieme dei programmi installati sulle loro macchine. Tutto sarà anonimo, automatizzato, semplice più che mai: il risultato sarà un numero da 1 a 100, quello che chiamo l'Indice Di Popolarità (d'ora innanzi IDP™ ;-) )

Azione


I dati provengono dall'Ubuntu popularity contest chiamato popcon, progetto che si occupa di elaborare localmente i dati relativi all'accesso settimanale dei pacchetti installati, e una volta inviati ad un server centrale di analizzare i campioni ricevuti. Anche se non propriamente (o non ancora) molto affidabili i campioni (ad oggi ~10000) si riferiscono (o almeno il sottoscritto spera che non siano dati forgiati ad-hoc da qualche zuzzurellone) a dati di utenti concreti che hanno installato, aggiornato, utilizzato pacchetti. Questi dati di default vengono inviati al server popcon.ubuntu.com una volta a settimana (tramite un crontab settato la domenica mattina). Nelle ultime due settimane i campioni stanno lievitando con incrementi ragguardevoli. Stiamo a vedere se è una questione di passaparola*.
Voto
I dati ci sono, pochi o tanti che siano (e ammesso che non siano di fantasia): il dato che più mi interessa tra quelli figuranti nelle statistiche del popcon è il cosiddetto voto.

Voto: definizione
dal sito del popcon {{{voto: numero di persone che usano il pacchetto regolarmente }}} dalla FAQ (/usr/share/doc/popularity-contest/FAQ)

 Un computer vota per un pacchetto se, secondo i dati raccolti nel rapporto (inviato dal computer verso il server che raccoglie le statistiche), un programma facente parte o strettamente dipendente dal pacchetto è stato usato in un lasso di tempo inferiore ai 30 giorni. Il computo viene effettuato lato server.

Graduatorie
Ora che sappiamo cosa rappresenta in concreto un voto, dobbiamo anche sapere che le statistiche sono stilate in due tipi principali di graduatorie:

La globale ovviamente comprende l'insieme di *tutti* i pacchetti coperti dai dati statistici, non propriamente tutti i pacchetti reperibili per Ubuntu, ma circa.
Quella di categoria comprende, invece, solo i pacchetti che fanno parte di una particolare sezione, che cioé hanno cioè un preciso utilizzo. Le categorie attualmente utilizzate su Ubuntu sono: admin, kde, python, comm, libdevel, science, devel, libs, doc, mail e molte altre. Vista la particolarità della graduatoria di categoria, è facilmente intuibile che di per sè sarà più competitiva (il pacchetto verrà equiparato a suoi 'simili'), ma al contempo, non terrà conto della globalità del software disponibile sulla distribuzione.
Questa generica considerazione mi ha portato a considerarle entrambe nel ricavare l'IDP.
Se è così allora l'IDP può essere rappresentato dalla media semplice (aritmetica) delle due graduatorie:


Ma da cosa scaturiscono in pratica voto Globale e voto di Categoria? Prendiamo il Globale, la sua graduatoria consiste in una lista ordinata per voto decrescente e posizione assoluta crescente (voto + alto, n°1 in graduatoria, via via fino a voto + basso, ultima posizione in graduatoria). Nella graduatoria isoliamo i dati essenziali: sono posizione, numero dei pacchetti totale (che coincide con l'ultima posizione in graduatoria).
Il voto globale, espresso in forma percentuale può essere dato da:


Nella stessa misura si trova il voto di Categoria applicando il dato totale ed il dato posizione relativi alla categoria di appartenenza del pacchetto, in esame.



Ricapitolando



Formula
Sostituendo e semplificando si avrà:

= [(tG - pG) / tG + (tC - pC) / tC] * 100 / 2 = [(tG - pG) / tG + (tC - pC) / tC] * 50


Postfazione

Aiuta il popcon!

Bene ora che sappiamo cosa è l'IDP e come si fa e..anche tutto quello che non vi ho detto (perchè in realtà l'avevo scritto solo che poi non ho salvato e ho modificato una nuova pagina perdendo circa 3-4 paragrafi), passo al dunque:

Script

Siccome uno dei possibili utilizzi dell'IDP è quello in progetto per la recensione di programmi sulla NewsletterItaliana, e visto il ripetersi dei comandi per il calcolo (vd.su) la faccenda si presentava tediosa, ho messo insieme un breve script Python che assolvesse al compito. Considerato che è il mio 2°script (il 1°l'ho scritto due-tre giorni fa) fatto per Python e che non sono un tipo molto script kiddie :-p .. Be' a me funziona ;-).

APPENDICE

In pratica: l'IDP di k3b

Passo a passo

TIP: i seguenti comandi sono stati racchiusi 'tra singoli apici', facendo copia&incolla accertati di eliminarli entrambi

Con lo script

Tutto è come previsto ;-)

capa@rezza:~$ chmod 755 idp.py; ./idp.py k3b

                                     =====
                                      K3B
                                     =====
Ramo: main
Categoria: otherosfs
Recupero graduatoria globale   (http://popcon.ubuntu.com/by_vote.gz)...
OK
Recupero graduatoria di categoria   (http://popcon.ubuntu.com/main/otherosfs/by_vote.gz)...
OK

                                   I.D.P.=79%


CategoryHomepage

SimoneFittabile/IDP (l'ultima modifica è del 14/03/2011 12.54.51, fatta da localhost)