Da dove iniziare a sviluppare Ovvero, un'infarinatura su: Componenti principali Strumenti di sviluppo Esempio pratico e pacchettizzazione A cura di: Luigi Maselli -
Programmare per un sistema operativo libero non è molto diverso dal programmare per un sistema proprietario, ci sono librerie, linguaggi di programmazione, ambienti di sviluppo,.. La principale differenza è che il controllo sull'evoluzione del sistema l'hai tu e non un'azienda unica. Questo significa anche che ci sono molte scelte possibili.
Il panorama del software libero e open source
Cos'é Linux?
È un Detersivo? VERO
È un Kernel? VERO
È un sistema operativo? FALSO
Qual'é il sistema operativo?
Come si chiama? e.. Gnome/Freebsd Android/Linux Opemoko GNU/Cygwin/Windows ??? GNU/Linux GNU/Linux/Ubuntu Sì, ma dove lo scarico? Sì, e X dove lo metti? GNU/X/Freedesktop/Gnome/Kde/../Linux Nah, troppo lungo
Come si chiama?
È un sistema operativo? FALSO No, ma per comodità molti lo chiamano così..e pace all'ambiguità Linux
Le librerie principali Freedesktop D-Bus: scambio messaggi/servizi tra applicazioni Gstreamer: framework multimediale PolicyKit: gestione permessi delle azioni delle applicazioni PackageKit: astrazione tra I vari sistemi di pacchettizzazione (anche mobile) Cairo: widget vettoriali Telepathy: astrazione per IRC, MSN, Jabber GeoClue: astrazione su GPS, localizzazione IP,.. [...]
Ora ci tocca fare qualche scelta.. NB: Non esiste il componente “perfetto”, c'è sempre qualche scelta da prendere a seconda del contesto. In generale quello che è semplice per gli umani non lo è per le macchine e viceversa.
Le scelte alternative possibili Librerie Freedesktop vs (mplayer, sudo, synaptic, pidgin..) perché è la retta via, anche se è ancora giovane. Gtk/GNOME vs Qt/Kde, per gusti personali, quindi Gconf, Glade, GVFS,.. Linguaggi di programmazione Ruby vs Python, Perl, C#, Java, C,.. perché è coinciso e leggibile. Strumenti di sviluppo Gedit vs Anjuta vs Monodevelop vs Eclipse Git vs Bazaar, Mercurial, CVS, SVN,.. Distribuzione.deb(Ubuntu/Debian) vs.rpm(Fedora, OpenSuse, Mandriva)
Esempio pratico
Interfaccia Grafica Glade 3 - disegnatore di GUI
gtk-builder-convert gui.glade gui.xml
Il codice in Ruby Gedit – Editor con plugin
Distribuzione (binaria) La struttura per il pacchetto.deb
Creazione del pachetto.deb dpkg-deb -b myapp-0.1
Installazione.deb Gdebi-gtk
Distribuzione (sorgente) DVCS – Git / Giggle / Github
Domande?
Riferimenti Kernel: Freebsd: GNU: Freedesktop: GNOME: Kde: Linguaggi di programmazione Gtk/C: Ruby: Python: Mono.NET: Text Editor e IDE Gedit: Gedit+plugin: Monodevelop: Eclipse: Anjuta: Altri strumenti Glade: Git: Giggle: Github: Bazaar: Launchpad: