Frequently Asked Questions
As this is a FAQ, it will continue to grow as we update it. If you have any questions please submit them to the Workbench GitHub discussion forum.
I will attempt to divide these questions up by major categories, but these may shift around as questions come in.
If you have a question about definitions, consult our glossary
Lesson Transition
This section is applicable for transitioning between the former carpentries/styles lesson infrastructure and The Workbench.
How do I transition my lesson to using The Workbench?
Due to significant staffing changes in late 2023, The Carpentries is unable to provide support for transitioning unofficial lessons to use The Carpentries Workbench.
You can use the Lesson Transition Tool, which will:
- create a submodule for your lesson
- filter out the infrastructure-related commits
- transform the markdown syntax using {pegboard}
It requires Python, R, git, Make, and BASH (it is unknown if these routines will work with zsh). I have written out detailed instructions for the transition process, but please note: these assume you have administrative access to your lesson.
How do I transition a long-running fork to using The Workbench?
See the above section for instructions. You can copy the lesson-specific transition script to your fork folder to make things easier (though this depends on when you last updated your fork). If you do not have any intention of recieving or contributing your changes to the source, then the above section should be all that you need.
If you want to continue updating your fork, it will be a little more complicated because it depends on when you last updated your fork. There is some discussion in carpentries/workbench#51.
In short, the commit histories will be identical up until the point of the fork and then the commit history will diverge (but still be relatively compatible) until the point of transition. You may be able to merge the upstream into your fork, but it will not be easy and it will likely contain several merge conflicts. This is not to say that it cannot be done, but it highly depends on the level of customisation you did in the fork. Take for example a fork of the shell-novice lesson that had 16 commits ahead of swcarpentry/shell-novice. Attempting to update the transitioned fork resulted in 188 conflicts1:
Unmerged paths:
(use "git add/rm <file>..." as appropriate to mark resolution)
both added: .github/workflows/sandpaper-version.txt
both added: .gitignore
both added: CONTRIBUTING.md
both modified: README.md
both added: config.yaml
both deleted: data/data-shell.zip
both modified: episodes/01-intro.md
both modified: episodes/02-filedir.md
both modified: episodes/03-create.md
both modified: episodes/04-pipefilter.md
deleted by us: episodes/05-loop.md
both modified: episodes/05-script.md
both modified: episodes/07-find.md
added by us: episodes/data/data-shell.zip
added by them: episodes/data/shell-lesson-data.zip
deleted by them: episodes/fig/redirects-and-pipes.png
both modified: index.md
both added: instructors/instructor-notes.md
both modified: learners/discuss.md
both added: learners/reference.md
both added: learners/setup.md
$ rg -c '<<<<'
index.md:1
config.yaml:5
README.md:3
episodes/04-pipefilter.md:25
episodes/05-script.md:20
episodes/02-filedir.md:40
episodes/03-create.md:34
episodes/01-intro.md:3
episodes/07-find.md:25
instructors/instructor-notes.md:14
CONTRIBUTING.md:2
learners/discuss.md:3
learners/reference.md:12
learners/setup.md:1
$ rg -c '<<<<' | awk -F: '{sum+=$2} END{print sum}'
188
Local Clones
How do I update my clone after the transition from styles?
The easiest way is to rename your local clone to old-NAME
(where NAME
is the name of your repository folder) and then re-clone the lesson. You can find details on updating your local clone on the beta phase page.
Post-transition GitHub Forks
How do I update my fork after the transition from styles?
This is only applicable if you have created a fork of the lesson before 2023-02-06.
If you attempt to synchronise your fork from the GitHub interface and create a pull request, that pull request will fail. Instead, follow the instructions below.
The easiest way to do this is to delete your fork and re-clone. The commit history of the lesson has changed and you will be unable to commit until your fork reflects those changes (this is known as the burn it all down strategy):
- Save your edits on locally or in a scratch space.
- Delete your fork
- Create a new fork or use the “edit” button on the page you wish to edit.
- Apply your changes (NOTE The Workbench uses a different syntax. Here is a Transition Guide from Styles to Workbench for your reference).
Note that if you have a clone, you will need to also delete and re-clone.
If you have a fork of a lesson that you have modified significantly and wish to continue maintaining under The Workbench, contact Zhian Kamvar and he will help you transition your repository.
If you contribute directly on the lesson itself using the “edit” button on GitHub, a new branch will be created for you and you can edit on that branch without deleting your fork.
This method is not recommended because it runs the risk that you will accidentally merge histories in your fork.
Teaching
GitHub Forks
How do I create a fork for teaching?
A common pattern for teaching is to create a fork of a lesson, modify it to add or remove specific section. Because the pages on The Workbench are deployed by GitHub actions, there are a couple of extra steps you need to do to enable the pages to load after the transition.
In short, when you fork, to make it easier, you should bring in all branches, enable GitHub pages, and enable GitHub Actions. After that, you will have your lesson website and can teach from it.
You can find the instructions in issue 14 of the Dovetail blog series.
Workshop Websites
How do I add episodes to my workshop website?
Before 2020, instructors were occasionally encouraged to copy the episodes from a lesson into their workshop website to avoid situations where the lesson would change significantly while the workshop was being taught. In short, you can not do this. Instead, you can make a fork of the lesson and link that on your workshop website.
In the future, we will implement lesson versioning where you will be able to select a specific version of a lesson to teach from, so that you can always be sure that the content is stable.
The website https://htmlpreview.github.io allows you to display HTML pages hosted on GitHub without needing to set up GitHub pages. If you do not want to fork, but still want a working version you can teach from, you can head to a workbench repository, select the gh-pages
branch, select the index.html
file and click on copy permalink
and paste that into html preview:
For example: this is the workbench documentation as of 2023-02-07: https://htmlpreview.github.io/?https://github.com/carpentries/sandpaper-docs/blob/59651a69e7716c04edaf8f9c1c79abc18ce3e476/index.html
This is a very workable version of the lesson (with some styling differences as the default font could not be loaded).
The only catch is that you have to manually switch to instructor view by the URL: https://htmlpreview.github.io/?https://github.com/carpentries/sandpaper-docs/blob/59651a69e7716c04edaf8f9c1c79abc18ce3e476/instructor/index.html
And there you have a quick version of the lesson.
Learning
It should be noted that these conflicts are not all created by the transition. Conflicts are an inevitable consequence of long-running forks that are not regularly updated. The transitioned lesson just added to the conflicts.↩︎