Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Infrastructure
Panoramica su S.C.I. con esempi pratici.
A cura di Luca Ferrari, luka4e@gmail.com
www.sci-project.foxlinux.org
Il problema: le distribuzioni
●
Ogni distribuzione diversa di GNU/Linux ha programmi
propri per configurare il sistema
●
Alcune distribuzioni forniscono strumenti ben fatti, altre
peccano in qualità e quantità
●
Molte volte gli strumenti grafici e testuali fanno cose
diverse tra loro, non c'è omogeneità
Il problema: gli utenti
●
Un utente, quando cambia distribuzione, deve imparare
ogni volta da zero ad usare strumenti diversi che fanno in
realtà la stessa cosa
●
Molte volte capita che l'utente non trovi neppure lo
strumento che gli serve, perchè la distribuzione non lo
fornisce
Il problema: gli sviluppatori
●
Uno sviluppatore se vuole fornire funzionalità di sistema al
proprio programma, deve conoscere sempre in che
distribuzione sta girando
●
Deve prevedere e gestire una moltetudine di casi: cambio
di distribuzione, cambio di versione di distribuzione...
Il problema: i distributori
●
Ogni distribuzione per essere funzionale deve sviluppare
in proprio strumenti utili per configurare il sistema
●
I programmatori si devono preoccupare di creare strumenti
grafici (Gtk, Qt), testuali, interattivi...
●
Il tempo impiegato è enorme
L'obbiettivo
Creare un unico sistema di configurazione capace di:
●
configurare ogni parte del sistema
●
funzionare in qualsiasi distribuzione
I benefici: gli utenti
●
Gli utenti saranno in grado di configurare qualsiasi
distribuzione supportata da S.C.I. dato che gli strumenti
sono gli stessi
●
In base alle esigenze, l'utente potrà scegliere tra strumenti
testuali e grafici, potendo infatti configurare le stesse cose
nello stesso modo
I benefici: gli sviluppatori
●
Utilizzando le funzionalità di S.C.I. essi potranno
agganciarsi al sistema senza preoccuparsi di come lavora
a basso livello il sistema
●
Il programma girerà allo stesso modo anche ad un
eventuale cambio di versione della distribuzione se essa è
supportata da S.C.I.
I benefici: i distributori
●
Tutte le distribuzioni potranno offrire strumenti che
configurano qualsiasi cosa del sistema, sia in modalità
grafica che testuale
●
Se una distribuzione vuole offrire strumenti personalizzati,
utilizzando le funzionalità di S.C.I., non ci si dovrà più
preoccupare di come lavora il sistema a basso livello,
perchè è S.C.I. che dialoga con il sistema
Esempi
Diamo ora qualche esempio utile per capire
l'effettiva utilità di S.C.I. e come lavora il tutto
Esempi: configurare la rete
Bill è un utente e vuole configurare un'intefaccia di rete in
Ubuntu, con S.C.I. egli deve solo:
●
Aprire il centro di controllo di S.C.I.
●
Aprire lo strumento per la rete
●
Impostare le proprie preferenze.
Esempi: configurare la rete
E se ora Bill volesse configurare un'intefaccia di rete in
Slackware dovrebbe usare la console?
No, semplicimente basta:
●
Aprire il centro di controllo di S.C.I.
●
Aprire lo strumento per la rete
●
Impostare le proprie preferenze.
Esempi: configurare la rete
Esatto, Bill dovrebbe fare esattamente le stesse cose allo
stesso modo, senza preoccuparsi di console, strumenti
grafici o un misto dei due.
Per Bill è bastato utilizzare S.C.I. allo stesso modo in due
distribuzioni diverse, senza aver dovuto imparato nulla di
nuovo!
Esempi: configurare la rete
Steve è uno sviluppatore e vuole dare la possibilità al suo
software di poter attivare/disattivare la rete.
Come fare con decine e decine di distribuzioni diverse?
Esempi: configurare la rete
Utilizzando le API di S.C.I. egli potrebbe ad esempio gestire
da codice la rete con:
enableNetworkInterface(”eth0”)
oppure:
disableNetworkInterface(”eth0”)
Esempi: configurare la rete
Oppure:
isNetworkAvailable()
per sapere lo stato della rete;
getAllNetworkInterfaces()
per avere tutte le intefacce di rete;
e così via...
Esempi: configurare la rete
Steve è riuscito così a far dialogare con il sistema il
proprio software senza essersi preoccupato della
distribuzione su cui esso stava girando!
Esempi: configurare la rete
Linus è un programmatore di Ubuntu e vuole fornire un tool
in Qt per gestire le connessioni di rete.
Senza dover dialogare direttamente con il sistema, egli
utilizza S.C.I. che si accorge di Ubuntu e si comporta di
conseguenza.
Esempi: configurare la rete
Per Linus ora si tratta solo di creare una finestra con qualche
pulsante e utilizzare, ad esempio, i metodi già noti:
enableNetworkInterface(”wlan0”)
disableNetworkInterface(”wlan0”)
Esempi: configurare la rete
E se volesse creare un tool in GTK?
Nulla di più semplice, ciò che cambia è solo il codice per la
finestra, per dialogare con il sistema si utilizza sempre:
enableNetworkInterface(”wlan0”)
disableNetworkInterface(”wlan0”)
Lo scheletro di S.C.I.
Ma come è lavora S.C.I.?
Com'è composto?
Lo scheletro di S.C.I.
S.C.I. è diviso in due parti:
●
Il server che deve soddisfare le richieste dei client
●
Il client che da gli ordini al server e riceve i risultati
dallo stesso
Lo scheletro di S.C.I.
Il Server:
●
E' un demone, un programma che parte all'avvio del
sistema e resta sempre attivo
●
Deve soddisfare le richieste dei client e fornire i
risultati delle elaborazioni
Lo scheletro di S.C.I.
Il Server:
●
E' diviso in sottomoduli con compiti diversi:
●
gestione utenti
●
gestione rete
●
gestione servizi....
●
I sottomoduli possono dialogare tra loro ed effettuare
richieste l'uno con l'altro
Lo scheletro di S.C.I.
Il Server:
●
Ha una struttura a cipolla e fornisce un'interfaccia
esterna visibile ai client e accessibile attraverso
richieste DBUS
●
Il funzionamento interno del server non è visibile e non
deve preoccupare i client
Lo scheletro di S.C.I.
Il Server:
●
All'avvio capisce in che distribuzione sta girando e si
comporta di conseguenza:
Carica i moduli adatti alla distribuzione in uso, senza
compromettere il funzionamento dei client
Lo scheletro di S.C.I.
Il Client:
●
Non si preoccupa di come lavora il server o in che
distribuzione sta girando
●
Il suo unico lavoro è quello di fornire un'interfaccia
all'utente e impartire comandi al server
Lo scheletro di S.C.I.
Il Client:
●
Può essere scritto in qualsiasi linguaggio di
programmazione che supporti DBUS
●
Il client infatti utilizza chiamate DBUS per dialogare con
il server
Lo scheletro di S.C.I.
Il Client:
●
Esempi di richieste DBUS del client al server:
●
addNewUser(“Bill”)
●
setSystemLanguage(“Italian”)
●
restartService(“samba”)
●
isNewUpdatesAvailable()
●
upgradeSystem()
●
Lo schema di S.C.I.
Server S.C.I.
Modulo
Modulo Modulo Modulo Modulo
gestione
gestione rete gestione utenti gestione servizi ...
applicazioni
Server S.C.I.
Gentoo
Gentoo
Gentoo
Gentoo
Ubuntu
Ubuntu
Ubuntu
Ubuntu
Fedora
Fedora
Fedora
Debian
Debian
Fedora
Fedora
Debian
Debian
SUSE
SUSE
SUSE
SUSE
SUSE
...
...
...
...
...
Modulo gestione rete Modulo gestione utenti Modulo gestione servizi Modulo gestione applicazioni Modulo gestione ...
Server S.C.I.
Gentoo
Gentoo
Gentoo
Gentoo
Ubuntu
Ubuntu
Ubuntu
Ubuntu
Fedora
Fedora
Fedora
Debian
Debian
Fedora
Fedora
Debian
Debian
SUSE
SUSE
SUSE
SUSE
SUSE
...
...
...
...
...
Modulo gestione rete Modulo gestione utenti Modulo gestione servizi Modulo gestione applicazioni Modulo gestione ...
Server S.C.I.
Diversi esempi di utilizzo di S.C.I. si possono trovare
in questa pagina:
www.sciproject.foxlinux.org/wiki/Examples_Usage
Per maggiori informazioni
Il wiki di S.C.I.:
www.sciproject.foxlinux.org
Stiamo cercando programmatori in Python che
conoscano bene GNU/Linux