o### Collaborations Workshop 2019 (CW19) #CollabW19 2019-04-01 to 2019-04-03
Collaborative Idea Group 3 - CI9-CW2CC
Reporter
Aleksandra Nenadic - anenadic@gmail.com
Participants
Aleksandra Nenadic
Robin Long
Louise Bowler
Jess Ward
Ilektra Christidi
James Graham
Context / Research Domain
Early-career researchers often attend training and workshops orientated around learning good programming techniques and other best practices for producing reproducible, robust research. Training of this type (Carpentries, short courses etc.) is applicable for researchers in a wide variety of domains.
Problem
People attending training do not always apply the learning to their research after it. There is a problem with motivation of training (e.g. people are in early stages of their PhDs and do not have a concrete problem yet) and sometimes they only realise the importance of the training once something has gone wrong - perhaps applying the lessons would have prevented / mitigated this (e.g. Version Control). There is a fine balance between teaching people these techniques too early or too late. Also, people sometimes feel overwhelmed with the stuff they have been taught (e.g. it may be too abstract) and find it difficult to take it back to their individual research problems and apply it in practice.
Solution
Infrastructure to support following up after a workshop / training session. The aim would be to keep people reminded of the lessons, but also to offer additional guidance if required to apply the training into practice.
This may include:
- A checklist / handbook of how to apply the lessons to your own work
- A way to manage volunteer time to help - e.g. office hours type thing - needs to fit the requirements of the audience
- Infrastructure for managing in-person meetings / surgeries (including CoC for setting a positive vibe and a welcoming environment (in particular for beginners) to ensure people feel invited to ask all sorts of questions and can bring their code in any state)
Diagrams / Illustrations
You can include one or two diagrams in this section. Please ensure you have the right to use the image(s), and include an attribution if applicable.
Alternative Ideas
GitHub Annotator idea
Context / Research Domain
Documentation in general, but especially for software project handover. All research domains.
Problem
Quite often, a lot of the detail of how and why a piece of software has been developed the way it did, is hidden inside GitHub Issue and PR discussion threads.
The kind of information that tends to get lost this way are the approaches that didn’t work, since the ones that did have some hope to make their way to the final documentation of the package, and they are the code implementation itself. But this information is crucial to future developers of the code, saving them time, effort and mistakes by warning them about the things that have been tried and failed.
Another category of information lost this way are the “loose ends”: things that can be improved or features that can be implemented, but did not due lack of time or other reasons. These can spawn new projects/proposals, or improve the codebase in the future.
Solution
A GitHub app that would help developers keep track of the pertinent information hidden inside Issue and PR comments - not the code or commit message itself - and create a “map of failures”.
The easiest way seems to be to automatically populate the repo wiki with such pertinent comments, every time a predefined trigger occurs. Possible triggers could be:
- When closing an issue, you’d have to specify the reason (drop-down, prompt…?): if resolved, provide the PR that resolved it and move on with life (not added to the failures map). If not, provide a reason, which will be added to the map. Same for when closing a PR without merging.
- When an issue or PR stays open longer than a predefined amount of time, prompt the developer for a reason. Have a “final” kind of text that would prevent bugging them again, possibly with the option to re-start.
- Manually flag specific comments for persistification (with a magic string…). Hints for when to do this could be when the suggested way to solve an issue changes, or the development in an existing PR changes course due to code review comments…
In addition to adding the comment (with a timestamp?) and the link to the Issue/PR that generated it, ideally one would like to prevent the issue, PR and related branch from being deleted in the future.
Another way to present the same info, but not sure how doable it would be, is to annotate a GH timeline of branches/commits with the pertinent comments.
Diagrams / Illustrations
Notes:
Illekra: documentation needed for handover, issues and pull requests hide many information and wealth of knowledge and documentation. What happens if something fails or is abandoned. Or pull requests stays for a year unattended. What do you do when someone else inherits this projects. Pull requests to stay open too long - to poke the person responsible, why something is abandoned, flag things to trigger certain actions and transfer them into wiki into github.
Louise: Thing that are useful, important - a way to flag them is needed.
_Jess: Map of the failures, so you do not take the same turn that people have already been before that did not work. _
_Annotate a timeline? Talking about comments not a commit. Shove comments into permanent #documentation. _
Idea 2 - Docuflow
Context / Research Domain
Please describe the context or research domain to which the problem applies
Documentation in software or projects
Problem
Description of the problem you are trying to solve
Many pieces of software lack documentation. There can be many reasons for this such as not knowing: How to document, Why to document, What types or documentation, or what methods exist to document.
Solution
Explanation of the solution to the problem you have identified
Create a flow chart / board displaying concepts under categories. This links to descriptions of Why that concept is need, how to enact it, and tools/links that can be useful.
Diagrams / Illustrations
Comments in Code | Readme | GitHub Readme |
Style Guide | Tutorials | Developer Docs |
User Docs | Requirements | DocStrings |
ReadMe:
Why?
README files should help people get started with installing the software and running it. Without it user may not know how to install or use the software.
How?
README files are usually a text file (.txt). These would README files typically contain instructions and additional help as well as details about patches or updates.
You can include one or two diagrams in this section. Please ensure you have the right to use the image(s), and include an attribution if applicable.
Robin: how to document things - documentation templates - simple web page resource information you select the type for documentation that you want or are creating with info on how to comment e.g. for a programming language and there are links to read more about each of the resources (with a small description for each). Almost like a hidden flowchart of things that need to be done.
_James: You should provide licence, that gives you one start, then more metadata gives you 2 stars, building like levels of progression of what needs to be done with an idea of building onto what can I do to make my dataset better. _
Aleks: Guidelines are useful. It’s often not obvious to people what decisions they should be making. E.g. Should I have a readme (yes), should it be Markdown? Are other formats okay?
_Louise: Guidance and having step by step ways of doing things is important. _
Illekra: are there standards or guidelines for this.
James: level one: README and licence files, but then more higher up people would argue what goes in the process. Some helps and prompt and links about what licence to chose, what should go into README file, etc.
Jess: even very fundamental guidance what goes into README.
_Robin - in the templates - we need guidance with info on why this particular things is important to do this and how to do it. _
Louise: Community ready checklist built into GitHub - under a repo within a github organisation then Insights/Community but only for public repos - maybe pro only accounts on GitHub have this. But only one person from a group knows about this and the rest were not aware.
Idea 3 (more of a problem at this stage!) - some sort of infrastructure to follow up after training
Context / Research Domain
Please describe the context or research domain to which the problem applies
Early-career researchers often attend training and workshops orientated around learning good programming techniques and other best practices for producing reproducible, robust research. Training of this type (Carpentries, short courses etc.) is applicable for researchers in a wide variety of domains.
Problem
Description of the problem you are trying to solve
People attending training do not always apply the learning to their research after it. There is a problem with motivation of training (e.g. people are in early stages of their PhDs and do not have a concrete problem yet) and sometimes they only realise the importance of the training once something has gone wrong - perhaps applying the lessons would have prevented / mitigated this (e.g. Version Control). There is a fine balance between teaching people these techniques too early or too late. Also, people sometimes feel overwhelmed with the stuff they have been taught (e.g. it may be too abstract) and find it difficult to take it back to their individual research problems and apply it in practice.
Solution
Explanation of the solution to the problem you have identified
Infrastructure to support following up after a workshop / training session. The aim would be to keep people reminded of the lessons, but also to offer additional guidance if required to apply the training into practice.
This may include:
- A checklist / handbook of how to apply the lessons to your own work
- A way to manage volunteer time to help - e.g. office hours type thing - needs to fit the requirements of the audience
- Infrastructure for managing in-person meetings / surgeries (including CoC for setting a positive vibe and a welcoming environment (in particular for beginners) to ensure people feel invited to ask all sorts of questions and can bring their code in any state)
Diagrams / Illustrations
You can include one or two diagrams in this section. Please ensure you have the right to use the image(s), and include an attribution if applicable.
Louise: Reproducible research - courses given to students - but they still do not know how to do it and take it into practice.
Post-workshop surgeries to help with this. LEt people come for training for the second time.
Jess: Give pilot projects to students post training e.g. play with git.
_Problem with motivation - people come too early and do not know why this teaching is valuable. _
_Illektra: mentoring scheme, follow up with students, set monthly meetings for this. Sitting and coding with them also helps, 1-2-1 approach. _
Aleks: Like a post-workshop aftercare? Some people come to SWC twice, the first time they didn’t quite see why it was important, come back once they’ve had the problem and understand the importance
Robin: Bring your own problem, almost 1-2-1 sessions
James: some RSGs have this - an RSE comes and spends an hour every other week with a certain project, almost like a temporary RSE placement in a particular group or project.
Louise: The above is great - really rewarding when it works, but time is an issue for most RSE groups.
_Illektra: Community version of support - remote and using screen sharing, distributed mentoring. _
Robin & Illektra: we may need github for this and than have some sort of matching between requests and mentors, or they can just scroll through and give comments
Jess: Someone volunteers an hour of their time and people can come and talk, would be useful for beginners in particular, set the vibe that there are no stupid questions
James: most people do not think their code is good enough to share, but need to make clear that we do not judge people for their code and some kind of policy or guidance to help improve and give advice to researchers writing code - make sure it’s fair and constructive - they have been trying to implement this at Soton, would like to do this but still at the initial policy level
Robin: not specific RSE help but questions around - am I putting enough comments, is my code in the right style for the programing language used?
Jess: documentation around whether someone else can reproduce this piece of code?
Illektra: The SSI should provide this system in some way for local RSGs to use