# CodeRefinery software installation instruction revision ###### tags: `workshop` `lesson materials` :::info This is a note for making revision on [installation instructions](https://coderefinery.github.io/installation/) for a CodeRefinery workshop in May 2021 ::: ## Strategy After Radovan left, Anne and I discussed and we landed on changing the strategy to the following: 1. (For Win users only) Install Git (coming with Git Bash) 2. Config Git (if not yet done, get GitHub account and activate 2 factor authentication), set up SSH connection 3. Verify if you have miniconda, if not install from docs.conda.io/latest/miniconda.html, and disable making it default (or something like that, there are 2 places to tick) 4. (For Win users only) Configure Git Bash by following [this blog post](https://discuss.codecademy.com/t/setting-up-conda-in-git-bash/534473) to be able to access conda environment from Git Bash 5. Using Bash (Git Bash or terminal for Mac users or whatever), create a new conda environment using environment.yml we provide (we will also provide what to type in the command line) Then it will be simple and short. In Git Bash, they can use `nano`. ## Current items ### Bash * Relevant issue: * [possible confusion on git-bash recommendation #143](https://github.com/coderefinery/installation/issues/143) * Windows installation part needs reconsideration to not confuse learners (the first 3 lines) ### Terminal editors * Nano: No description that this does not come with Win (although it is possible to understand from description that it is installed as default on most Linux distributions.) * ### Python * Relevant issue: * [make it clear that old anaconda installations should be uninstalled first #145](https://github.com/coderefinery/installation/issues/145) * [Singularity container with everything inside #112](https://github.com/coderefinery/installation/issues/112): see the comments by Emilia, Radovan and Richard, about the conda package management with environment.yml/requirement.txt (https://github.com/coderefinery/software/) * Remark (may need to remove > from the code) * Verification requires "Git Bash terminal" although the Bash page allows not using it. * Verification of Anaconda installation for Linux and Mac is implemented as text in the last line in the "Installation on Linux and macOS" * "Installing required packages" - aren't they all installed via Anaconda3 installation? ### Git, including configuration and verification * Relevant issue: * [nice summary on how to configure editors #148](https://github.com/coderefinery/installation/issues/148) * Are we sure to allow other platform than GitHub for the workshop? If so, shouldn't it be conditional (i.e., all the team members use GitLab, GitHub for a specific organization etc.) * At least in the documentation lesson but perhaps also git lessons (depending on how PRs are processed there) we have options to run in gitlab so it would be good to highlight that the option is there, already at install stage * Order of installation for Win users; which should be first, either GitBash (should come with Git, I guess) or Conda/Anaconda? * Overall, the structure needs revision. * ### Visual diff tools * Should come with (optional) in parenthesis? * not sure I understand the question but it is an optional dependency ### Jupyter and JupyterLab * Relevant issues: * [optional installation of ipywidgets via extension manager is obsolete #146](https://github.com/coderefinery/installation/issues/146) * [jupyterlab github extension instruction update #134](https://github.com/coderefinery/installation/issues/134) * [Singularity container with everything inside #112](https://github.com/coderefinery/installation/issues/112): referring to the following issues * [Provide Docker image with everything that we will use during workshop #94](https://github.com/coderefinery/installation/issues/94) * [Docker installation instructions from Aalton Dec 2019 workshop #92](https://github.com/coderefinery/installation/issues/92) * [Install instructions for Jupyter/Jupyterlab use both pip and conda #86](https://github.com/coderefinery/installation/issues/86) * [Update/check instructions about widgets #82](https://github.com/coderefinery/installation/issues/82) * Also https://github.com/coderefinery/jupyter/issues/62 * Extensions are optional or not? * Is it OK to add all the extentions in Anaconda3 base environment? * `jupyterlab-git` latest version is for JupyterLab >= 3.0 * Should one update the `jupyterlab` to 3.0 or latest in Anaconda3 base? My understanding is that this makes mess.. * `pip` install - should we recommend to do so in the conda environment where they are working on (or in Anaconda3 base??) and do `python -m pip install` (ref. [conda lesson ep. 3, "Conda (+Pip): Conda wherever possible; Pip only when necessary"](https://carpentries-incubator.github.io/introduction-to-conda-for-data-scientists/03-using-packages-and-channels/index.html)) ### Snakemake * Relevant issue: * [consider only recommending snakemake-minimal #137](https://github.com/coderefinery/installation/issues/137) ### Setting up and removing accounts * Should be linked from Git page? * Should be right after Git instruction, as anyways Git needs to have config set up to connect to GitHub. * Do we still use Travis CI? * no ### Troubleshooting * Should be separated from the list of installation list? * Should be implemented within each item? * I would find it more intuitive closer to each item which also makes them more modular ### Zoom (Online workshops only) ## Thoughts - Better to separate as follows?: - Ideal composition / full package recommendation (for beginners?) - sounds good to separate this like that - Alternatives (for advanced users / if you are ...) - Relevant issue: [Double-check that requirements.txt and environment.yml are still up-to-date #87](https://github.com/coderefinery/installation/issues/87) - Radovan "personal opinion: for windows i would offer 3 routes: git bash, anaconda, WSL, and explain pros and cons, let participants choose, and then clearly document what they need to do" (31. mar 14:45, Zulip) - And there is a fourth one now? https://github.com/coderefinery/sphinx-lesson (running inside jupyterlab if I understood correctly) - Relevant issues: - [Workshop installation for Windows #90](https://github.com/coderefinery/installation/issues/90) - [possible confusion on git-bash recommendation #143](https://github.com/coderefinery/installation/issues/143) - [this seems to solve the no git log problem on Windows: git --no-pager less #113](https://github.com/coderefinery/installation/issues/114): If we go for offering alternatives including using Anaconda prompt, then this should be considered? - Installation of (Python) packages: - Ex. Snakemake page recommend to use Anaconda navigator to install additional package(s), while Jupyter doesn't. - through Anaconda navigator, pip, conda, etc. should we have an overall guidance (e.g. pip should be used in conda environmenet, see [Jupyter and Jupyterlab, pip install part](#Jupyter-and-JupyterLab) - if we use environment.yml we can perhaps do everything with that file and we don't have to go into the anaconda navigator? - connected question for me: do we recommend miniconda plus environment.yml or anaconda where most of it is already there but perhaps "too much" and also against recommendations we give in other lessons ("never install into the base environment") - Relevant issues: - [I got the suggestion to consider chocolatey for Windows installs #81](https://github.com/coderefinery/installation/issues/81) - [pip install snakemake fails on Python 3.7 due to datrie module #80](https://github.com/coderefinery/installation/issues/80) - Some have guide depending on OSs, some others are not. Order is different as well. -> should be consistent? - [give time estimate for installation steps. #128](https://github.com/coderefinery/installation/issues/128) ## Issues in question - [fix windows instructions for meld #144](https://github.com/coderefinery/installation/issues/144): what does "meld" mean? - meld is a program available on linux (and windows?) but not macos - To close?: - [Setup 'main' as default branch? 🤶🏽 #147](https://github.com/coderefinery/installation/issues/147) - I would keep it open. It is a good idea but probably too early but will be more and more relevant in future and at some point we can do it. - :+1: - [recommend installing git in conda on windows? #120](https://github.com/coderefinery/installation/issues/120) - [create installers for linux/osx/windows using conda constructor #64](https://github.com/coderefinery/installation/issues/64): Does this still work or need update? ## Strategy 1. (For Win users only) Install Git (coming with Git Bash) 2. Verify if you have miniconda, if not install from docs.conda.io/latest/miniconda.html, and disable making it default (or something like that, there are 2 places to tick) 3. (For Win users only) Configure Git Bash by following this blog post to be able to access conda environment from Git Bash 4. Config Git (if not yet done, get GitHub account and activate 2 factor authentication), set up SSH connection 5. Using Bash (Git Bash or terminal for Mac users or whatever), create a new conda environment using environment.yml we provide (we will also provide what to type in the command line) Then it will be simple and short. In Git Bash, they can use nano.