Ovvero come contribuire all'OCA sfruttando al meglio github. Scopriremo come orientarsi tra i vari repository e come 竪 strutturato un progetto; come muoversi tra guidelines e convenzioni; analizzeremo i principali strumenti messi a disposizione da github (issues e PRs).
Vedremo gli aspetti social che agevolano la collaborazione con la community e, non ultimo, lo scopo che anima tutto questo
- Alex Comba -
1 of 24
Downloaded 10 times
More Related Content
05 OCA, da Oggi Contribuisco Anch'io!
1. Agile Business Group - www.agilebg.com - info@agilebg.com
OCA: da Oggi Contribuisco Anch'io!
Alex Comba
Agile Business Group
2. Agile Business Group - www.agilebg.com - info@agilebg.com
OCA: Odoo Community Association
The Odoo Community Association, or OCA, is a nonprofit
organization whose mission is to support the
collaborative development of Odoo features and
promote its widespread use.
http://odoo-community.org/
3. Agile Business Group - www.agilebg.com - info@agilebg.com
OCA: organizzazione (1/3)
Teams
Community Backport Team ( OCB) Odoo additional and early bugfixes
Business Topics Teams (18) Accounting, Sales, Logistics,
Localization Teams (16) By country
Vertical Interest Teams (8) Hotel, Construction, Medical, ...
Connector Teams (7) Integrate Odoo with Magento, Sage, LIMS, ...
Community Maintainers Tools Team
http://odoo-community.org/page/List
4. Agile Business Group - www.agilebg.com - info@agilebg.com
OCA: organizzazione (2/3)
Ogni team pu嘆 essere composto da uno o pi湛 progetti.
5. Agile Business Group - www.agilebg.com - info@agilebg.com
OCA: organizzazione (3/3)
Ad ogni progetto corrisponde un repo su github.com/OCA
6. Agile Business Group - www.agilebg.com - info@agilebg.com
Struttura di un repo su github/OCA
Per ogni branch: [moduli] + .gitignore + .travis.yml + README.md
7. Agile Business Group - www.agilebg.com - info@agilebg.com
QA: Quality Assurance (1/3)
Per assicurare la qualit del codice rilasciato, OCA si avvale di alcuni
tools QA:
https://travis-ci.org/
https://coveralls.io/
Travis CI rileva automaticamente quando un nuovo commit viene
pushato sul repository, e ogni volta che questo accade, si occupa di
creare una nuova build del progetto, eseguire i test e segnalarne il
risultato positivo con una luce verde o negativo con una luce rossa.
Coveralls determina quale percentuale del codice del progetto viene
effettivamente coperta dai test.
8. Agile Business Group - www.agilebg.com - info@agilebg.com
QA: Quality Assurance (2/3)
All'interno del progetto OCA/maintainer-quality-tools (MQT) sono
contenuti gli strumenti QA utilizzati durante le build su Travis CI.
sample_files/.travis.yml (file template di configurazione di Travis CI
per ciascun progetto OCA)
travis/travis_run_tests
travis/test_flake8
travis/cfg/travis_run_flake8.cfg
travis/cfg/travis_run_flake8__init__.cfg
travis/test_pylint
travis/cfg/travis_run_pylint.cfg
travis/test_server
9. Agile Business Group - www.agilebg.com - info@agilebg.com
QA: Quality Assurance (3/3)
travis_run_tests exited with 0 > LUCE VERDE!!!
10. Agile Business Group - www.agilebg.com - info@agilebg.com
README.md progetto
OCA/maintainer-quality-tools/blob/master/README.md
11. Agile Business Group - www.agilebg.com - info@agilebg.com
README modulo (1/2)
A partire da ec0b770[1] la chiave 'description' pu嘆 essere impostata
anche in ['README.rst', 'README.md', 'README.txt']
reST e markdown rendono la visualizzazione della descrizione del
modulo pi湛 accattivante
Al suo interno si possono aggiungere le sezioni:
Authors
Contributors
In github, le issues, i commenti, e le descrizioni delle PR utilizzano un
dialetto di markdown[2]
[1] https://github.com/odoo/odoo/commit/ec0b770ed3c4f4fbdf0f24930aaa05bcc5cb0b53
[2] https://help.github.com/articles/github-flavored-markdown/
12. Agile Business Group - www.agilebg.com - info@agilebg.com
README modulo (2/2)
Maggior visibilit per Authors e Contributors
13. Agile Business Group - www.agilebg.com - info@agilebg.com
Come contribuire su github
I principali strumenti messi a disposizione da github per contribuire
sono:
Pull Request (PR)
Issue
Una PR 竪 il modo per comunicare che abbiamo apportato delle
modifiche che vorremmo venissero incluse nel progetto. La tipologia
utilizzata per OCA 竪 il fork and pull.
Le Issues vengono utilizzate per segnalare task , bug o feature di un
progetto. Queste andrebbero sempre controllate ed utilizzate,
soprattutto quando ci prepariamo ad inviare una PR. Potrebbe infatti
darsi che il bug che stiamo correggendo sia noto e gi segnalato da
qualcunaltro.
14. Agile Business Group - www.agilebg.com - info@agilebg.com
hub: come sfruttare al meglio github
https://hub.github.com/
Per estendere git con i comandi di hub 竪 sufficiente aggiungere a .bashrc o
.bash_profile:
eval "$(hub alias -s)"
15. Agile Business Group - www.agilebg.com - info@agilebg.com
Workflow per PR fork and pull (1/3)
Supponiamo di aver scovato un bug in un modulo di OCA/l10n-italy
branch 8.0 e di voler proporre la sua fix.
$ git clone OCA/l10n-italy
$ cd l10n-italy
$ git browse -- issues (apre https://github.com/OCA/l10n-italy/issues)
$ git checkout -b 8.0-fix-issue1
( scrivo le modifiche...)
$ git add -p
$ git commit -m "Close issue #1"
https://help.github.com/articles/closing-issues-via-commit-messages/
Un messaggio di commit scritto bene rende il processo di review pi湛 veloce.
16. Agile Business Group - www.agilebg.com - info@agilebg.com
Workflow per PR fork and pull (2/3)
Non potendo scrivere direttamente sul progetto, devo crearne una
copia, ovvero un fork.
$ git fork
(fork su github: tafaRU/l10n-italy)
(git remote add tafaRU git@github.com:tafaRU/l10n-italy.git)
$ git push tafaRU
In alternativa:
$ git pull-request
(apre il text editor per modificare il titolo, aprire il link della PR appena creata e modificare descrizione)
17. Agile Business Group - www.agilebg.com - info@agilebg.com
Workflow per PR fork and pull (3/3)
Ora che la PR 竪 stata aperta inizia il processo di review, una vera 竪
propria conversazione in stile social in cui potremmo discutere insieme
ai vari reviewer. Dovremmo essere pronti a sostenere discussioni,
applicare ulteriori fix o ad accettare un eventuale rifiuto.
L'accettazione della PR e quindi il suo merge dipende esclusivamente da
due fattori:
> 2
[1] http://odoo-community.org/page/how-to ( con 3 approve, merge quasi immediato)
[1][2]
[2] emojis - :+1:
18. Agile Business Group - www.agilebg.com - info@agilebg.com
Come muoversi tra i vari branches
Vediamo cosa dovreste fare per contribuire allo sviluppo di 8.0-fix-issue1:
$ git remote add -p tafaRU
# controllo i remotes
$ git remote -v
$ git fetch tafaRU - $ git fetch all
$ git checkout 8.0-fix-issue1
$ git checkout -b 8.0-imp-issue1
# aggiungo le modifiche e le committo
$ git push your_account
# faccio PR con base tafaRU/l10n-italy e branch 8.0-fix-issue1
19. Agile Business Group - www.agilebg.com - info@agilebg.com
Rebase una PR
Una delle richieste pi湛 ricorrenti durante una PR:
Questo ha come risultato:
integrare nel vostro branch le modifiche approdate sul
branch principale
rilanciare la build di Travis CI
A partire dal vostro branch 8.0-fix-issue1:
$ git rebase origin/8.0 ( opzione -i per pulire commit)
$ git push -f (riscrivo la history!!!)
https://github.com/edx/edx-platform/wiki/How-to-Rebase-a-Pull-Request
20. Agile Business Group - www.agilebg.com - info@agilebg.com
Convenzioni e linee guida
Quelle presenti sono ancora incomplete o poco aggiornate:
http://odoo-community.org/page/how-to
Quello che fa fede al momento sono i tools presenti nell' MQT repo, per
tale motivo vi consiglio di impostare il watching[1], per essere notificati
su tutte le nuove PR e nuove issue.
Ad es. https://github.com/OCA/maintainer-quality-tools/issues/46
[1] https://help.github.com/articles/watching-repositories/
21. Agile Business Group - www.agilebg.com - info@agilebg.com
Come contribuire: review di PR
Review di PR
Code review
Manual testing
Functional review
Ogni venerd狸 si tiene l'OCA Review Day:
https://waffle.io/oca/maintainers-tools
https://github.com/pulls?user=OCA
22. Agile Business Group - www.agilebg.com - info@agilebg.com
Canali di comunicazione
Mailing lists
https://www.odoo.com/page/odoo-community
IRC (freenode.net)
#openobject
https://botbot.me/freenode/openobject/
#oca (discutere le PR e vedere aggiornamenti PR)
Twitter
@OdooCommunity
@OCA_Bot (merge di PR)
23. Agile Business Group - www.agilebg.com - info@agilebg.com
OCA: Ovvero, Con un'Aforisma
"Given enough eyeballs, all bugs are shallow"
Eric Steven Raymond(The Cathedral and the Bazaar)
24. Agile Business Group - www.agilebg.com - info@agilebg.com
GRAZIE!
GitHub: github.com/tafaRU
Twitter: @tafaRU
IRC: tafaRU
LinkedIn: it.linkedin.com/in/tafaru
Gmail: alex.comba@agilebg.com