# Breakout room 5: Dynamic collaboration
### **Managing collaborations** (1st part!)
### Participants
- [Eric R. Scott](https://www.ericrscott.com/)
- Richard J. Telford
- Cole B. Brookson
- Friederike (freddy) Hillemann
- Kaitlyn Gaynor
- Vivienne Foroughirad
- Brandon P.M. Edwards
- Sarah Goslee
#### *Within* each breakout room, we'll cover the following topics:
Step 1: Presentation of the breakout room topic
Step 2: Exposition of examples OR individual/collective practices (?)
Step 3: Discussion and summary of challenges
Step 4: Return of participants and organizers to the main workshop room
#### *Within* each breakout room, consider the following discussion questions:
1) What other tools have you used for this purpose?
2) How does GitHub compare to other tools you've used for this purpose?
3) What are the main challenges in using GitHub for this purpose?
4) What are the main benefits of using GitHub over some other tool?
5) What could be done to improve GitHub for this purpose?
### Notes
#### Organizations
*Question: When to use organisations versus just using multiple repositories?*
Organisations are useful especially to manage access easily for a team, also to apply a common template or base (for example) to multiple projects
Example Organizations:
1. Academic labs
- https://github.com/BrunaLab
- https://github.com/BahlaiLab
- https://github.com/PoisotLab
- https://github.com/zipkinlab
- https://github.com/weecology
2. Collaborative Projects
- https://github.com/idiv-biodiversity
- https://github.com/na-pops
*Question: How to deal with datasets that cannot be shared with everybody on a team?*
- can use private repositories, access codes
- googledrive, googlesheets4 packages to access data stored on Google Drive
- add data folder to .gitignore so it's not shared, and can instead share dummy data to run scripts
- OSF for data (public/private repos)
- public/private data/code interfaces on the CyVerse platform
*Question: How to include repositories in your "portfolio" on GitHub if they are part of an organization rather than under your account?*
- You can pin repositories from other organisations onto your personal GitHub to showcase your work.
- You can fork a repository from an organization into your GitHub
- You can [edit your profile README.md](https://docs.github.com/en/github/setting-up-and-managing-your-github-profile/customizing-your-profile/managing-your-profile-readme) file to include links to repositories you've worked on.
#### Issues and pull-requests
- Can make check-lists within issues
- Assign issues to collaborators, give to-do lists in transparent way
- Issues are useful for including collaborators who don't necessarily want to use git and make pull requests
Are PRs useful or not so useful? Too niche for programmers, or more of a generally useful thing?
- There is not a lot of scaffolding/framework about how and when to use pull requests, issues, or just commit changes directly in ecoevo research (and when to use branches or not)
- It would be good to have recommendations for common situations (flowchart?)
- e.g. grad student asking for feedback from a PI
- "GitHub Issues is great way to deal with code feedback for students because it’s easy to link resources, have a back-and-forth to make sure there is clarity and understanding, etc. And not just make the changes myself but empower the student to do it!" - Kaitlyn
- It would be important to have a template for repository structure and feedback that lab members use for collaboration (Cole)
- You can make a repository a ["template"](https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/creating-a-template-repository) on GitHub
- Maybe instructions on "how to get code feedback" are lab-specific. We could offer some options (examples of how to use issues, branches, discussion, pull-requests) and suggest that labs decide on ways to do this and put it in an on-boarding rep in organization.
#### GitHub Actions
Traditional use is for continuous integration---check if changes to code affect things when merged with main branch.
**Events** can trigger actions, like whenever there is a push to a branch or on a pull request.
**Actions** can do a variety of things. For example, they can run code on a virtual machine of any operating system.
[Where to find GitHub Actions to use](https://github.com/marketplace?type=actions) (searchable by use)
##### Questions
Can GitHub actions trigger pull requests in other repos? Like if you update data in your data repo, can it make a PR to other repos that use the data in an analysis pipeline? (Eric)
*Hi! Yes! There are actions in the Github Action marketplace that can create pull requests: e.g. https://github.com/marketplace/actions/github-pull-request-action. To trigger changes in other repositories, we need to use "[repository dispatches](https://docs.github.com/en/actions/reference/events-that-trigger-workflows#repository_dispatch)". This means that an event happening on repository #1 sends a parameter to other repository. The other repository then can have actions that are triggered whenever it receives this parameter from repository #1. Check this [example]((https://github.com/QCBSRworkshops/templateWorkshops/blob/main/.github/workflows/deploy_presentation-template.yml)). You can see that at the end of the document, if everything goes well, it sends a PING to all other workshop repositories. If you look [here](https://github.com/QCBSRworkshops/workshop01/blob/main/.github/workflows/in-dispatch-out.yml), you can see that that PING triggers workflows in this repository.*