La collaborazione nello sviluppo del software open source

Documenti analoghi
Da Open Source ad Open Data

Sistemi distribuiti open source per reti di comunicazione

GNU/Linux e *BSD: filosofia del software libero ed open source

Sistemi per il Concurrent Versioning Systems (CVS) Porfirio Tramontana - Ingegneria del Software 2 Gestione della Configurazione 1

Ambienti per lo sviluppo collaborativo del software (CDE)

Unix. Sistema operativo proprietario Sviluppato da AT&T (Bell Labs) Prima versione : 1969

Sinonimi Version Control Source Code Management (SCM) Source Control Gestione dei codici sorgenti e delle versioni Ingegneria del Software T Z1.2

PAAL: Pubblica Amministrazione Aperta e Libera Dalle Tecnologie Aperte alla Libera Circolazione dei Contenuti Digitali

Sistemi per il controllo versione del software (VCS)

Informatica di base 6/ed

GNU/Linux: filosofia del software libero ed open source

Linguaggi di programmazione avanzati: C++ F.S. Cafagna

Informatica e Software Libero. Il software. Categorie del software. Università Cattolica di Brescia 5 dicembre 2001

Corsi GNU/Linux 2016

Gestione della configurazione del software

GNU/Linux: filosofia del software libero ed open source

Git: sistema di versionamento distribuito

Licenze Software e Open Source

10 Workflow per DVCS Lambda expression e Stream

10 Strategie di uso efficace dei Decentralized Version Control Systems

Gestione della Configurazione. Porfirio Tramontana - Ingegneria del Software Gestione della Configurazione 1

LINUX DAY LUG Govonis. Il Software Libero

Italo Vignoli SW Libero e Open Source e Progetto LibreOffice

Licenze libere. Avv. Marco Ciurcina Venezia, 12 Aprile Avv. Marco Ciurcina

GNU/Linux e software libero

Laurea Specialistica in Informatica Struttura e Configurazione di Sistemi Liberi. [Sviluppo di un progetto FOSS]

Programmazione Java Avanzata

Open source come business model

Il pistolotto sulle licenze. Tutti i nomi ed i marchi sono registrati e appartengono ai rispettivi proprietari - si comincia bene!!

L IDE NETBEANS. (slide: A. Baratè) Programmazione per la Musica Adriano Baratè

Introduzione al software libero

Contribuire ad un progetto Open Source con i Distributed Version Control Systems

Strumenti per lo sviluppo software in comunità

Open Source::accenni. Definizioni: software proprietario

Developers Italia, la community degli sviluppatori e le nuove linee guida sull'acquisizione e il riuso di software

OPEN SOURCE. Concetti chiave e implicazioni per le scelte aziendali (fornitori e utenti)

Licenze libere. Software, altre opere creative, dati e hardware. Avv. Marco Ciurcina

Git 101 Linux Day 2018, LUGMan. Navigate : Space / Arrow Keys M - Menu F - Fullscreen O - Overview B - Blackout S - Speaker?

Informatica di base con Software Libero

CORSO LINUX PER LA CERTIFICAZIONE LPI ESSENTIALS

Lo sviluppo di software open source per le Digital Humanities

GNU/Linux e *BSD: filosofia del software libero ed open source

Il mondo delle applicazioni aperte

Mettere il database sotto source control. Alessandro Alpi

L o. Francesco Cabras. un sistema integrato per la gestione dei progetti di sviluppo software

INTRODUZIONE AL SOFTWARE LIBERO E OPEN SOURCE

Introduzione a DevOps

Ma prima... Bisogna introdurre almeno due concetti usati quando si parla di Git!

Didattica dei GIS con GRASS

Il software libero: significato, caratteristiche, vantaggi Le ragioni. Le ragioni di una scelta

Le licenze. Il CopyRight e il CopyLeft. Stefano Floris

CORSO DI: INFORMATICA Lezione N 6

Avete detto Open Source?!

Ingegneria del Software

Presentazione strumenti di sviluppo software

Il software libero e il GIS

SBN e open source. Giovanna Frigimelica Università degli studi di Cagliari Biblioteca Distretto biomedico scientifico

Tecnologie Open Source. Introduzione al corso

MS WINDOWS SERVER CONFIGURING AND TROUBLESHOOTING INTERNET INFORMATION SERVICES

IL GIUDICE PINGUINO. Copyleft VS Copyright, la battaglia d autore

Laboratorio di Reti Locali e Geografiche

Copyright e. Libertà dell utente

Android Development. Course Projects. Università degli Studi di Parma

Tecnologie Open Source. Linux

Alma Mater Studiorum Università di Bologna. Controllo di versione. S. Golovchenko (UNIBO) INGEGNERIA DEI SISTEMI SOFTWARE / 18

Introduzione a Linux Lezione 1 Introduzione a Linux

I programmi applicativi

Licenza Libere. di software, opere creative ed altro. Avv. Marco Ciurcina Torino, 11 Marzo 2019

Ingegneria del Software

Quale diritto d'autore per il software INFN?

Tecnologie Open Source. Subversion

Open Source: quali software utilizzare nella PA

LABORATORIO DI SISTEMI OPERATIVI

Enel App Store - Installation Manual - Mobile

Norme per il Software Libero nella PA. Avv. Marco Ciurcina

Software libero ed insegnamento

Open Source e Lavoro. Università di Perugia Facoltà di Ingegneria. Perugia 11/03/2008

Free Software, GNU, Linux Daniele Arduini

Internet: cenni su struttura e funzionamento.

UNIVERSITA degli STUDI della BASILICATA Dipartimento delle Culture Europee e del Mediterraneo: Architettura, Ambiente, Patrimoni Culturali DiCEM

Libertà di espressione

Free Software, GNU, Linux, Open Source Daniele Arduini

Test e collaudo del software Continuous Integration and Testing

Linux e il software libero

MWS3-3 - MOC NETWORKING WITH WINDOWS SERVER 2016

L'Open Source NON e' il software gratis E' una tipologa di software NON e' una licenza E' una metodologia di sviluppo

Sistemi Cooperativi: Sistemi di Sviluppo Cooperativo

Linux. Corso base (Tutto il materiale presentato è liberamente adattato da

Introduzione alla riunione

La gestione delle configurazioni (Software configuration management)

TECNICHE DI SIMULAZIONE

Esplorare e modificare il file system Compilare con gcc Lanciare un programma da linea di comando

Sistemi Operativi 11 ottobre 2017

Il Software Libero e Linux:

Giuseppe Capizzi. Ambienti di sviluppo Open Source

Docker: come se fosse

Ing. Claudio Kutufà Cooperazione Internazionale e non solo: Una soluzione completamente opensource per le biblioteche case study: Asmara Public

Linee Guida sul Software: Il Riuso

Il Team per la Trasformazione Digitale

Transcript:

La collaborazione nello sviluppo del software open source Prof. Laboratorio di Ricerca per la Collaborazione in Rete (Collab) Dipartimento di Informatica Università degli Studi di Bari Aldo Moro Research at COLLAB http://collab.di.uniba.it Addressing the problem of distance in distributed workgroups Special focus on software development as an intense collaborative process collaborative software development means for communication shared information space coordination 1

COLLAB Timeline 2003: COLLAB opening 2006: IBM Eclipse Innovation Award Project econference over ECF 2008: IBM Faculty Award Project Penelope Application Framework 2011: Microsoft Research Software Engineering Innovation Foundation Award Project Augmenting Social Awareness in a Collaborative Development Environment 2013: 8th IEEE Int. Conf. on Global Software Engineering, Bari, Italy 2015: National grant: Scientific Independence of young Researchers (SIR) Project Investigating the Role of Emotions in Online Question & Answer Sites open source software Comunità open source come caso di collaborazione in rete Sviluppo distribuito del software Comunicazioni tutte online Organizzazione decentralizzata I partecipanti conservano la loro indipendenza 2

Non solo Linux: comunità open source nate da progetti software http://cloudramblings.me/2015/02/06/why-open-source-has-changed-from-the-cheapest-software-to-the-best-software/ Free/Libre Open Source Software (FLOSS) Free/Libre Software Open Source Software Guidato da Free Software Foundation (1985) Enfasi sulla libertà dal controllo di altri e su questioni etiche: Il software libero è una questione di libertà: ognuno deve essere libero di utilizzare il software in ogni modo che sia socialmente utile. Guidato da Open Source Initiative (1998) Enfasi sui vantaggi tecnici: il software non libero è una soluzione non ottimale 3

Definizione ufficiale di Free Software Da http://www.gnu.org/philosophy/free-sw.html L'espressione "software libero" si riferisce alla libertà dell'utente di eseguire, copiare, distribuire, studiare, cambiare e migliorare il software Libertà 0: libertà di eseguire il programma, per qualsiasi scopo Libertà 1: libertà di studiare come funziona il programma e adattarlo alle proprie necessità Libertà 2: libertà di ridistribuire copie in modo da aiutare il prossimo Libertà 3: libertà di migliorare il programma e distribuirne pubblicamente i miglioramenti, in modo tale che tutta la comunità ne tragga beneficio Definizione ufficiale di Open Source Da http://www.opensource.org/docs/definition.php Open source doesn't just mean access to the source code. The distribution terms of open-source software must comply with the following criteria: 1. Free Redistribution 2. Source Code 3. Derived Works 4. Integrity of The Author's Source Code 5. No Discrimination Against Persons or Groups 6. No Discrimination Against Fields of Endeavor 7. Distribution of License 8. License Must Not Be Specific to a Product 9. License Must Not Restrict Other Software 10. License Must Be Technology-Neutral 4

Progetti FLOSS Un progetto FLOSS produce software la cui licenza dà agli utenti la libertà di: eseguire il programma per qualsiasi scopo studiare e modificare il programma ridistribuire copie del programma originale o del programma modificato L opposto di FLOSS è software chiuso o proprietario Circa 70 licenze approvate da OSI GNU General Public License (GPL). GNU Library or "Lesser" General Public License (LGPL), BSD 3-Clause "New" or "Revised" license, BSD 2-Clause "Simplified" or "FreeBSD" license, MIT license, Apache License 2.0, Mozilla Public License 2.0, Eclipse Public License, ecc. Tutte le licenze permettono la vendita commerciale e l uso commerciale del software Quali tecniche e strumenti sono utilizzati per i seguenti problemi? Processo decisionale Gestione delle Release Manuali Punto di contatto Comunicazione Coordinamento Condivisione codice Assicurazione della qualità Hosting e integrazione degli strumenti 5

Processo decisionale: Come sono prese le decisoni? Users Struttura gerarchica (onion model) Contributors Developers Core Devs Processo decisionale: Come sono prese le decisoni? Struttura gerarchica con leader di progetto Esempio: Linux kernel Il leader ha autorità ultima su tutte le decisioni Può delegare a suoi fiduciari Struttura gerarchica meritocratica Es.: Apache HTTP Server Comitato di developers, tra loro pari Un contributor può diventare developer per cooptazione, sulla base dei contributi offerti e della fiducia generata 6

Gestione delle Release: come fanno gli utenti a prendere il risultato finale di un progetto? Download di release già compilate o da compilare da forges, web servers o ftp servers Mirroring Esempio: Debian Mirrors, Etichettatura delle versioni: stable, testing, unstable Esempio: Debian Releases Manuali: come imparano gli utenti a usare il sistema? Sottoprogetti dedicati alla redazione di documentazione Esempio: PHP Possibilità di aggiungere commenti da parte degli utenti 7

Punto di contatto: a chi si può rivolgere un utente per risolvere un problema? Azienda che fornisce supporto a pagamento Esempi: PostgreSQL, (Oracle) MySQL Fondazioni no-profit Gestiscono l infrastruttura del progetto (es. sito web, mailing list) Esempi: FSF, FreeBSD Foundation, Apache Software Foundation, Linux Foundation Sviluppatori Possibilità di follow nei forge moderni (es. GitHub) Comunicazione: come sono scambiate le informazioni? Strumenti Mailing list Newsgroup Internet Relay Chat (IRC) Wiki Blogs Microblogs Question&Answer sites stesso tempo tempo diverso stesso luogo Prevalenza di comunicazione asincrona Diffusione crescente di social software moderno (web 2.0) luogo diverso 8

Wikis Sharing of explicit knowledge https://fedoraproject.org/wiki/main_page Blogs Promote sharing of tacit knowledge by narratively recording projects events http://wordpress.org/development/ 9

Microblogs Tweets to promote sharing of status updates Twitter-like interactions within GitHub (@mentions) Social Q&A sites 10

Coordinamento: Come si scopre cosa fanno gli altrii? Come viene incoraggiata e controllata la partecipazione? Pubblicazione di tutorial, linee guida, FAQs sul processo di sviluppo e gli strumenti utilizzati Es: KDE TechBase Uso degli strumenti di comunicazione Pubblicazione dei problemi aperti e delle assegnazioni di lavoro Strumenti: Issue tracking system (es: Bugzilla, JIRA) 11

Issue tracking system Database with a web UI Issues (or tickets) as a generalization of bugs/defects, enhancements, tasks Built-in life cycle to track the resolution Condivisione codice: Come lavorare contemporaneamente sugli stessi file di codice sorgente? Gestione della configurazione e controllo delle versioni Presenza di un repository da cui prelevare codice (check-out) e riporre codice (check-in o commit) Gestione delle modifiche effettuate contemporaneamente a uno stesso file da parte di due membri differenti Gestione delle diverse versioni di un prodotto che può evolvere Ripristino di vecchie versioni di prodotti Individuazione di versioni del prodotto in cui sono stati risolti errori o introdotte nuove funzionalità 12

Condivisione codice: Come lavorare contemporaneamente sugli stessi file di codice sorgente? Version control systems (VCS) Pessimistic vs. Optimistic model lock-modify-unlock vs. copy-modify-merge Centralized vs. Distributed server Unique server (CVS, SVN) vs. multiple servers, one for each developer (Git) Modello copy-modify-merge Sviluppatore A Sviluppatore B v 1.1 v 1.2 1. checkout 2. checkout Repository v 1.1 v 1.2 3. commit v 1.1 v 1.2 4. commit 5. update Sviluppatore C v 1.3 6. commit v 1.3 v 1.4 7. checkout 8. commit v 1.4 13

Distributed VCS Modello P2P Server multipli: ogni repository è creato (fork) come un clone completo Il commit è locale Per restituire la modifica bisogna renderlo pubblico (push o pull request) Es. Git Sviluppato da Linus Torvalds per il progetto Linux Common branching workflow in git Main branch aka long-running master codice stabile, pronto per andare in produzione build stabili develop cambiamenti al codice, pronti per essere integrati nella prossima release build nightly Topic branch aka short-lived, supporting feature aggiunta di nuove funzionalità e.g., filedownload, logging issue risoluzione di un issue specifico e.g., issue3, iss91a, iss91v2 hotfix risoluzione di difetti gravi di codice in produzione 14

Centralized workflow Possibile con VCS centralizzati e decentralizzati Integration-Manager workflow Possibile solo con VCS decentralizzati 15

Dictator and Lieutenants Workflow Possibile solo con VCS decentralizzati Assicurazione della qualità: come si acquista fiducia nella bontà del risultato finale? Revisioni del codice applicate a cambiamenti autoconsistenti e frequenti Patch via mailing lists Pull request via DVCS Beta-test in larga scala Linus Law: Given enough eyeballs, all bugs are shallow (cit. Eric Raymond) Dato un numero sufficiente di occhi, tutti i bug vengono a galla 16

Hosting e integrazione degli strumenti Forge platforms Host multiple independent projects Collaborative Development Environments that integrate SE task-specific tools and generic communication tools SourceForge Version-Control Systems SVN, Git, Mercurial Trackers: Bugs, feature requests, patches, support requests Communication tools Mailing lists; forums Web 2.0 applications Feeds; hosted applications for blogs, microblogs and wikis https://sourceforge.net/ 17

Launchpad Version-Control Systems Bazaar Trackers: Bugs; integrating with external trackers Communication tools Mailing lists Web 2.0 applications No http://launchpad.net CodePlex Version-Control Systems Git, Mercurial, Team Foundation Server Trackers: Work items (features, issues, tasks) Communication tools Mailing lists, discussions list Web 2.0 applications Feeds, wiki www.codeplex.com 18

GitHub Version-Control Systems Git, SVN Trackers: Issues Communication tools No Web 2.0 applications Feeds, wiki, social networks Collaborative code review Pull requests https://github.com BitBucket Version-Control Systems Git, Mercurial Trackers: Issues (integrated with Jira) or via FogBugz, Lighthouse Communication tools Chat (via HipChat or Campfire), IRC (via Groove) Web 2.0 applications Feeds, wiki, social networks https://bitbucket.org/ 19

Stage e Tesi di laurea Contributi significativi a un progetto FLOSS possono coincidere con il lavoro di tesi Mario Scalas: KDevelop Myriam Leggieri: Hackystat Pasquale Minervini: Apertium Lavorare a un progetto FLOSS è una forma di stage Il riconoscimento formale dipende dal docente Google Summer of Code Global program that offers students stipends to write code for open source projects. 20