Stefano Moia
École Polytechnique Fédérale de Lausanne (EPFL), Lausanne, Switzerland; physiopy (https://github.com/physiopy)
11.03.2022
smoia | |
@SteMoia | |
s.moia.research@gmail.com |
I can't work on that project now because my colleague/friend/dog is working on [a different part than what I'd modify of] it at the moment...
Version control systems are a way to manage and track changes to files.
Content
Aggregation/delivery
Create branch "dev"
Commit
Merge dev into main
Diverging main: conflict?
Merge main into dev
Initialise repository
"Main" branch
Main
Dev
Bug
Create branch "dev"
Commit
Merge dev into main
Diverging main: conflict?
Merge main into dev
Initialise repository
"Main" branch
Fork ("upstream" vs "origin")
Pull from upstream
Merge origin/main into dev
Clone (local repository)
Pull Request
Pull from *
Push to *
Main
Dev
Upstream
Main
Origin
Dev
Main
(local)
Bonus: it can force a team to double check projects!
A work that is not licensed is not public (paradox!)
There are many (open source) licences to pick up from, not only code-related.
www.choosealicense.org
The licence should be in the first commit you make.
Personal picks for science: Apache 2.0 and CC-BY-ND-4.0
(consider L-GPLv3.0 and CC-BY-4.0 too)
{
"license": "Apache-2.0",
"title": "physiopy/phys2bids: BIDS formatting of physiological recordings",
"upload_type": "software",
"creators": [
[...]
{
"orcid": "0000-0002-7796-8795",
"affiliation": "Florida International University",
"name": "Katie Bottenhorn"
},
[...]
],
"access_right": "open"
}
If your project is software related, think about publishing it.
While there are various journals that can be targeted for a software publication, JOSS is free and completely integrated in GitHub.
Independently from its kind, projects can have different types of contributions.
Different communities can have different requirements or follow different workflows.
Enters the contributors' guidelines
(and a code of conduct).
Depending on the community and the governance scheme, contributions might be recognised differently. Explicitly writing down how the community does it helps new contributors to join.
One way of recognising contributors is the all-contributors specification.
CI/CD workflows are your friend.
Workflows can require a bit more work to be set up, but they can save a lot of time and energy in the long run!
CI/CD workflows are your friend.
Workflows can require a bit more work to be set up, but they can save a lot of time and energy in the long run!
Testing a project is as important as developing it.
Arguably, it's even more important, so spend time on it!
There are multiple types of tests:
Making your project public is important: it will attract more users/readers and (possibly) more contributors.
Create a "release", and if the project is code-related, package it and distribute it!
Take advantage of the marketplace: there is a very high probability that what you are looking for is already available.
...you for the (sustained) attention!
... the physiopy contributors
... the MIP:Lab @ EPFL