Stefano Moia¹
1. Basque Center on Cognition, Brain and Language, San Sebastian, Spain
10.11.2020
An overview to jump into your own first open development project à la Brainhack
smoia | |
@SteMoia | |
s.moia.research@gmail.com |
1. Basque Center on Cognition, Brain and Language, San Sebastian, Spain
Stefano Moia¹
10.11.2020
An overview to jump into your own first open development project à la Brainhack
Open (Source Scientific Software) Development: the idea of developing a scientific tool:
Two main elements: the tool itself and the community around it.
The tool or project is not necessarily code based!
Version control systems are a way to manage and track changes to files.
VCS can be also found elsewhere (e.g. Wiki, GDocs, Box, ...)
Content
Aggregation/delivery
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...
Create branch "dev"
Commit
Merge dev into main
Diverging main
Merge main into dev
"Main" branch
Main
Dev
Bug
Create branch "dev"
Commit
Merge dev into main
Diverging main
Merge main into dev
"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!
Not all communities use labels, and those that use them might use them differently!
!
Open Development is not just about the tool being develop.
The greatest thing you can develop is the community around it!
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.
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!
A work that is not licensed is not public (paradox!)
There are many (open source) licenses to pick up from, not only code-related.
www.choosealicense.org
Deploy (release) it and give it a DOI.
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!
Automated workflows are your friend.
Everything can be automated, from testing to releasing (packaging end etc.).
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!
...the SPiN group @ BCBL
...you for the (sustained) attention!
... the Brightlab - ANVIL group@ Northwestern
... the physiopy contributors