SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline
Gestione di un
progetto
Open-Source
Dalla condivisione alla gestione
Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 4.0 Internazionale – Daniele «Kowalski7cc» Barcella
Linux Day 2016
Su di me
• Daniele Barcella
• @Kowalski7cc
• Nato nel ’96
• Interesse in qualsiasi cosa si accenda
fin dai 3 anni
• Diploma in Informatica e
telecomunicazioni
• BG Scienza
• EUCIP IT Administrator
• Sistemista presso Project
• Università Milano Bicocca
Cosa è l’Open-Source?
• Software di cui sono stati resi pubblici
i sorgenti.
• Permettere a programmatori
indipendenti di apportare modifiche
e estensioni
• Regolato mediante licenze
Perché condividere?
• La collaborazione di più
programmatori permette lo sviluppo
di grandi progetti
• La risoluzione di problemi diventa più
rapida
• Idee diverse forniscono spunto per
migliorare il progetto
• In caso di abbandono del fondatore il
progetto può continuare a
sopravvivere
Quali strumenti utilizzare?
• Necessario archiviare codice
• Gestire versioni diverse
• Separare versioni stabili da quelle di
sviluppo
• Gestire diverse richieste di «merge»
di sorgenti
• Unire il codice proposto con quello
attuale del programma
Strumenti di controllo versione
Git Mercurial Subversion CSV Tarball
Servizi di gestione del codice
GitHub Bitbucket GitLab SourceForge Launchpad CodePlex
Gratis per
progetti Open-
Source
Gratis per gruppi
con 5 persone
Disponibile on-
premisis e cloud
Solo per progetti
Open-Source
Gratis per
progetti Open-
Source
Solo per progetti
Open-Source
https://github.com/ https://bitbucket.org/ https://gitlab.com/ https://sourceforge.net/ https://launchpad.net/ https://www.codeplex.com/
I vantaggi di Git
• Utilizzo offline
• Semplice da utilizzare
• Supportato dalla maggior parte delle piattaforme
• Il più usato dagli sviluppatori Open-Source
• Disponibili diverse interfacce grafiche per un utilizzo immediato
• Disponibile come plugin per diversi IDE (Eclipse, Idea, VisualStuio, VS Code)
• Presente vasta documentazione
Automatizziamo il processo di build
• Usiamo strumenti come Maven, Ant,
Gradle per creare uno script di build
• Packaging automatico
• Gestione automatic delle librerie
• Possibilità di aggiungere plugin per
estendere funzionalità
Utilizziamo strumenti di test e distribuzione
• Verifica automatica degli errori dopo
un merge di codice
• Non è più necessario ricompilare sul proprio pc il
progetto per verificarne il funzionamento
• Distribuzione automatica del
programma
• Possibilità di automatizzare deploy
• Artifacts verso Maven Central
• Aggiornare l’applicativo in produzione in
automatico
Strumenti di test e distribuzione
• Drone.io
• TravisCI
• Jenkins
• Bitbucket Pipeline
Costi di mantenimento
• A pagamento per progetti privati
(GitHub)
• A pagamento per gruppi 5+ persone
(Bitbucket)
• Gratis per i progetti Open-Source
(GitHub, TravisCI, Bitbucket)
Proteggiamo il progetto
• Le licenze regolano il modo in cui è
possibile riutilizzare il codice e
ridistribuire il progetto
• Definisce i permessi relativi all’utilizzo
del codice pubblicato
• Stabilisce le condizioni d’uso
• Impone limiti di utilizzo dei sorgenti e
degli applicativi
Tipologie di licenze
AGPL GPL LGPL Apache MIT Mozilla Unlicense
Uso commerciale • • • • • • •
Ridistribuzione • • • • • • •
Modifiche • • • • • • •
Uso brevetti • • • • •
Uso privato • • • • • • •
Distribuzione sorgenti • • • •
Ridistribuzione della licenza • • • • • •
L’utilizzo come servizio è distribuzione •
Stessa licenza • • • • •
Notifica dei cambiamenti • • •
Nessuna responsabilità • • • • • • •
Divieto uso del marchio • •
Compatibilità delle licenze
Public
domain
MIT/X11
GPLv2
LGPLv2.1+
BSD-new
LGPLv2.1
GPLv2+
MPL 1.1
LGPLv3
LGPLv3+
GPLv3
GPLv3+
Affero
GPLv3
Apache 2.0
Permissive Weakly Protective Strongly Protective Network Protective
Contributor license agreement
• La licenza non è sufficiente
• Bisogna concedere o trasferire i
copyright al progetto
• Prima di accettare codice è
necessario far sottoscrivere un
contratto di licenza del contributore
Teniamo in vita il progetto
• Non dipendere il progetto open-
source dai prodotti di un’azienda for-
profit
• Evitare il linking di codice closed-
source a codice open-source
• Evitare di lavorare in un area legale
grigia di un’altra azienda
• Non vendere il progetto a un’azienda
for-profit e continuare ad accettare
contribuzioni
Grazie per l’attenzione
Fonti:
• http://choosealicense.com/ - Choose a License
• http://www.slideshare.net/RyanMichela/kicking-the-bukkit-
anatomy-of-an-open-source-meltdown - Kicking the Bukkit
• https://www.clahub.com/ - CLA Hub

Mais conteúdo relacionado

Mais procurados

Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017
MongoDB
 
Qt Mobile: Sviluppo mobile con Python e Qt Framework
Qt Mobile: Sviluppo mobile con Python e Qt FrameworkQt Mobile: Sviluppo mobile con Python e Qt Framework
Qt Mobile: Sviluppo mobile con Python e Qt Framework
Andrea Grandi
 
Webkit presentazione ufficiale
Webkit presentazione ufficialeWebkit presentazione ufficiale
Webkit presentazione ufficiale
intoinside
 

Mais procurados (20)

Introduzione a Docker
Introduzione a DockerIntroduzione a Docker
Introduzione a Docker
 
Open Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studioOpen Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studio
 
Qt mobile PySide bindings
Qt mobile PySide bindingsQt mobile PySide bindings
Qt mobile PySide bindings
 
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
 
Vagrant e Docker a confronto;scegliere ed iniziare
Vagrant e  Docker a confronto;scegliere ed iniziareVagrant e  Docker a confronto;scegliere ed iniziare
Vagrant e Docker a confronto;scegliere ed iniziare
 
Git in 5 minuti
Git in 5 minutiGit in 5 minuti
Git in 5 minuti
 
Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017
 
Real world Visual Studio Code
Real world Visual Studio CodeReal world Visual Studio Code
Real world Visual Studio Code
 
Qt Mobile: Sviluppo mobile con Python e Qt Framework
Qt Mobile: Sviluppo mobile con Python e Qt FrameworkQt Mobile: Sviluppo mobile con Python e Qt Framework
Qt Mobile: Sviluppo mobile con Python e Qt Framework
 
Livin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzioneLivin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzione
 
Docker Workshop - Coretech Summit 2018
Docker Workshop - Coretech Summit 2018Docker Workshop - Coretech Summit 2018
Docker Workshop - Coretech Summit 2018
 
Linux Embedded per l'automazione
Linux Embedded per l'automazioneLinux Embedded per l'automazione
Linux Embedded per l'automazione
 
Google cloud: Big Data + docker = kubernetes
Google cloud: Big Data + docker = kubernetesGoogle cloud: Big Data + docker = kubernetes
Google cloud: Big Data + docker = kubernetes
 
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
 
Automation Night (Docker)
Automation Night (Docker)Automation Night (Docker)
Automation Night (Docker)
 
Webkit presentazione ufficiale
Webkit presentazione ufficialeWebkit presentazione ufficiale
Webkit presentazione ufficiale
 
Introduzione a Docker (parte 2 - Pratica)
Introduzione a Docker (parte 2 - Pratica)Introduzione a Docker (parte 2 - Pratica)
Introduzione a Docker (parte 2 - Pratica)
 
Introduzione a .Net Core
Introduzione a .Net CoreIntroduzione a .Net Core
Introduzione a .Net Core
 
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...
 
Da JavaScript a TypeScript
Da JavaScript a TypeScriptDa JavaScript a TypeScript
Da JavaScript a TypeScript
 

Destaque

Introduzione a GIT - Laboratorio di Web Design 2014/15
Introduzione a GIT - Laboratorio di Web Design 2014/15Introduzione a GIT - Laboratorio di Web Design 2014/15
Introduzione a GIT - Laboratorio di Web Design 2014/15
Giovanni Buffa
 
Sys05 uso consapevole di git - beyond the basic
Sys05   uso consapevole di git - beyond the basicSys05   uso consapevole di git - beyond the basic
Sys05 uso consapevole di git - beyond the basic
DotNetCampus
 

Destaque (20)

oVirt – open your virtual datacenter
oVirt – open your virtual datacenteroVirt – open your virtual datacenter
oVirt – open your virtual datacenter
 
Security Capture the Flag
Security Capture the FlagSecurity Capture the Flag
Security Capture the Flag
 
Giochiamo ... in codice
Giochiamo ... in codiceGiochiamo ... in codice
Giochiamo ... in codice
 
OpenWRT - Router wifi open
OpenWRT - Router wifi openOpenWRT - Router wifi open
OpenWRT - Router wifi open
 
Copyrights = diritto alla copia?
Copyrights = diritto alla copia?Copyrights = diritto alla copia?
Copyrights = diritto alla copia?
 
L'orologio Nixie
L'orologio NixieL'orologio Nixie
L'orologio Nixie
 
Il progetto OpenOSB
Il progetto OpenOSBIl progetto OpenOSB
Il progetto OpenOSB
 
Liberta digitali: Introduzione al software libero, LibreOffice e Libreitalia
Liberta digitali: Introduzione al  software libero, LibreOffice e LibreitaliaLiberta digitali: Introduzione al  software libero, LibreOffice e Libreitalia
Liberta digitali: Introduzione al software libero, LibreOffice e Libreitalia
 
Orchestrating Linux Containers
Orchestrating Linux ContainersOrchestrating Linux Containers
Orchestrating Linux Containers
 
Elaborazione dati dalla riga di comando Linux
Elaborazione dati dalla riga di comando LinuxElaborazione dati dalla riga di comando Linux
Elaborazione dati dalla riga di comando Linux
 
GitSlides
GitSlidesGitSlides
GitSlides
 
Introduzione a GIT - Laboratorio di Web Design 2014/15
Introduzione a GIT - Laboratorio di Web Design 2014/15Introduzione a GIT - Laboratorio di Web Design 2014/15
Introduzione a GIT - Laboratorio di Web Design 2014/15
 
Sys05 uso consapevole di git - beyond the basic
Sys05   uso consapevole di git - beyond the basicSys05   uso consapevole di git - beyond the basic
Sys05 uso consapevole di git - beyond the basic
 
Linux Day 2015 Genova
Linux Day 2015 GenovaLinux Day 2015 Genova
Linux Day 2015 Genova
 
GITT (part 1 of 2)
GITT (part 1 of 2)GITT (part 1 of 2)
GITT (part 1 of 2)
 
Git–SVN
Git–SVNGit–SVN
Git–SVN
 
Perchè Git?
Perchè Git?Perchè Git?
Perchè Git?
 
Introduzione a git
Introduzione a gitIntroduzione a git
Introduzione a git
 
Git best practices
Git best practicesGit best practices
Git best practices
 
Introduzione a Git
Introduzione a GitIntroduzione a Git
Introduzione a Git
 

Semelhante a Anatomia di un progetto open-source

Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net
Leonardo Alario
 
Smau milano 2012 arena social media davide-senatore
Smau milano 2012   arena social media davide-senatoreSmau milano 2012   arena social media davide-senatore
Smau milano 2012 arena social media davide-senatore
SMAU
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campus
DotNetCampus
 

Semelhante a Anatomia di un progetto open-source (20)

Collaborazione nelle comunità open source: tecniche e strumenti
Collaborazione nelle comunità open source: tecniche e strumentiCollaborazione nelle comunità open source: tecniche e strumenti
Collaborazione nelle comunità open source: tecniche e strumenti
 
Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net
 
Open vs Proprietary software
Open vs Proprietary softwareOpen vs Proprietary software
Open vs Proprietary software
 
Docker_vs_Rancher_chi_dominerà_i_Desktop_dei_developers.pptx
Docker_vs_Rancher_chi_dominerà_i_Desktop_dei_developers.pptxDocker_vs_Rancher_chi_dominerà_i_Desktop_dei_developers.pptx
Docker_vs_Rancher_chi_dominerà_i_Desktop_dei_developers.pptx
 
Smau milano 2012 arena social media davide-senatore
Smau milano 2012   arena social media davide-senatoreSmau milano 2012   arena social media davide-senatore
Smau milano 2012 arena social media davide-senatore
 
Slide openvsclosed-source
Slide openvsclosed-sourceSlide openvsclosed-source
Slide openvsclosed-source
 
Introduction to NserviceBus
Introduction to NserviceBusIntroduction to NserviceBus
Introduction to NserviceBus
 
Presentazione del Software Libero e di Ubuntu al Linux Day 25 ottobre 2014
Presentazione del Software Libero e di Ubuntu al Linux Day 25 ottobre 2014Presentazione del Software Libero e di Ubuntu al Linux Day 25 ottobre 2014
Presentazione del Software Libero e di Ubuntu al Linux Day 25 ottobre 2014
 
Introduzione a DotNetNuke
Introduzione a DotNetNukeIntroduzione a DotNetNuke
Introduzione a DotNetNuke
 
DevOpsHerous 2016 - 29/10/2016
DevOpsHerous 2016 - 29/10/2016DevOpsHerous 2016 - 29/10/2016
DevOpsHerous 2016 - 29/10/2016
 
Glv on air 08-10_2019
Glv on air   08-10_2019Glv on air   08-10_2019
Glv on air 08-10_2019
 
OpenDevSecOps 2019 - Open devsecops un caso di studio
OpenDevSecOps 2019 - Open devsecops un caso di studioOpenDevSecOps 2019 - Open devsecops un caso di studio
OpenDevSecOps 2019 - Open devsecops un caso di studio
 
Esplorando il Cloud con Azure - Un viaggio tra IaaS, PaaS e SaaS e un compila...
Esplorando il Cloud con Azure - Un viaggio tra IaaS, PaaS e SaaS e un compila...Esplorando il Cloud con Azure - Un viaggio tra IaaS, PaaS e SaaS e un compila...
Esplorando il Cloud con Azure - Un viaggio tra IaaS, PaaS e SaaS e un compila...
 
DbUp - A real case of database migration
DbUp - A real case of database migrationDbUp - A real case of database migration
DbUp - A real case of database migration
 
Meetup Azure DevOps
Meetup Azure DevOpsMeetup Azure DevOps
Meetup Azure DevOps
 
Meetup Azure DevOps
Meetup Azure DevOpsMeetup Azure DevOps
Meetup Azure DevOps
 
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
 
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLDTYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
TYPESCRIPT, ANGULAR E BOOTSTRAP ASSIEME PER APPLICAZIONI REAL WORLD
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campus
 
Presentazione Unibo
Presentazione UniboPresentazione Unibo
Presentazione Unibo
 

Anatomia di un progetto open-source

  • 1. Gestione di un progetto Open-Source Dalla condivisione alla gestione Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 4.0 Internazionale – Daniele «Kowalski7cc» Barcella Linux Day 2016
  • 2. Su di me • Daniele Barcella • @Kowalski7cc • Nato nel ’96 • Interesse in qualsiasi cosa si accenda fin dai 3 anni • Diploma in Informatica e telecomunicazioni • BG Scienza • EUCIP IT Administrator • Sistemista presso Project • Università Milano Bicocca
  • 3. Cosa è l’Open-Source? • Software di cui sono stati resi pubblici i sorgenti. • Permettere a programmatori indipendenti di apportare modifiche e estensioni • Regolato mediante licenze
  • 4. Perché condividere? • La collaborazione di più programmatori permette lo sviluppo di grandi progetti • La risoluzione di problemi diventa più rapida • Idee diverse forniscono spunto per migliorare il progetto • In caso di abbandono del fondatore il progetto può continuare a sopravvivere
  • 5. Quali strumenti utilizzare? • Necessario archiviare codice • Gestire versioni diverse • Separare versioni stabili da quelle di sviluppo • Gestire diverse richieste di «merge» di sorgenti • Unire il codice proposto con quello attuale del programma
  • 6. Strumenti di controllo versione Git Mercurial Subversion CSV Tarball
  • 7. Servizi di gestione del codice GitHub Bitbucket GitLab SourceForge Launchpad CodePlex Gratis per progetti Open- Source Gratis per gruppi con 5 persone Disponibile on- premisis e cloud Solo per progetti Open-Source Gratis per progetti Open- Source Solo per progetti Open-Source https://github.com/ https://bitbucket.org/ https://gitlab.com/ https://sourceforge.net/ https://launchpad.net/ https://www.codeplex.com/
  • 8. I vantaggi di Git • Utilizzo offline • Semplice da utilizzare • Supportato dalla maggior parte delle piattaforme • Il più usato dagli sviluppatori Open-Source • Disponibili diverse interfacce grafiche per un utilizzo immediato • Disponibile come plugin per diversi IDE (Eclipse, Idea, VisualStuio, VS Code) • Presente vasta documentazione
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16. Automatizziamo il processo di build • Usiamo strumenti come Maven, Ant, Gradle per creare uno script di build • Packaging automatico • Gestione automatic delle librerie • Possibilità di aggiungere plugin per estendere funzionalità
  • 17. Utilizziamo strumenti di test e distribuzione • Verifica automatica degli errori dopo un merge di codice • Non è più necessario ricompilare sul proprio pc il progetto per verificarne il funzionamento • Distribuzione automatica del programma • Possibilità di automatizzare deploy • Artifacts verso Maven Central • Aggiornare l’applicativo in produzione in automatico
  • 18. Strumenti di test e distribuzione • Drone.io • TravisCI • Jenkins • Bitbucket Pipeline
  • 19. Costi di mantenimento • A pagamento per progetti privati (GitHub) • A pagamento per gruppi 5+ persone (Bitbucket) • Gratis per i progetti Open-Source (GitHub, TravisCI, Bitbucket)
  • 20.
  • 21.
  • 22.
  • 23. Proteggiamo il progetto • Le licenze regolano il modo in cui è possibile riutilizzare il codice e ridistribuire il progetto • Definisce i permessi relativi all’utilizzo del codice pubblicato • Stabilisce le condizioni d’uso • Impone limiti di utilizzo dei sorgenti e degli applicativi
  • 24. Tipologie di licenze AGPL GPL LGPL Apache MIT Mozilla Unlicense Uso commerciale • • • • • • • Ridistribuzione • • • • • • • Modifiche • • • • • • • Uso brevetti • • • • • Uso privato • • • • • • • Distribuzione sorgenti • • • • Ridistribuzione della licenza • • • • • • L’utilizzo come servizio è distribuzione • Stessa licenza • • • • • Notifica dei cambiamenti • • • Nessuna responsabilità • • • • • • • Divieto uso del marchio • •
  • 25. Compatibilità delle licenze Public domain MIT/X11 GPLv2 LGPLv2.1+ BSD-new LGPLv2.1 GPLv2+ MPL 1.1 LGPLv3 LGPLv3+ GPLv3 GPLv3+ Affero GPLv3 Apache 2.0 Permissive Weakly Protective Strongly Protective Network Protective
  • 26. Contributor license agreement • La licenza non è sufficiente • Bisogna concedere o trasferire i copyright al progetto • Prima di accettare codice è necessario far sottoscrivere un contratto di licenza del contributore
  • 27. Teniamo in vita il progetto • Non dipendere il progetto open- source dai prodotti di un’azienda for- profit • Evitare il linking di codice closed- source a codice open-source • Evitare di lavorare in un area legale grigia di un’altra azienda • Non vendere il progetto a un’azienda for-profit e continuare ad accettare contribuzioni
  • 28. Grazie per l’attenzione Fonti: • http://choosealicense.com/ - Choose a License • http://www.slideshare.net/RyanMichela/kicking-the-bukkit- anatomy-of-an-open-source-meltdown - Kicking the Bukkit • https://www.clahub.com/ - CLA Hub