-
Notifications
You must be signed in to change notification settings - Fork 13
Description
I think the section on dependency management could improve with some (re)exploration of the topic and (potential) reorganization of the content.
It would be nice to present options along the reproducibility spectrum from easy (noting dependencies in a README file) to advanced solutions (containerization). During the workshop, we dive into the easy and middle-ground solutions. We should also be prepared to explain the differences between these options better, like what is the difference between renv environments and Docker containers.
I'm going to organize the ideas per programming language for now:
R
- easy: Suggest the
annotaterpackage to annotate package load calls. - easy: Use
sessionInfo()to print version information about R, the OS and attached or loaded packages + automate writing the output ofsessionInfo()into the README or another file. - middle-ground: Look into the
groundhogpackage. This is an interesting solution but it has some caveats, see: https://www.brodrigues.co/blog/2023-01-12-repro_r/ - advanced: Really figure out how
renvworks, including common issues. Some things to consider: should we ask participants to initializerenvat the beginning of the workshop already when they reorganize their project + how do you ensure thatrenvonly records the project libraries in the lockfile and not the system/global libraries (this happens now and then during the workshop).
Python
I'm not aware of easy and middle-ground solutions in Python that are comparable to the ones listed for R above. It might be nice to do some research into it but I don't think they're necessary to include in the workshop if they are not standard/best practices.
- advanced: Should we look into virtual environments for Python?
venvis apparently the standard library for Python, I think there is alsopipenvandcondaenvironments if you use those package managers. Similar torenv- should we ask participants to initialize these environments at the beginning of the workshop already. - advanced: Look into the generation of
requirements.txtandenviroment.ymlagain. Similar torenv- how do you ensure that only get project libraries noted and not the system/global libraries. We also assume that everyone uses eitherpiporconda- is that correct?
Other
- Binder could be a demo or optional?
- curate any MATLAB resources on the topic that participants have shared
- provide links to Docker tutorials