Strumenti per lo sviluppo software in comunità Francesco Agnolazza e Luca Mezzalira Montebelluna Linux User Group 27 ottobre 2012 Castelfranco Veneto Agno && Syslac (MontelLUG) Linux Day 2012 27 ott 2012 1 / 22
Licenza d utilizzo Copyright c 2012, Francesco Agnolazza e Luca Mezzalira. Questo documento viene rilasciato secondo i termini della licenza Creative Commons (http://creativecommons.org). L utente è libero di: distribuire, comunicare al pubblico, rappresentare o esporre in pubblico la presente opera alle seguenti condizioni: Attribuzione Deve riconoscere la paternità dell opera all autore originario. Non commerciale Non può utilizzare quest opera per scopi commerciali. No opere derivate Non può alterare, trasformare o sviluppare quest opera. In occasione di ogni atto di riutilizzazione o distribuzione, deve chiarire agli altri i termini della licenza di quest opera. Se ottiene il permesso dal titolare del diritto d autore, è possibile rinunciare a ciascuna di queste condizioni. Le utilizzazioni libere e gli altri diritti non sono in nessun modo limitati da quanto sopra. Questo è un riassunto in lingua corrente dei concetti chiave della licenza completa (codice legale), reperibile sul sito Internet http://creativecommons.org/licenses/by-nc-nd/2.0/legalcode Agno && Syslac (MontelLUG) Linux Day 2012 27 ott 2012 2 / 22
Sommario 1 Project management Introduzione Applicativi 2 Version control Introduzione 3 Internazionalizzazione Idea Tecnica Agno && Syslac (MontelLUG) Linux Day 2012 27 ott 2012 3 / 22
Qual è uno dei maggiori punti di forza del software libero? Agno && Syslac (MontelLUG) Linux Day 2012 27 ott 2012 4 / 22
Comunità Il software libero (ma non solo) si sviluppa in comunità e spesso perché il processo non sfugga di mano è necessario l uso di alcuni tra questi strumenti: Mailing lists Wiki Controllo versioni (svn, git, mercurial,... ) Punta ad essere usato da tutti, e ascolta i suoi utenti: Bug tracking Internazionalizzazione Agno && Syslac (MontelLUG) Linux Day 2012 27 ott 2012 5 / 22
Mailing lists Cos è e come funziona É un sistema semplice per mandare mail a più persone evitando Cc: e Ccn: Scopi Utili per gruppi tematici, e non solo legati all informatica! Privacy Può essere in modalità pubblica o privata Cosa non è É diversa da una newsletter: qui possono scrivere tutti. Agno && Syslac (MontelLUG) Linux Day 2012 27 ott 2012 6 / 22
Wiki Cos è e come funziona É uno strumento efficace per l editing collaborativo Scopi Ottimo per howto e documentazione. Wikipedia Wikipedia è un esempio di wiki general purpose, ma si possono anche creare wiki ad hoc. Agno && Syslac (MontelLUG) Linux Day 2012 27 ott 2012 7 / 22
Bug tracker Cos è e come funziona Per il software libero è importante che siano gli utenti stessi a riportare i problemi del programma che usano. I bug tracker permettono di farlo in modo facile. Esempi Bugzilla Launchpad... Agno && Syslac (MontelLUG) Linux Day 2012 27 ott 2012 8 / 22
Version Control: Cosa e perché L idea di base è quella di gestire in modo intelligente i cambiamenti al codice sorgente dei programmi. Possibilità Backup Sincronizzazione Ripristino mirato a breve e lungo termine Tracciamento delle modifiche Branching & merging Agno && Syslac (MontelLUG) Linux Day 2012 27 ott 2012 9 / 22
Concetti di base Attori Repository Trunk Azioni locali Checkout Commit Revert Sync Diff Azioni sul repo Branch Merge Locking Agno && Syslac (MontelLUG) Linux Day 2012 27 ott 2012 10 / 22
Concetti di base Attori Repository Trunk Azioni locali Checkout Commit Revert Sync Diff Azioni sul repo Branch Merge Locking Agno && Syslac (MontelLUG) Linux Day 2012 27 ott 2012 10 / 22
Concetti di base Attori Repository Trunk Azioni locali Checkout Commit Revert Sync Diff Azioni sul repo Branch Merge Locking Agno && Syslac (MontelLUG) Linux Day 2012 27 ott 2012 10 / 22
Software e servizi Software Subversion Git Mercurial Servizi GitHub Gitorious Google Code Sourceforge Installazione personale Agno && Syslac (MontelLUG) Linux Day 2012 27 ott 2012 11 / 22
Prova pratica! Agno && Syslac (MontelLUG) Linux Day 2012 27 ott 2012 12 / 22
Internazionalizzazione: Cosa L internazionalizzazione è il processo di adattare il software a lingue diverse e differenze tecniche tra le varie regioni del mondo. Agno && Syslac (MontelLUG) Linux Day 2012 27 ott 2012 13 / 22
Vantaggi I vantaggi sono molti ed evidenti: Per lo sviluppatore maggiore diffusione del software Per l utente finale maggiore comodità d utilizzo Per tutti quanti ideale per approcciarsi al software libero Agno && Syslac (MontelLUG) Linux Day 2012 27 ott 2012 14 / 22
Contribuire La traduzione di progetti open è un attività fondamentale, ma alla portata di tutti: Non sono necessarie competenze tecniche particolari Non è necessario sapere come funziona il codice Sviluppatore e traduttore sono figure separate C è sempre bisogno di buoni traduttori Dà soddisfazione Agno && Syslac (MontelLUG) Linux Day 2012 27 ott 2012 15 / 22
Esempio: Ubuntu 12.10 Agno && Syslac (MontelLUG) Linux Day 2012 27 ott 2012 16 / 22
Gettext La soluzione universalmente diffusa è costituita dagli strumenti di GNU gettext Idea di base Tenere separati stringhe e codice. stringhe traduttore codice sviluppatore Agno && Syslac (MontelLUG) Linux Day 2012 27 ott 2012 17 / 22
Workflow 1. Estrazione Codice template (.pot) 2. Localizzazione Template file di lingua (.po) 3. Traduzione Traduzione file di lingua 4. Compilazione File di lingua file binario (.mo) Agno && Syslac (MontelLUG) Linux Day 2012 27 ott 2012 18 / 22
In pratica... 1. Estrazione : xgettext xgettext --language=python --keyword=_ --output=_i18n/project.pot *.py 2. Localizzazione : msginit msginit --input=_i18n/project.pot --output=_i18n/project.it_it.po --locale=it_it 3. Traduzione : editor di testo vi _i18n/project.it_it.po (tradurre manualmente :D) 4. Compilazione : msgfmt msgfmt --output-file=it_it/lc_messages/project.mo _i18n/project.it_it.po Agno && Syslac (MontelLUG) Linux Day 2012 27 ott 2012 19 / 22
In pratica... 1. Estrazione : xgettext xgettext --language=python --keyword=_ --output=_i18n/project.pot *.py 2. Localizzazione : msginit msginit --input=_i18n/project.pot --output=_i18n/project.it_it.po --locale=it_it 3. Traduzione : editor di testo vi _i18n/project.it_it.po (tradurre manualmente :D) 4. Compilazione : msgfmt msgfmt --output-file=it_it/lc_messages/project.mo _i18n/project.it_it.po Agno && Syslac (MontelLUG) Linux Day 2012 27 ott 2012 19 / 22
In pratica... 1. Estrazione : xgettext xgettext --language=python --keyword=_ --output=_i18n/project.pot *.py 2. Localizzazione : msginit msginit --input=_i18n/project.pot --output=_i18n/project.it_it.po --locale=it_it 3. Traduzione : editor di testo vi _i18n/project.it_it.po (tradurre manualmente :D) 4. Compilazione : msgfmt msgfmt --output-file=it_it/lc_messages/project.mo _i18n/project.it_it.po Agno && Syslac (MontelLUG) Linux Day 2012 27 ott 2012 19 / 22
In pratica... 1. Estrazione : xgettext xgettext --language=python --keyword=_ --output=_i18n/project.pot *.py 2. Localizzazione : msginit msginit --input=_i18n/project.pot --output=_i18n/project.it_it.po --locale=it_it 3. Traduzione : editor di testo vi _i18n/project.it_it.po (tradurre manualmente :D) 4. Compilazione : msgfmt msgfmt --output-file=it_it/lc_messages/project.mo _i18n/project.it_it.po Agno && Syslac (MontelLUG) Linux Day 2012 27 ott 2012 19 / 22
Traduzione in Python Prova pratica! Agno && Syslac (MontelLUG) Linux Day 2012 27 ott 2012 20 / 22
Bibliografia: i18n in altri linguaggi Esempi di tutorial per vari linguaggi: Python http://www.learningpython.com/2006/12/03/ translating-your-pythonpygtk-application/ Perl http://justatheory.com/computers/ programming/perl/modules/ dist-zilla-localetextdomain.html C/C++ http://oriya.sarovar.org/ docs/gettext_single.html Java http://docs.oracle.com/javase/ tutorial/i18n/index.html Agno && Syslac (MontelLUG) Linux Day 2012 27 ott 2012 21 / 22
Bibliografia: Version control Launchpad http://launchpad.net Github http://github.com Gitorious http://gitorious.org Sourceforge http://sourceforge.net Agno && Syslac (MontelLUG) Linux Day 2012 27 ott 2012 22 / 22