Collaborative software development

Nathan Sheffield, PhD
www.databio.org/slides
## The three levels of collaboration 0- None 1- One-way communication 2- Conferencing 3- Coordination
## Why collaborate on software?
<img src="/images/presentations/collab/afgan.png" width=400 style="margin:0px; padding:0px"> <img src="/images/presentations/collab/morin.png" width=400 style="margin:0px; padding:0px"> <img src="/images/presentations/collab/nature.png" width=400 style="margin:0px; padding:0px"> <img src="/images/presentations/collab/groen.png" width=400 style="margin:0px; padding:0px">
<img src="/images/presentations/collab/garijo.png" width=400 style="margin:0px; padding:0px"> <img src="/images/presentations/collab/nbt.png" width=400 style="margin:0px; padding:0px"> <img src="/images/presentations/collab/stodden.png" width=400 style="margin:0px; padding:0px">
## Why collaborate on software? Because collective progress increases with increased collaboration. <img src="/images/presentations/collab/increase.svg" height=400>

But I don't develop software!

Yes you do.
Data analysis is software development

# Levels of collaboration
## 0. None <img src="/images/presentations/collab/none.svg" height=100> I write and use code for my project.
## 1. One-way Communication. <img src="/images/presentations/collab/communication.svg" height=100> I give you my script and you run it. Analogy: TV
## 2. Conferencing. <img src="/images/presentations/collab/conferencing2.svg" height=200> Interactive work toward a shared goal; collecting bug reports and user feedback. Analogy: Brainstorming conference call.
## 3. Coordination. <img src="/images/presentations/collab/coordination.svg" height=200> Interdependent work toward a shared goal. Analogy: a sports team. Everyone contributes, adjusts to others, and does something different.

How do we move toward coordination?

0- None
1- One-way communication
2- Conferencing
3- Coordination
<img src="/images/presentations/collab/git_logo_white.svg" height=400> <img src="/images/presentations/collab/github_bug_black.svg" height=400>
Git

a distributed version-control system that tracks changes in software development

  • created by Linus Torvalds in 2005 for development of the Linux kernel
  • free and open-source (GPL2)
  • Github

    a web-based hosting service for version control using Git


  • company started Feb. 2008
  • purchased by Microsoft for $7.5 billion in 2018
  • # git/github ecosystem ## version control [git vs svn](https://trends.google.com/trends/explore?date=all&geo=US&q=git,svn) ## distribution [the octoverse](https://octoverse.github.com/) ## collaboration [dashboard](https://github.com/orgs/databio/dashboard)
    # Key git/github concepts ## repository -> remote ## branch -> clone ## clone -> fork ## pull request -> merge ## commit -> push ## issue, tag, stage
    [peppy repository](https://github.com/pepkit/peppy)
    # Hackathon ideas - Last year's repo: [https://github.com/databio/bds_hackathon](https://github.com/databio/bds_hackathon) - Do you want to analyze data or develop a tool? - Do you want to focus on Python, R, or free-for-all? - Do you want to work on single-cell RNA, ATAC, CITE-seq, or pi-ATAC data?