Project Management and Collaboration

using GitHub


Ondřej Mottl

Science School of Quantitative Ecology 2024

Collaboration

Collaboration types

Collaboration forms

Collaborate on a project

Project communication plan

Project Management



wiki:

Project management is the process of leading work of a team … to achieve all project goals within the given constraints.

Project Management

Tasks management

What is a task?

Tasks management tools

Jory MacKay

A … task management tool … is your best friend when it comes to organizing, assigning, tracking, and reporting on tasks.

Best Practices

1. Split yout work into manageble chunks

Best Practices

2. Make your task atomic

It should be clear what is the goal and criteria of the task.


One chunk of work = one task

Best Practices

3. Set priority of tasks

Making a plan

Time management

Whole chapter in project management is dedicated to time management.

Practical Exercise

03:00

What tools and methods do you use?

Project management tools

There are many tools for project management!!!

Google Keep

GitHub tools suite

Issue (a task) on GitHub

Original purpose of GitHub Issues is to track bugs & feature requests in software developmen projects🧑‍💻.

However, We can highjack it for any kind of task management👌🦹.

Issue (a task) on GitHub

Note on Markdown

You can use Markdown in the description and comments

More details on Github Docs

Splitting tasks

You can split tasks into subtasks and checklists.

This allow to track progress more granularly.

Labels

You can use labels to categorize tasks.

Labels

Be crateative! You can create your own labels based on:

  • priority
  • type
  • status

Issues - Assign

Issues - space for communication

Practical Exercise

03:00

  1. Look up issues on your favourite software (e.g. R package)
  2. Create an issue on your repo
  3. Make a comment

Tracking progress - Milestones

Tracking progress - Milestones

Tracking progress - Milestones

You can create a Milestone for:

  • Time frame - “2024-10-12”, “Conference XY”, …
  • Goal - “Methodology refactor”, “paper submission”, …
  • General topic - “Data cleaning”, “Data analysis”, …

GitHub Projects

GitHub Projects

You can organise your Issues and Pull Requests in Projects.

GitHub Projects

You can customise the columns in Projects with:

  • Labels
  • Linked Pull Requests
  • Milestones

GitHub Projects - custom views

GitHub Projects - custom views

GitHub Projects

There is so much more you can do with Projects:

  • Automations
  • Road maps

Check the official documentation

Practical Exercise

03:00

  1. Make some Issues in your repo
  2. Organise them in a Project

Dissemintation

Dissemintation

Dissemintation

GitHub uses git Tag and expand on it with Releases.

A Tag is a “frozen” state of repo at a certain time

A Release, based on a Tag, “packs” the whole repo into downloadable zip (with docs)

Open Data

Intermezzo

Sharing Data

Do you generate data and/or software?

  • Get a permanent URL to the repository as a Digital Object Identifier (DOI)
  • Deposit them in a “stable” repository (eg. Zenodo, Figshare, etc)
  • Included an example of how to cite it in the README or documentation

FAIR Principles

Good practices for the management and administration of scientific data

Access as open as possible, as closed as necessary

  • Findable
  • Accesible
  • Interoperable
  • Reusable

Open vs Close

Licensing

ZENODO allows you to choose a licence for your data.

You can always share your private data and restricted access with the correct licence.

There are websites e.g. https://choosealicense.com/ to help on choosing a licence.

Dissemintation - GitHub + ZENODO

Get DOI for your code and data with Zenodo.

Data stewards

Additional functions

of GitHub

Discussions

Project-specific space for communication on GitHub.

Discussions

Threads

Pools

Discussions

From Discussions to Issues.

Wikis

Practical Exercise

Brainstorm on how you could use Discussions and Wikis in

  1. your current projects
  2. future projects

03:00

Team administration

Team administration

Github allows you to manage your team by specifying roles and permissions.

Team administration

Team administration - Roles

Team administration - Mentoring

Practical Exercise

How would you desing a roles for your team/project?

03:00

GitHub Actions

Automate your works🤖!

Create a custom small program that will run on GitHub servers.

GitHub Actions

Usage examples:

  • run your script every day (e.g. to update data)
  • run your tests every time you push new code/data
  • render your website every time you update your content

Outro

This presentation

About me

Ondřej Mottl Assistant Professor at Charles University