domenica 21 novembre 2010

Introduzione al Perl linguaggio di programmazione ad alto livello, dinamico, procedurale e interpretato.

Tutti hanno sentito almeno una volta nella loro vita di utenti di computer l'esigenza di scrivere qualche programmino per automatizzare le operazioni che si compiono quotidianamente.

Usare per queste operazioni elementari un linguaggio di programmazione compilato è un po' dispersivo, specialmente perché i linguaggi convenzionali non offrono dei servizi di livello sufficientemente alto, o almeno non così alto da rivaleggiare con il set di comandi che un utente Unix si trova ad usare nella pratica di tutti i giorni.


Per questo si sono sempre usati i cosiddetti shell script: dei file che contengono sequenze di quei comandi (o programmi se preferite) che si trovano in qualsiasi sistema Unix. Per alcuni scopi questi shell script sono sufficienti, ma se si vogliono eseguire dei compiti complessi, come l'elaborazione di file, a volta si fatica un po' troppo per quello che si vuole ottenere.


Esistono però altri modi di scrivere in fretta un programmino che analizzi certi file ed emetta un risultato. Entrano in scena allora sed (stream editor) che automatizza le operazioni che è possibile compiere con un editor su di un file ed awk, un linguaggio basato sul riconoscimento di pattern all'interno di un file di testo e sulla loro elaborazione.


Con l'aiuto di questi piccoli tool è stato possibile per la maggior parte degli utenti creare dei programmi di inusitata complessità, ma... C'è sempre un ma.


Usando i comandi degli shell script, il sed o l'AWK si può operare solo su file di testo e neanche tanto agevolmente, tanto è vero che spesso sed e AWK sono usati all'interno di shell script che comunque ne dirigono le operazioni. Oltre tutto i programmi ottenuti in questo modo sono spesso lenti e se vanno bene per elaborare piccoli file in modo semplice, mostrano di essere inadeguati per operazioni complesse o per operare su file molto grandi.


Il Perl è stato creato per venire incontro all'esigenza di avere un linguaggio di programmazione di uso generale, potente, veloce nell'esecuzione e nella scrittura dei programmi. Sebbene al momento della sua nascita fosse un linguaggio orientato all'elaborazione dei testi (da cui il suo nome: Practical Extraction Report Language), il Perl è in grado di trattare con altrettanta facilità ed assoluta trasparenza anche file binari.


Benché sia molto noto come linguaggio per lo sviluppo di CGI, Perl è stato creato inizialmente come ausilio ai sistemisti, come linguaggio di manipolazione di testo e file. Infatti è anche detto Practical Extraction and Report Language, ma questo è un acronimo assegnato dopo la creazione del nome o, in inglese, un "backronym". Pertanto secondo la documentazione stessa di Perl, non vi si dovrebbe mai riferire come "PERL", ma come "Perl" o "perl" a seconda che si intenda il linguaggio in quanto tale o una specifica implementazione rispettivamente. È anzi questa un'informazione utilizzata negli ambienti perlistici per distinguere "chi è del giro" da chi non lo è.


Si è evoluto nel tempo, anche grazie ad un potente sistema di moduli, in un linguaggio a carattere più generale, comprendente l'elaborazione di immagini, l'interrogazione di banche dati, i processi di comunicazione via rete, ed utilizzabile in tutti quegli ambiti in cui non siano strettamente necessarie le performance di un linguaggio compilato più a basso livello, offrendo al contempo tempi di sviluppo molto più rapidi. È quindi anche utilizzato per la prototipizzazione di programmi da implementarsi in altri linguaggi.


Il linguaggio è stato pensato per essere pratico (facile da usare, efficiente, completo) oltre che bello e "magico" (è questo un concetto tipicamente perlistico); esso non è mai stato pensato per essere compatto, elegante o minimale, infatti il suo motto più distintivo è riassunto nell'acronimo TMTOWTDI (There is More Than One Way To Do It), che in inglese molto indicativamente significa "c'è più di un modo per farlo". Tuttavia uno dei suoi maggior pregi è che grazie a tale ricchezza consente di risolvere con grande semplicità ed eleganza problemi che con altri linguaggi richiederebbero notevoli sforzi. Infatti Larry Wall ama ripetere che uno dei suoi obiettivi è "rendere le cose facili, facili e quelle difficili, possibili".


Perl supporta sia il paradigma procedurale che quello ad oggetti, ha potenti funzioni per l'elaborazione dei testi ed è dotato di una delle maggiori collezioni di moduli prodotte dalla sua vasta comunità di utenti.


Punti di forza del Perl (almeno all'epoca delle sue origini: con lo sviluppo esplosivo che ha subito ora ne ha molti altri) erano le regular expression, estremamente potenti ed articolate e il sistema di reporting che consente di disegnare il layout della pagina.


Ora il Perl viene usato per gli scopi più diversi: utility di sistema, accesso a database, networking, programmazione CGI e grafica.


Questo linguaggio è ora disponibile su moltissime piattaforme, da Unix (la sua piattaforma originaria) a Plan 9, VMS, QNX, OS/2, Amiga e Win32.


La caratteristica più peculiare di questo linguaggio è la libertà di espressione che consente al programmatore: è un linguaggio ``ridondante'' dal punto di vista delle strutture logiche e di flusso. Questo rende più facile per un programmatore accostarsi al linguaggio, qualunque siano state le sue esperienze passsate. Il motto del Perl è ``There's more than one way to do this'' (c'è più di un modo per farlo) e il suo autore tiene molto a questa forma di libertà che contrasta così tanto con la pratica comune di creare linguaggi parchi di istruzioni, con il minor numero possibile di strutture, seguendo una ricerca estetica di semplicit&agrave.


A cosa somiglia il Perl? Questa è una domanda che ha una risposta insolitamente lunga: ha dentro di sé caratteristiche prelevate da numerosi linguaggi. Chi ha programmato con gli shel script riconoscerà qualcosa della Bourne shell e della C shell, così come certe altre istruzioni ricordano il sed, l'AWK, il C, passando addirittura per alcuni dialetti del BASIC.
In realtà, come ho già detto, questo è un punto di forza, perché chi ha un minimo di esperienza di programmazione in qualsiasi linguaggio può diventare produttivo molto rapidamente.


Il Perl è un linguaggio interpretato: non necessita di dichiarazioni di variabili: a secondo dell'uso che se ne fa, le variabili vengono trasformate nel tipo necessario. Ad esempio si può assegnare un valore numerico ad una variabile, moltiplicarlo per due e concatenargli una stringa.
Questa caratteristica in realtà è quanto ci si possa già aspettare da un linguaggio interpretato. Ma il Perl è più di un linguaggio interpretato: in realtà quando si lancia un programma Perl, il testo del programma viene letto e compilato, viene quindi eseguito ad una velocità molto elevata.


Il Perl è molto ottimizzato (è il frutto di anni di lavoro da parte di hacker di tutto il mondo), ma per i fan del codice binario è disponibile in beta un compilatore ``reale'' e presto sarà disponibile anche un compilatore in grado di tradurre il Perl in byte code Java...
In sostanza la velocità del Perl non è un problema, perché il linguaggio dispone di una espressività di livello molto alto, che consente di pilotare facilmente routine interne all'interprete, come ad esempio il meccanismo di ricerca e sostituzione all'interno di una stringa.


Una caratteristica che rende rapida la scrittura ``fisica'' di un programma Perl è che praticamente tutte le funzioni hanno dei default, ad esempio lavorano sulla riga corrente del file di input o sul valore della variabile di default, quella che poi contiene la riga appena riga.

Negli ultimi anni sono state aggiunte al Perl delle caratteristiche sofisticate: le possibilità di immagazzinare in variabili dei riferimenti ad altre variabili o subroutine e la possibilità di usare ``moduli'', il termine con cui si designano in Perl le classi.


In realtà un modulo non è niente più di una raccolta di subroutine incapsulate in un package (l'analogo ante litteram dei namespace del C++, presente da anni nel linguaggio) e di una reference di tipo particolare che conserva al suo interno, oltre ai dati degli oggetti, l'indicazione della classe a cui appartiene e attraverso la quale si può accedere ai dati e funzioni membro del modulo.


L'object orientation nel Perl non è basata sull'inaccessibilità dei dati e delle funzioni private delle classi, ma su un patto democratico (diciamo una policy) tra il creatore del modulo e i suoi utenti. L'autore documenta i dati e un'interfaccia che l'utente farebbe meglio a rispettare, perché il resto delle funzioni interne non è detto che resti invariata tra una versione e l'altra o necessita di una comprensione troppo approfondita delle operazioni svolte dal modulo per poter essere usata in modo da non provocare malfunzionamenti.


Parlo di patto o accordo, perché spesso si tratta di un vero accordo bilaterale e non di un dictat da parte dell'autore. Questa affermazione introduce un discorso sul metodo con cui procede lo sviluppo del Perl e dei suoi moduli.


Questo metodo di sviluppo ricorda molto da vicino quello adottato per Linux: i sorgenti del linguaggio sono liberamente disponibili e sono coperti da una Artistic License, che è meno restrittiva della GPL della GNU.


Chiunque può partecipare allo sviluppo: gli autori sono frequentatori accaniti dei vari newsgroup dedicati al linguaggio ed è possibile dialogare con loro, porre quesiti, ma anche fare richieste, che, se ragionevoli, vengono prese in considerazione. In pratica la discussione sulla definizione del linguaggio è sempre stata pubblica e chiunque ne abbia voglia può parteciparvi.


Lo stesso succede per i moduli (ormai se ne contano a centinaia). Il luogo deputato alla discussione delle caratteristiche dei nuovi moduli è sempre un newsgroup. Non è raro assistere alla discussione pubblica su ciò che un modulo deve fare e su come sarebbe meglio scriverlo.
Insomma lo spirito di collaborazione, l'estrema dinamicità dello sviluppo e l'eccellenza dei risultati ricorda molto da vicino ciò che succede nella comunità Linux.


Questa situazione ha favorito il moltiplicarsi dei moduli, che coprono ora ogni aspetto dell'informatica, trasformando il Perl da un linguaggio di text processing in un linguaggio general purpose.


Seguono alcuni esempi di codice Perl particolarmente interessanti, utili o folkloristici, trovati nei newsgroup dedicati al Perl. (comp.lang.perl.*).


1: #!/usr/bin/perl -n00
2:
3: while(m{
4: <\s*A 5: \s+HREF 6: \s*=\s* 7: (["']) 8: (.*?) 9: \1 10: .*?>
11: }xsgi)
12: {
13: print "$2\n";
14: }

Questo programmino estrae tutti i link contenuti in un file HTML e li stampa sullo schermo. Nella prima riga vengono passate anche delle opzioni al perl: -n significa esegui il programma che segue per ogni riga letta e -00 significa leggi il file di input un paragrafo alla volta.
Così se questo programma viene chiamato ``estrai_link'', basta dare il comando:

$ estrai_link pagina.html

per avere come output tutti i link presenti nel file. Il programma è composto da un ciclo while che testa il risultato di un pattern matching: se la stringa è stata trovata nella riga (paragrafo) corrente, allora viene stampata. La regular expression m{...} identifica una espressione HTML del tipo:

Nelle righe dalla 4 alla 6 si cerca la parte del link. Vengono usate delle espressioni del tipo \s , che rappresentano la classe dei caratteri spazio (nel nostro caso sono lo spazio, il tab e l'andata a capo).


La riga 7 cerca un carattere appartenente all'insieme ["'] e viene conservata memoria del carattere trovato (le parentesi tonde individuano una match da ricordare). Questo perché la stringa che compone il link può essere circondata da singoli o doppi apici: se il primo apice trovato è singolo, lo sarà anche quello di chiusura e lo stesso succede per i doppi apici. In pratica in HTML sono possibili le due scritture:

e

La riga 8 fa il match del link e ne ricorda la stringa (è tra parentesi tonde). Il quantificatore, cioè i metacaratteri che indicano quante volte è ripetuto il carattere cercato è di tipo ``*?''. Questo vuol dire che nella ricerca della stringa individuata dalla regular expression bisogna sempre tenere presente il carattere successivo da trovare e ci si deve fermare quando lo si trova. In pratica raccogliendo i caratteri che formano il link mi devo fermare quando trovo l'apice successivo, segnalato nella riga 9 dalla variabile \1, che contiene il carattere letto nell'espressione contenuta nella prima coppia di parentesi tonde (["']).



La riga 10 dice che possono seguire una serie di caratteri, terminati comunque dal carattere '>'.


Nella riga 11 si dice che la regular expression è di tipo extended (x): gli spazi e le andate a capo, inserite per migliorarne la leggibilità devono essere tralasciati nel pattern matching. La regular expression deve essere inoltre case insensitive (i), deve poter individuare tutti i link presenti nella riga di input e non solo il primo (g) e deve poterli individuare in una stringa multilinea (s).


La riga 13 stampa la strina individuata dall'espressione contenuta nella seconda coppia di parentesi.


Questo programmino agisce sempre su un file HTML e ricerca e sostituisce un link con un altro.

#!/usr/bin/perl -pi.bak -00

s[
(
<\s*A \s+HREF \s*=\s* (["']) ) http://dominio\.it/dir/ ( (.*?) \2 .*?>
)
][${1}http://www.dominio.it/dir2/$3]xsgi;

Se siete riusciti a seguire la tortuosa spiegazione del primo programma, avete già capito gratis cosa fa questo. Unica nota: l'opzione -p serve per eseguire il programma su ogni riga (paragrafo anche in questo caso, grazie all'opzione -00) del file di input e stampa automaticamente la riga letta dopo aver applicato la ricerca e sostituzione, mentre l'opzione -i.bak serve per far eseguire il programma sul file di input, salvandone una copia con estensione .bak.
Se chiamiamo il programma cambia_link, dando il comando:

$ cambia_link file.html

ritroviamo alla fine un file file.html in cui sono stati modificati i link e un file file.html.bak che è il file originale.


Questo programmino usa il modulo UserAgent per leggere una pagina da un server HTTP e stamparla sullo schermo. Niente di eccezionale così com'è, ma le estensioni sono lasciate alla vostra fantasia.

#!/usr/bin/perl

use LWP::UserAgent;

$agent = new LWP::UserAgent;
$request = new HTTP::Request('GET', 'http://gretux/');
$response = $agent->request($request);
print $response->content;


Per dimostrare l'attitudine che ha il Perl di poter scendere a livello di sistema, questo programmino sintetizza un pacchetto TCP/IP Out of Band e lo spedisce alla porta 139 di un computer:

#!/usr/bin/perl

use IO::Socket;

IO::Socket::INET->new(PeerAddr => "$ARGV[0]:" .
(defined $ARGV[1] ? $ARGV[1] : "139"),
Proto => "tcp")->send("bye",MSG_OOB);

Se chiamiamo questo programma crash, dando il comando:

$ crash host.dominio.it

verrà spedito un singolo pacchetto TCP/IP al computer host.dominio.it, sulla porta 139 (default).
Aggiungendo un ulteriore parametro possiamo specificare la porta verso la quale spedire il nostro pacchetto.


Se ti è piaciuto l'articolo, iscriviti al feed per tenerti sempre aggiornato sui nuovi contenuti del blog:

lunedì 15 novembre 2010

Xfce ambiente desktop per vari sistemi Unix-like, un ottimo compromesso tra leggerezza e funzionalità.

Xfce è un ambiente desktop per vari sistemi Unix-like (come GNU/Linux o FreeBSD) che richiede meno risorse dei più blasonati GNOME e KDE, risultando così un ottimo compromesso tra leggerezza e funzionalità.

Xfce è basato sul toolkit GTK+, ed è composto da numerose applicazioni:

* xfwm4 (il window manager)
* xfce4-panel (il caratteristico pannello)
* xfdesktop (il gestore del desktop)
* xfce4-session (il gestore delle sessioni)
* xfprint (il gestore di stampa)

Più diverse librerie ed altri strumenti utili come Thunar (il file manager), Mousepad (l'editor di testo), Orage (il calendario) ecc..

xfce4-panel

Xfce4-panel è un programma di Xfce che gestisce i pannelli, che possono contenere diverse applet: dai classici launcher, cioè icone che avviano un determinato programma (o comando), a strumenti più complessi come un selettore per i workspace, una lista delle finestre aperte, o un'applet che controlli la posta elettronica. Xfce4-panel, quindi, contenendo gran parte del necessario per interagire con il resto del Desktop environment, corrisponde ad una delle applicazioni fondamentali di Xfce.

xfwm4

Xfwm4 è il window manager ufficiale del progetto Xfce e mantiene le caratteristiche di tale desktop environment. Questo window manager è stato il primo a integrare un compositor opengl, permettendo, anche ad un computer poco potente, di avere effetti grafici come ombre e trasparenze.
Xfce nelle distribuzioni Linux [modifica]

Xfce non è presente di default (come Gnome e KDE) in gran parte delle distribuzioni GNU/Linux . Poche distribuzioni usano Xfce come ambiente predefinito ma quasi tutte le altre lo supportano come componente facoltativo.

Le distribuzioni che usano Xfce come ambiente predefinito sono:

* Archie
* BeleniX (OpenSolaris)
* Debian se selezionato al momento dell'installazione
* Dreamlinux
* dyne:bolic
* FreeSBIE (FreeBSD LiveCD)
* KateOS
* Kwort
* Linux Mint (Xfce Community Edition)
* Mandriva (Xfce Live CD)
* SAM Linux
* Sidux
* SLAX (Popcorn Edition)
* VectorLinux (Standard Edition)
* Wolvix (usa Fluxbox anziché Xfwm)
* Xfld (Xfce live demo)
* Zenwalk
* Parted Magic
* SaxenOS
* Xubuntu
* Fedora Xfce Spin [1]
* OpenSUSE se selezionato al momento dell'installazione
* Linpus se selezionato come alternativa all'interfaccia predefinita

Links:



Imagehosting at Imageloop

Imagehosting at Imageloop

Imagehosting at Imageloop

Imagehosting at Imageloop

Imagehosting at Imageloop

Imagehosting at Imageloop

Imagehosting at Imageloop

Imagehosting at Imageloop

Imagehosting at Imageloop

Crea le tue foto ed immagini come Slideshow per eBay, Netlog, MySpace, Facebook o la tua Homepage!Mostrare tutte le immagini di questo Slideshow


Se ti è piaciuto l'articolo, iscriviti al feed per tenerti sempre aggiornato sui nuovi contenuti del blog:


domenica 14 novembre 2010

300 servizi di Social Bookmarking per incrementare il traffico del tuo blog.

Il social bookmarking è un motodo per conservare online la lista dei propri siti preferiti, catalogarli e condividerli con gli altri.

I siti di social bookmarking organizzano il loro contenuto tramite l'uso di tag (etichette, categorie).

La popolarità di questi siti è in costante crescita, in quanto sono uno strumento facile e intuitivo per individuare, classificare, ordinare e condividere le risorse Internet attraverso la pratica dell'etichettatura e categorizzazione (tagging).

Ulteriori risultati possono essere ottenuti raggruppando insieme più tag.


Qualcuno si è preso la briga di catalogare 250 servizi di social bookmarking (180 internazionali e 70 legati alla nazionalità di origine). Noi abbiamo aggiunto qualcuno in più sopratutto Social Bookmarks italiani.


Più sotto viene riportata la lista con i link attivi e qualche correzione o aggiunta (tipo l’interessante Grazeit). Ma prima i commenti: come web utility pura, su tutti emerge Spurl.net, il più semplice (grazie ad un formidabile plugin si integra perfettamente con il browser simulando sia il bottone “salva nei preferiti”, sia la tipica finestra laterale con la struttura ad albero dei preferiti organizzati in cartelle e sottocartelle) e nello stesso tempo completo (permette di catalogare sia in cartelle, sia con tags ed ha un motore di ricerca interno). Spurl.net permette anche di condividere i tuoi preferiti rendendo pubbliche tutte o solo alcune delle tue cartelle.

Aggiungiamo Foxmarks nella lista: ha qualcosa in meno rispetto a Spurl ma presenta la fondamentale opzione di sincronizzazione tra i bookmark offline con quelli salvati online in una struttura ad albero. Tra i 300 della lista incuriosiscono i social bookmarks in lingua araba (http://www.darabet.com) e in cinese (http://www.hemidemi.com).

Ormai l'elenco è quasi infinito. I suggerimenti in merito non vengono pagati ma si molto graditi.


Tra gli italiani: Segnalo e OkNotizie i più quotati, senza dimenticare Liquida, Il Bloggatore, Zic o ZioBudda se il tuo blog parla specificamente di Linux.

Da notare che alcuni di questi servizi, oltre a fornire traffico ad un sito possono anche essere ottime fonti di autorità per animare il PageRank del tuo sito personale. Anche per questo col tempo i servizi di bookmarking sono diventati dei veri e propri aggregatori di news rischiando di smarrire la natura di web utility. La fame di PageRank può fare brutti scherzi e qualche webmaster ha cominciato ad usare alcuni di questi servizi per produrre spam pubblicitario abbassando di molto l’autorità sociale delle segnalazioni. Per difendere la qualità dei propri contenuti, alcuni servizi sono corsi ai ripari introducendo nei link l’attributo “nofollow” (il caso più famoso è Wikipedia).

In definitiva, se vuoi mostrare al mondo il tuo blog, i social bookmarks restano ancora il miglior sistema di web marketing a costo zero ed i punti di riferimento preferiti dai webmaster di tutto il mondo sono Digg.com, Netscape.com, Stumbleupon.com, Technorati.com e del.icio.us. Ecco la lista dei 180 servizi di social bookmarking in inglese o internazionali (ordine alfabetico).

Seafight 468x60

Tutti i giorni l'elenco aumenta, se qualcuno vuole collaborare volentieri aggiungo la sua segnalazione nell'elenco. E' una eccellente fonte d'informazione che può essere utile a tutti.

Ed ora un giro intorno al mondo con alcuni servizi di social bookmarking divisi per lingua di origine:

Arabo

Brasiliano

Cinese

Coreano

Francese


Giapponese

Italiano


Get Paid to Blog About the Things You Love

Lettone

Olandese

Polacco

Spagnolo


Tedesco

Vietnamita


Se ti è piaciuto l'articolo, iscriviti al feed per tenerti sempre aggiornato sui nuovi contenuti del blog:

venerdì 5 novembre 2010

L'importanza del nome: Il Software Libero e le sue origini.

Fin dagli anni '60, esistevano comunità, specialmente in ambito universitario, in cui era consuetudine condividere con altri il codice sorgente dei programmi per poterlo modificare in base alle proprie esigenze.

Fu questa la realtà in cui si inserì Richard Stallman quando, nel 1971, iniziò a lavorare per il laboratorio di Intelligenza Artificiale presso il Massachusetts Institute of Technology (MIT).


Come afferma lo stesso Stallman, "Non chiamavamo il nostro software "Software Libero", poiché questa espressione ancora non esisteva, ma si trattava proprio di questo."


Le origini della Free Software Foundation (FSF - Fondazione per il Software Libero), risalgono al 1985, quando Richard Stallman, dopo aver lasciato il lavoro al MIT, decise di commercializzare il suo editor libero Emacs per guadagnarsi da vivere.


Emacs rientrava in un progetto più vasto: la creazione di un sistema operativo compatibile con Unix ed interamente composto da Software libero. Tala sistema venne battezzato da Stallman GNU, dall'acronimo ricorsivo "GNU is Not Unix".


Scopo primario della FSF era di reperire i fondi per lo sviluppo del Software Libero.
La definizione di Software Libero risale proprio a quegli anni.


Il Software Libero garantisce all'utente 4 libertà fondamentali:

  • libertà di eseguire il programma, per qualsiasi scopo (Libertà 0).
  • libertà di studiare come funziona il programma, e adattarlo alle proprie necessità (Libertà 1). L'accesso al codice sorgente ne è un prerequisito.
  • libertà di ridistribuire copie in modo da aiutare il prossimo (Libertà 2).
  • libertà di migliorare il programma, e distribuirne pubblicamente i miglioramenti, in modo tale che tutta la comunità ne tragga beneficio (Libertà 3). L'accesso al codice sorgente ne è un prerequisito.

Un programma è considerato Software Libero se l'utente gode di tutte queste libertà.
È bene evidenziare che la definizione di Software Libero non impedisce la vendita di un programma, in questo caso si parla di Software Libero commerciale.


Copyright o copyleft?

Un software per rimanere libero, dev'essere protetto da una licenza e da un copyright.
Al termine copyright, in italiano: diritto di autore, è comunemente associata l'impossibilità di copiare, ridistribuire, modificare alcunché senza il permesso esplicito dell'autore.


Nel 1985, Stallman ricevette una lettera sulla cui busta l'autore aveva scritto alcune frasi argute, tra cui: copyleft - tutti i diritti rovesciati.


"Utilizzai l'espressione "permesso d'autore" per battezzare il concetto di distribuzione che allora stavo elaborando".


Il termine copyleft ha origine da un gioco di parole: copy = copia e left = sinistra ma anche lasciare, permettere, in contrapposizione a right = destra, ma anche diritto.


Il copyleft, in italiano: permesso d'autore, utilizza le leggi sul diritto d'autore (copyright) per ottenere l'effetto opposto: garantire all'utente il permesso di eseguire, copiare e modificare il software e di distribuirne versioni modificate, impedendo però nello stesso tempo l'aggiunta di restrizioni che lo renderebbero non libero, cosa che può avvenire ad esempio col software reso di pubblico dominio.


La licenza GNU GPL (GNU General Public License) è l'implementazione per il copyleft scritta ed utilizzata dalla FSF per garantire all'utente le libertà citate nella definizione di Software Libero.


La Debian Free Software Guidelines.

Nel contratto sociale stipulato con la comunità del software libero, gli sviluppatori Debian garantiscono che Debian/GNU Linux resterà sempre al 100% Software Libero.
Debian considera Software Libero tutti quei programmi che seguono le specifiche dettate dalla Debian Free Software Guidelines (DSFG - Linee Guida Debian per il Software Libero):


  1. Libera Distribuzione
    La licenza di un componente Debian non può impedire a terzi di vendere o distribuire il software come componente di una distribuzione software aggregata contenente programmi da numerose altre fonti. La licenza non può richiedere una percentuale sul diritto d'autore o altra quota per tale vendita.
  2. Codice Sorgente
    Il programma deve includere il codice sorgente, e deve permettere la distribuzione sia come codice sorgente sia in forma compilata.
  3. Lavori Derivati
    La licenza deve permettere modifiche e lavori derivati, e deve permettere che siano distribuiti sotto gli stessi termini della licenza del software originale.
  4. Integrità del Codice Sorgente dell'Autore
    La licenza può impedire che il codice sorgente sia distribuito in forma modificata solo se la licenza permette la distribuzione di "patch file" assieme al codice sorgente al fine di modificare il programma prima della compilazione. La licenza deve permettere esplicitamente la distribuzione di software derivato da codice sorgente modificato. La licenza può richiedere che i lavori derivati portino nome o versione differenti da quelli del software originale. (Questo è un compromesso. Il gruppo Debian incoraggia tutti gli autori a non impedire che alcun file, risorsa o codice, possa essere modificato.)
  5. Nessuna Discriminazione di Persone o Gruppi
    La licenza non può discriminare alcun gruppo o persona.
  6. Nessuna Discriminazione di Campi di Impegno
    La licenza non può impedire a nessuno di far uso del programma in un determinato campo di impegno. Per esempio, non può impedire l'uso del programma negli affari o nella ricerca genetica.
  7. Distribuzione della licenza
    I diritti applicati ad un programma devono essere resi effettivi a tutti quelli ai quali viene ridistribuito senza bisogno di applicare licenze addizionali prodotte da terzi.
  8. La licenza Non Deve Essere Specifica per Debian
    I diritti applicati al programma non devono dipendere dal fatto che il programma faccia parte di un sistema Debian. Se il programma è estratto da Debian e usato o distribuito senza Debian ma altrimenti entro i termini della licenza del programma, tutte le parti ai quali il programma è ridistribuito dovrebbero avere gli stessi diritti di quelle a cui sono concesse assieme al sistema Debian.
  9. La licenza Non Può Contaminare Altro Software
    La licenza non deve porre restrizioni su altro software che è distribuito assieme al software concesso in licenza. Per esempio, la licenza non deve insistere sul fatto che tutti i programmi distribuiti sullo stesso supporto debbano essere free software.
  10. Esempi di licenza
    Le licenze GPL, BSD e Artistic sono esempi di licenza che consideriamo "free".


Bruce Perens, scrisse la prima bozza di questo documento verso la metà del 1997. La versione definitiva della DFSG vide la luce un mese più tardi, al termine di una lunga conferenza via e-mail cui presero parte gli sviluppatori Debian.


Tra tutte le distribuzioni Linux, Debian è quella che meglio incarna il concetto di sistema GNU predicato da Richard Stallman, distinguendo apertamente tra pacchetti liberi e non liberi.
Debian garantisce il supporto a sviluppatori ed utenti di software non liberi configurati per girare con il proprio sistema, ma non permetterà mai che il sistema Debian/GNU Linux dipenda da qualcosa che non sia libero.


Open Source.

Il termine free in inglese ha molti significati: i più noti sono libero e gratuito. Pertanto nei paesi anglosassoni il termine free software può significare sia Software Libero, sia software gratuito.


A partire dal 1998, parte della comunità del Software Libero, iniziò ad utilizzare il termine Open Source (Sorgente Aperto). Bruce Perens eliminò dalla DFSG i riferimenti specifici a Debian e la utilizzò per creare la Open Source Definition (OSD).


Alcuni membri della Open Source Iniziative (OSI), intendevano in questo modo eliminare l'ambiguità propria del termine free.


Altri invece, intendevano allontanarsi dalla filosofia di Richard Stallman, ritenuta troppo retorica ed idealista, per attrarre l'attenzione delle imprese, restie a sentir parlare di libertà e legate alla logica del profitto. Nelle FAQ sul sito della OSI si afferma che "l'Open Source è un programma di marketing per il Software Libero".


Un anno più tardi, in un annuncio su Slashdot, Richard Stallman prese le distanze dal movimento Open Source perché esso evitava di parlare agli utenti di libertà, principi e diritti.


Eric Raymond, autore del libro "La Cattedrale e il Bazar" ed esponente di primo piano del movimento Open Source, replicò affermando che il pomo della discordia tra la OSI e la FSF non riguardava i principi, ma le tattiche e la retorica.


A chi sostiene che "occorre parlare di libertà", Raymond risponde: "Zitto e mostraci il codice"


Software Libero vs. Open Source.

Benché i due termini siano spesso utilizzati per indicare la stessa cosa, il significato ovvio di Open Source è: puoi guardare il codice sorgente. Questo è vero non solo per il Software Libero, ma anche per software semiliberi e addirittura per qualche software proprietario.


L'Open Source è diventato di moda, negli ultimi tempi non sono rari i casi di aziende che utilizzano tale termine in frasi ambigue al solo scopo di attrarre l'attenzione verso prodotti proprietari.


Ancor più preoccupante il fenomeno di aziende Linux che inseriscono in posizioni chiave del loro sistema, software proprietari quali installer grafici o tool per la configurazione, definendoli software a valore aggiunto.


L'evento più emblematico di questa situazione ambigua proviene dallo stesso movimento Open Source ed è il caso della licenza Apple APSL (Apple Public Source License).


Proprio questa licenza rappresenta la prima vera spaccatura tra il movimento Open Source e la comunità del Software Libero, la OSI ha infatti dichiarato conforme alla Open Source Definition la versione 1.2 di tale licenza, mentre la FSF, pur ammettendo che Apple ha compiuto due grandi passi in avanti rispetto la versione 1.0, non la considera ancora una licenza libera.


Il software rilasciato sotto licenza APSL è quindi Open Source, ma non è Libero.


D'ora in poi, i due termini non potranno più essere usati come sinonimi, quindi, evitate di utilizzare il termine Open Source, quando volete riferirvi al Software Libero.

fonte: Pluto


Se ti è piaciuto l'articolo, iscriviti al feed per tenerti sempre aggiornato sui nuovi contenuti del blog:

Recent Posts

I miei preferiti

Assicurazioni & Finanze

Antipixels

iFeed iwinuxfeed.altervista.org Blogstreet - dove il blog è di casa Aggregatore di blog Vero Geek ”Giornale Feedelissimo Iscrivi Paperblog : le migliori informazioni in diretta dai blog Add to Technorati Favorites Directory dei blog italiani voli economici firenze Italian Bloggers tutto blog Computers (Blogs) - TOP.ORG BlogItalia.it - La directory italiana dei blog Feed XML offerto da BlogItalia.it Sito preferito web counter Sponsorizzati blog di qualita' Il Bloggatore diigo it Computer Blogs - BlogCatalog Blog Directory Motori ricerca Aggregatore ElencoSiti Yourpage live news aggregator Miglior Blog Notizie Informatiche