Quando i giornalisti fanno il loro dovere

Mi perdonerà Felipe se gli copio uno dei video scoperti sul suo sito, ma questo servizio di report sul software libero è davvero ben fatto e, a pochi giorni dal Linux Day, dovrebbe essere diffuso ai più. Le cose fondamentali che emergono da questo servizio sono:

  • la scuola dovrebbe insegnare l’utilizzo di software che uno studente può utilizzare anche a casa (non fosse altro che per fare i compiti): alcuni software liberi sono gratuiti e consentono questo passaggio; i software commerciali il più delle volte non dispongono di versioni “per studenti” (Microsoft Office, ad esempio, bisognerebbe comprarlo). Se non si fa in questo modo le scuole diventano i veicoli pubblicitari di una società privata soltanto.
  • E’ vero che uno studente può duplicarsi il Microsoft Office della scuola o scaricarselo da internet ma, politici, QUESTO E’ ILLEGALE!!! E noi insegniamo ai ragazzi l'”arte della pirateria”!!! Così facendo un ragazzo troverà normale non dover pagare un libro, un film, un videogioco o qualsiasi altra opera; uno studente deve imparare su strumenti che lui si può permettere di avere a casa legalmente!
  • Il software libero non è necessariamente gratuito; ma:
    • GNU/Linux è un sistema operativo gratuito;
    • Open Office è un software per l’ufficio (documenti, foglio di calcolo, data base e presentazioni) gratuito;
    • GIMP è un programma di grafica 2D gratuito;
    • Blender è un software di grafica 3D gratuito;
    • esistono software liberi e gratuiti per molte delle esigenze della pubblica amministrazione e delle scuole italiane.

Inoltre va sempre tenuto in mente che:

  • Uno studente o un professore potrebbero migliorare il software libero, avendo a disposizione i sorgenti: questo porterebbe ad avere strumenti sempre più affinati e migliori alle diverse esigenze.
  • La Microsoft con l’ultima release di Office ha stravolto l’interfaccia: se non siete abbastanza bravi, adesso dovrete prendervi un’altra patente informatica per imparare ad usarlo! Con Open Office l’interfaccia è sempre la stessa e volendo me la potrei riscrivere da solo.
  • Il software libero posso imparare ad usarlo, ma posso anche imparare com’è fatto dentro; il software commerciale lo posso usare nei limiti di ciò che detta la licenza d’uso (che nessuno, in genere, legge).
  • Il software libero lo posso copiare e modificare; il software commerciale al più riesco ad estenderlo attraverso aggiunte dall’esterno.
  • Il software libero per la pubblica amministrazione costerebbe pochissimo: supponiamo che un comune paghi un programmatore per sviluppare un software di fatturazione da distribuire come Software Libero (e gratuito); quel progetto potrebbe essere istantaneamente impiegato per tutti i comuni e le aziende italiane; il software potrebbe essere potenziato al solo costo di sviluppare l’aggiunta desiderata ed anche quest’ultima potrebbe essere distribuita a tutti: il vantaggio è evidente!

Vi lascio al video, diffondetelo:

In definitiva ricordo che software libero non significa software gratuito ma un software che da all’utente delle libertà che i software commerciali non consentono di ottenere. Anzi, politici, leggete bene le licenze d’uso di quello che acquistate con i nostri soldi!

Un saluto aperto.

Welcome to Europe, Mr Ballmer

Questo sito di news riporta che Microsoft, nei recenti accordi raggiunti con l’Unione Europea, ha dovuto sottoscrivere una dichiarazione in cui si impegna a rinunciare per sempre a qualunque rivalsa riguardante i propri brevetti nei confronti dei progetti open-source non commerciali. L’accordo fa riferimento nello specifico a tutti i brevetti che limitano l’interoperabilità con i sistemi Microsoft.
Mi chiedo se questa rinuncia sia davvero così importante visto che quei brevetti valgono solo negli USA, mentre questo impegno vale solo in Europa. Comunque dopo tutto il FUD che Ballmer ha prodotto con le sue dichiarazioni minacciose, è una notizia che lo ridimensiona notevolmente da quest’altra parte dell’oceano Atlantico.
A tutte le società dell’area Linux che sono venute a patti con Microsoft negli USA, possiamo dire: “venite qua… Nessuno vi torcerà un capello.”

WOW!

E’ ciò che ti fa esclamare Ubuntu ad ogni menu che scopri, ad ogni funzionalità in più che trovi e ammiri quel sistema che fino a pochi anni fa pochi sapessero cosa fosse e che ora è diventato il simbolo di una nuova forma di economia e di produzione di qualità.

E’ vero che di miliardi dietro a Linux ne sono stati investiti parecchi se contate i Big del settore come IBM, RedHat, Novell, Mandriva e, non ultima, la Canonical Ltd. La Canonical ha realizzato il sogno di molti appassionati del software libero: realizzare una distribuzione libera, basata su software liberi, ma senza impedire agli utenti di fare scelte proprietarie, che la Canonical “non supporta” (o “non sopporta”?), ed accessibile a tutti. E’ grazie ad essa che sono apparsi sul mercato i primi PC con Linux sopra.

Ma la vera novità e che Linux rappresenta davvero un’alternativa. Il software per Linux c’è, è bello da vedere, è facile da utilizzare, è coerente nelle varie incarnazioni dei desktop manager, è tecnologicamente avanzato. Pensate a Compiz, il sistema che, a parte gli effetti speciali davvero strabilianti, ha rinnovato l’utilizzo dei desktop multipli, ha introdotto il raggruppamento di finestre, le preview dei task in esecuzione, e tanto altro senza richiedere i computer ninja che richiede Windows Vista.

Pensate al fatto che Linux esiste da tempo, pur con qualche problema di compatibilità hardware, a 64 bit e che la versione a 32 bit gira velocissima anche su computer datati. Pensate a compilatori come GCJ che compila il codice Java in codice nativo (in realtà a parte la suite .Net completa, tutti i linguaggi di programmazione nascono direttamente su Linux). Basti pensare che Mac OS X non ha ancora una release completa di Java 6…forse ce l’avrà il Leopard ma mi sembra stupido dover acquistare un sistema operativo per dotarsi di un linguaggio che è Open Source.

E poi Open Office, c’è innanzitutto per Linux. E Blender, che è entrato nel novero dei software professionali per la grafica 3D. E poi la velocità e la sicurezza….questi aspetti a cui nessuno bada ma che rendono usabile l’intero sistema. E’ vero che Windows XP si blocca raramente (meno raramente di Mac OS X o Linux, ma più raramente dell’accoppiata Mac OS X + Parallels) ma solo se hai un bell’antivirus aggiornato ed un firewall che ti proteggono le spalle e che ti ciucciano quella manciata di Mhz e quei MB/S di transfer rate dall’HD e dalla rete.

Con Linux la tranquillità è data da software scritto bene ed assistito da una comunità che risolve i bug molto più rapidamente di una qualsiasi multinazionale, da un sistema operativo che si installa in 12-13 minuti (testato su un MacBook Pro e su un PC Dell PIV) mentre ti consente di navigare o giocare a MahJong.

Quest’ultima incarnazione di Ubuntu, la 7.10, si è presentata ai miei occhi reattiva, veloce, comoda da utilizzare con il sistema di installazione Synaptic (che utilizza il sistema Apt) e completa di quello che serve per iniziare (Open Office 2.3, Gimp, Ekiga, Pidgin, F-spot, GCC e qualche giochino). Certo se non avete un accesso alla rete sarà un pò più complicato installare i programmi…basterà andare da un amico che ha l’accesso ad internet col proprio cd live di Ubuntu, selezionare i pacchetti da installare, scegliere di copiare i pacchetti e non di installarli e copiarli dalla cartella /var/apt su una pennina. A questo punto tornate a casa ed installate il tutto….complicatissimo!!! E potrete stare tranquilli che a casa non avrete problemi di dipendenze perché quelle vengono individuate e scaricate automaticamente da Synaptic. A me è bastato installare compizconfig ed emerald per iniziare a giocare con gli effetti speciali di compiz (la foto parla da sola).

La mia l’ho detta, i miei due centesimi, tanto di moda, ve li ho dati….se avete ancora qualche dubbio ricordate che Sabato 27 Ottobre c’è il Linux Day. In tutta ITALIA!!! Accorrete numerosi!!!

Il bello delle idee libere…

…è che se ne arricchiscono tutti quanti. Leggevo oggi delle interessanti evoluzioni sullo sviluppo di LinQ, il language integrated query, vera innovazione della Microsoft nel suo nuovo .Net. Ora il LinQ approda anche sulla piattaforma Mono, il porting multipiattaforma di .Net, distribuito con licenza GPL/LGPL, vuoi perché la maggior parte dei suoi sviluppatori lavora in Novell, vuoi perché le librerie .Net si decompilano in modo semplicissimo (ma no, quelli di Mono queste cose non le fanno!). La Microsoft consente, attraverso le sue librerie, di utilizzare il LinQ su collezioni, file di testo, file XML e Database; in quest’ultimo caso il compilatore si preoccupa di tradurre le query LinQ in query SQL. Per quanto strano l’approccio funziona, ed anche bene, ma l’unico difetto è che l’unica piattaforma di database supportata è, ovviamente, SQL Server.

I Mono-Guys hanno iniziato la scrittura di una libreria, chiamata DBLinQ, che consentirà di sfruttare LinQ anche su altri database (e sopratutto su quelli open source). Questo è ovviamente una bella iniezione di fiducia nei confronti di un progetto che, dopo lo scellerato accordo Novell-Microsoft, ha gettato un’ombra pesante anche sul progetto Mono, che da Novell è sponsorizzato. Ma, come se non bastasse, l’articoletto mi ha fatto scoprire una estensione di LinQ che non immaginavo nemmeno: perché non sfruttare la potenza dell’accesso ai dati offerto da queste query integrate per eseguire codice parallelo su macchine Multi-Core? Già, perché? Ed infatti ci sono diversi gruppi di lavoro che hanno pensato di progettare delle estensioni per eseguire codice su dati distrbuiti su più core o addirittura per lavorare su framework per il grid computing: i due progetti si chiamano PLinQ e GridLinq (decisamente originali i nomi). Vi lascio ai vari LinQ per scoprire i dettagli di queste novità.

Zac

Brevetti&Co sfida Linux

L’aveva detto Steve Ballmer qualche giorno fa e ora è successo. Una società americana, tale “IP Innovation LLC”, ha citato in giudizio Red Hat e Novell per la violazione di un brevetto denominato “User interface with multiple workspaces for sharing display system objects” che questa società (a me) sconosciuta dice di possedere.
Apparentemente la Microsoft non c’entra in questa storia… Infatti anche la consorella Novell compare sul banco degli imputati. Tuttavia andando a guardare un po’ più da vicino chi si cela dietro l’iniziativa legale si scopre che nella società lavorano due ex-dirigenti Microsoft. Ma pensa un po’ che coincidenza.
Che dire? Speriamo che in Europa i brevetti sul software non ci siano mai… e che negli USA li riformino presto.

Prove tecniche di Groovy

Stasera mi volevo dilettare un pò a studiare Groovy, un progetto di un linguaggio di scripting moderno ed in grado di integrarsi a perfezione nel mondo di Java. Groovy, infatti, è sia un linguaggio interpretato che compilabile in Java byte code, rendendo pertanto molto snella la scrittura di nuove classi all’interno dei nostri progetti.

Groovy è un linguaggio dinamicamente tipizzato quindi un espressione del tipo:

def x = 5
def y = "Ciao Mondo"

sarà correttamente interpretata attribuendo alle variabili x ed y i giusti tipi, deducendoli dal valore assegnato. Altre caratteristiche rendono molto appetibile Groovy anche rispetto allo stesso Java. Ad esempio la presenza dei closures:

alquadrato = { it * it }

rappresenta la definizione di una funzione che moltiplica per se stesso un valore passato come parametro (di default “it” è un nome riservato al parametro). Quindi la chiamata:

[ 1, 2, 3, 4 ].collect(alquadrato)

restituirà l’array [1, 4, 9, 16]. Ciò che si può fare con i closures è limitato solo dalla nostra capacità di rendere incomprensibile un codice ò_ò.

Iniziamo con un semplice esempio:

package it.unile;

public class GClasse {
	def k =99 
	def s = "Ciao Mondo! Chissà perché ma ho in mente il numero"
	public void Print()
	{
		println(s+" "+k)
	}

}

Una classetina semplice che salveremo in un file GClasse.groovy all’interno della cartella src/it/unile. Il codice si distingue per la mancanza (opzionale) di “;” alla fine delle righe. Inoltre il comando di stampa su Standard Output è semplicemente “println”. In realtà Groovy è un linguaggio compatibile con la sintassi di Java; pertanto se non ricordate il costrutto per un ciclo for o un nome di tipo sappiate che la sintassi Java è ben accetta. Adesso supponiamo di voler integrare il codice Groovy in una applicazione Java.

Possiamo pensare di scrivere una classe java (src/it/unile/MainClass.java) nel seguente modo:

package it.unile;

import java.io.File;
import java.io.IOException;

import groovy.lang.GroovyClassLoader;
import groovy.lang.GroovyObject;

import org.codehaus.groovy.*;
import org.codehaus.groovy.control.CompilationFailedException;

public class MainClass {
	public static void main(String[] args) {
		GroovyClassLoader loader = new GroovyClassLoader();
		Class groovyClass;
		try 
		{
			groovyClass = loader.parseClass(new File("src/it/unile/GClasse.groovy"));
			GroovyObject groovyObject;
			groovyObject = (GroovyObject) groovyClass.newInstance();
			Object[] argos = {};
			groovyObject.invokeMethod("Print", argos);
		
		} catch (CompilationFailedException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		}		
	}
}

Il codice è stato scritto con l’aiuto del plugin Groovy per Eclipse, disponibile presso il sito di Groovy. Il resto lo ha fatto Eclipse ed i suoi “Quick Fix” una volta importato il jar di Groovy nel Build Path.
Per poter compilare questa classe dovrete inserire nel classpath la libreria groovy-all-1.0.jar disponibile nella distribuzione di Groovy. Questa classe inizializza un Class Loader che ci consente, dinamicamente, di poter istanziare una classe di tipo GClasse a partire dallo script GClasse.groovy. Ad ogni cambiamento che faremo sullo script, senza ricompilare, un nuovo run della classe MainClass (in realtà ogni volta che leggeremo ed istanzieremo il file GClasse.groovy) produrrà come risultato l’esecuzione del codice aggiornato! Il sistema è ottimo per poter estendere con facilità le funzionalità delle nostre applicazioni con dei plugin scriptabili. Si potrebbe pensare anche di generare dinamicamente codice Groovy in base alle scelte dell’utente.

Avete visto quante cose si possono fare con Groovy? Ci rivediamo la prossima volta per nuovi ed emozionanti attacchi d’arte….ehm…vabbè.

Bye

.NET diventa open source?

Se ne parlerà molto ed è giusto che kit lo riporti… Pare che Microsoft abbia deciso di aprire un po’ il codice di alcune librerie di .NET, nel senso che verrà svelato il loro codice, ma non potrà essere modificato e redistribuito… In altre parole se qualcuno trova un bug lo potrà correggere, ma non potrà diffondere la patch di suo pugno, ma dovrà consegnarla a Microsoft che la rigirerà al mondo se meritevole.
Ovviamente questo non è per nulla open source. La licenza usata manca di alcuni aspetti fondamentali (si veda la definizione ufficiale). Tuttavia questa mossa è interessante perché è un riconoscimento da parte di Microsoft che la comunità degli sviluppatori disseminati nel mondo è in grado di aggiungere valore ai suoi prodotti.