[Discussion] How to deal with environment mgmt problem
Picking up convo started by @adrn on twitter: regarding Learning to program is getting harder blog post.
The gist is that "the barrier between using a computer and programming a computer is getting higher." and that we have to deal with the overheads of "installing software, cloning repositories, or setting the Python search path!" Options presented in the post:
Back to the future: One option is to create computers, like my Commodore 64, that break down the barrier between using and programming a computer. Part of the motivation for the Raspberry Pi, according to Eben Upton, is to re-create the kind of environment that turns users into programmers.
Face the pain: Another option is to teach students how to set up and use a software development environment before they start programming (or at the same time).
Delay the pain: A third option is to use cloud resources to let students start programming right away, and postpone creating their own environments.
Right now, in the context of Astropy Tutorials and Workshops, I vote for "Delay the pain" BUT with transparency. TELL them what we're sweeping under the rug and with what tool.
If we wanted to work with Software/Data Carpentry to request/fund/support a Lesson dedicated to environment management, I would be very supportive.
An addition to the blog post options for Delay the Pain, it might be worth also following the Colaboratory project that Google recently adopted.
Users can add and execute a simple !pip install astropy cell, and voila! run the astropy tutorials from the browser. Needs a Google account, probably prefers Chrome and all that, but might be useful for introducing new users when getting things installed on their machines is not feasible.
Plus, all the sharing capabilities are build in. Here is a shared example of the quantities tutorial on my own drive: https://drive.google.com/file/d/1fTBKAUl0GgR4ESWT0fvNFFq2u_p2jtpp/view?usp=sharing
Feel free to play around with my copy. Also, Colab supports cell hiding as requested in #114.
My desire is to do both 2 (Face the pain) and 3 (Delay the pain). We can't expect people to use astropy (and astronomical python tools in general) if they can't get it working on their own machines.
Proposed teaching workflow for a workshop:
- Face the pain: Provide instructions for installing Anaconda 3, setting up an environment (e.g. for Python 2 support), and using conda to install packages (+ explanations for
condavspipinstall). Ask people to set up their installations before attending the workshop. - Delay the pain: Rely on cloud resources (e.g. Colab) during the workshop, when things inevitably go wrong on personal installations.
- Work through the pain: Devote 30-60 minutes post-workshop to helping people fix issues with their install. This will be a co-learning experience for both students and workshop facilitators.
I've added proposed content to the "Teaching Backend" column to the Tutorial Content Wishlist project board, regarding this topic.
https://github.com/astropy/astropy-tutorials/projects/4