+
+ {% comment %}
+ 8< ============================= until here ==================
+ {% endcomment %} <--------- until this line
+ ```
+
+4. Edit `_config.yml` to customize certain site-wide variables, such as: `carpentry` (to tell your
+ participants the lesson program for your workshop), `curriculum` and `flavor` for the
+ curriculum taught in your workshop, and `title` (overall title for all pages).
+
+ Editing hints are embedded in `_config.yml`,
+ and full instructions are in [the customization instructions][customization].
+
+5. Edit the `schedule.html` file to edit the schedule for your upcoming workshop. This file is
+ located in the `_includes` directory, make sure to choose the one from the appropriate `dc` (Data
+ Carpentry workshop), `lc` (Library Carpentry), or `swc` (Software Carpentry) subdirectory.
+
+### Working locally
+
+> Note: you don't have to do this, if you have already updated your site using the web interface.
+
+
+If you are already familiar with Git, you can clone the repository to your desktop, edit `index.md`,
+`_config.yml`, and `schedule.html` following the instruction above there, and push your changes back to the repository.
+
+```shell
+git clone https://github.com/your_username/YYYY-MM-DD-site
+```
+
+In order to view your changes once you are done editing, if you have bundler installed (see the
+[installation instructions below](#installing-software)), you can preview your site locally with:
+
+```shell
+make serve
+```
+and go to to preview your site.
+
+Before pushing your changes to your repository, we recommend that you also check for any potential
+issues with your site by running:
+
+```shell
+make workshop-check
+```
+
+Once you are satisfied with the edits to your site, commit and push the changes to your repository.
+A few minutes later, you can go to the GitHub Pages URL for your workshop site and preview it. In the example above, this is `https://gvwilson.github.io/2016-12-01-miskatonic`. The finished
+page should look [something like this](fig/completed-page.png?raw=true).
+
+
+## Update your repository description and link your website
+
+At the top of your repository on GitHub you'll see
+
+~~~
+No description, website, or topics provided. — Edit
+~~~
+
+Click 'Edit' and add:
+
+1. A very brief description of your workshop in the "Description" box (e.g., "Miskatonic University workshop, Dec. 2016")
+
+2. The URL for your workshop in the "Website" box (e.g., `https://gvwilson.github.io/2016-12-01-miskatonic`)
+
+This will help people find your website if they come to your repository's home page.
+
+## Update the content of the README file
+
+You can change the `README.md` file in your website's repository, which contains these instructions,
+so that it contains a short description of your workshop and a link to the workshop website.
+
+## Additional Notes
+
+**Note:**
+please do all of your work in your repository's `gh-pages` branch,
+since [GitHub automatically publishes that as a website][github-project-pages].
+
+**Note:**
+this template includes some files and directories that most workshops do not need,
+but which provide a standard place to put extra content if desired.
+See the [design notes][design] for more information about these.
+
+## Creating Extra Pages
+
+You may want to add extra pages to your workshop website.
+You can do this by putting either Markdown or HTML pages in the website's root directory
+and styling them according to the instructions give in
+[the lesson template][lesson-example].
+
+## Installing Software
+
+If you want to set up Jekyll so that you can preview changes on your own machine before pushing them
+to GitHub, you must install the software described in the lesson example [setup
+instructions](https://carpentries.github.io/lesson-example/setup.html#jekyll-setup-for-lesson-development).
+
+## Getting and Giving Help
+
+We are committed to offering a pleasant setup experience for our learners and organizers.
+If you find bugs in our instructions, or would like to suggest improvements,
+please [file an issue][issues]
+or [mail us][email].
+
+[email]: mailto:matt.jaquiery@psy.ox.ac.uk
+[customization]: https://UKRN-Open-Research.github.io/workshop-template/customization/index.html
+[dc-site]: https://datacarpentry.org
+[design]: https://UKRN-Open-Research.github.io/workshop-template/design/index.html
+[faq]: https://UKRN-Open-Research.github.io/workshop-template/faq/index.html
+[github-project-pages]: https://help.github.com/en/github/working-with-github-pages/creating-a-github-pages-site
+[issues]: https://github.com/UKRN-Open-Research/workshop-template/issues
+[lesson-example]: https://UKRN-Open-Research.github.io/lesson-example/
+[swc-site]: https://software-carpentry.org
+[lc-site]: https://librarycarpentry.org
+
+## Acknowledgements
+
+This repository is adapted from The Carpentries' ([Software Carpentry][swc-site], [Data Carpentry][dc-site], and
+[Library Carpentry][lc-site]'s) template for creating websites for workshops.
+The Carpentries offer effective, focused workshops on practical research skills.
diff --git a/_config.yml b/_config.yml
new file mode 100644
index 0000000..c155d4f
--- /dev/null
+++ b/_config.yml
@@ -0,0 +1,242 @@
+---
+
+topic:
+title:
+instructors: []
+instructor_emails: []
+helpers: []
+# A list of hh|mm time formats [avoids jekyll auto-conversion].
+# Only days with scheduled items get a start time.
+# Days which can't be matched will use the first entry.
+start_times: ["09|00"]
+# list of files in _includes/install_instructions to use in the setup page
+setup_files: []
+language: en
+venue:
+address:
+country:
+latitude:
+longitude:
+start_date:
+collaborative_notes:
+eventbrite:
+# list of files in path _includes/intro/* .md files can be customised; .html files cannot be customised. Files with an initial _ are ignored.
+optional_intro_sections: ["requirements", "accessibility"]
+
+# Custom but fixed fields
+kind: workshop
+ukrn_email: ORT@ukrn.org
+repository: /
+carpentries_site: https://carpentries.org/
+pre_survey: https://carpentries.typeform.com/to/wi32rS?slug=
+post_survey: https://carpentries.typeform.com/to/UgVdRQ?slug=
+
+# Fixed fields
+collections:
+ episodes:
+ output: true
+ permalink: /:path/index.html
+ episodes_rmd:
+ output: true
+ permalink: /:path/index.html
+ extras:
+ output: true
+ permalink: /:path/index.html
+
+defaults:
+ - values:
+ root: .
+ layout: page
+ - scope:
+ path: ""
+ type: episodes
+ values:
+ root: ..
+ layout: episode
+ - scope:
+ path: ""
+ type: extras
+ values:
+ root: ..
+ layout: page
+
+exclude:
+ - Makefile
+ - bin/
+ - .Rproj.user/
+highlighter: rouge
+
+# UKRN Workshop Builder metadata
+# Describes each of the custom variables
+ukrn_wb:
+ # We include the fields structure so that we can access JSON conversion of fields more readily (to numerical array where keys correspond to this numerical array).
+ # This does mean that all properties are required for all fields
+ - fields_structure:
+ - name # Pretty name of the field
+ - type # Data type
+ - help # Help text
+ - is_array # Whether data is a list
+ - is_required # Whether field is required
+ - format # Formatting details for data
+ - special # Special information for deriving data e.g. options list
+ - fields:
+ - topic:
+ - Workshop topic
+ - string
+ - >-
+ The topic is used to search for pre-existing lessons you can include in your workshop.
+ - false
+ - true
+ - topic
+ - # special
+ - title:
+ - Workshop title
+ - string
+ - >-
+ The title should let people know the most important information - where the workshop is and what it covers.
+ - false
+ - true
+ - # format
+ - # special
+ - instructors:
+ - Workshop instructor(s)
+ - string
+ - >-
+ Instructor name(s)
+ - true # is_array
+ - true # is_required
+ - # format
+ - # special
+
+ - instructor_emails:
+ - Contact email address(es)
+ - string
+ - >-
+ Instructor email address(es) for questions/comments/feedback.
+ - true # is_array
+ - # is_required
+ - email # format
+ - # special
+ - helpers:
+ - Workshop helper(s)
+ - string
+ - >-
+ Helper name(s)
+ - true # is_array
+ - # is_required
+ - # format
+ - # special
+ - start_times:
+ - Start time
+ - time
+ # The time is actually converted to 09_00 format
+ - >-
+ Start times (in 0900 format) for each day of the workshop. If shorter than the number of days, remaining days will use the first entry.
+ - true
+ - true
+ - hours_minutes
+ - # special
+
+ - setup_files:
+ - Setup instructions
+ - filename
+ - >-
+ List of setup guides to include on the homepage.
+ - true # is_array
+ - # is_required
+ - # format
+ - ["_includes/install_instructions"] # special - directories to search
+
+ - language:
+ - Workshop language
+ - string
+ - >-
+ Language code for the language the workshop will be conducted in.
+ - # is_array
+ - # is_required
+ - iso-639-1
+ - # special
+
+ - venue:
+ - Workshop venue
+ - string
+ - >-
+ The brief name of the institution that hosts the workshop without address (e.g., "Euphoric State University").
+ - # is_array
+ - # is_required
+ - # format
+ - # special
+ - address:
+ - Venue address
+ - string
+ - >-
+ The full street address of workshop (e.g., "Room A, 123 Forth Street, Blimingen, Euphoria"), videoconferencing URL, or 'online'.
+ - # is_array
+ - # is_required
+ - long # format
+ - # special
+ - country:
+ - Workshop country
+ - string
+ - >-
+ Country code for the institution that hosts the workshop.
+ - # is_array
+ - # is_required
+ - iso-3166-1-alpha-2
+ - # special
+ - latitude:
+ - Workshop latitude
+ - number
+ - >-
+ Latitude of workshop venue (use https://www.latlong.net").
+ - # is_array
+ - # is_required
+ - latitude
+ - # special
+ - longitude:
+ - Workshop longitude
+ - number
+ - >-
+ Longitude of workshop venue (use https://www.latlong.net").
+ - # is_array
+ - # is_required
+ - longitude
+ - # special
+
+ - start_date:
+ - Workshop start date
+ - date
+ - >-
+ Date the workshop starts.
+ - # is_array
+ - # is_required
+ - years-months-days
+ - # special
+
+ - collaborative_notes:
+ - Collaborative notes link
+ - string
+ - >-
+ URL for the workshop collaborative notes, e.g. an Etherpad or Google Docs document.
+ - # is_array
+ - # is_required
+ - # format
+ - # special
+ - eventbrite:
+ - Eventbrite key
+ - string
+ - >-
+ The alphanumeric key for Eventbrite registration, e.g., "1234567890AB".
+ - # is_array
+ - # is_required
+ - # format
+ - # special
+ - optional_intro_sections:
+ - Optional introductory sections
+ - filename
+ - >-
+ Optional introductory sections which can be included on the homepage and customised.
+ - true # is_array
+ - # is_required
+ - # format
+ - ["_includes/intro"] # special - directories to search
diff --git a/_episodes/.gitkeep b/_episodes/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/_episodes/break.md b/_episodes/break.md
new file mode 100644
index 0000000..20e199b
--- /dev/null
+++ b/_episodes/break.md
@@ -0,0 +1,18 @@
+---
+title: "Break" # title of the episode
+teaching: # time required to teach (minutes)
+exercises: # time required for participants to do the activities (minutes)
+duration: 30 # duration for a break, not needed if teaching/exercises are present (minutes)
+# summary of the episode content for displaying on the schedule page
+summary: >-
+ Allowing participants breaks helps everyone stay alert and focused.
+questions: # list of questions we are trying to answer
+objectives: # list of learning outcomes
+keypoints: # list of take-home points
+is-break: true # whether this episode is a break (has different presentation)
+ukrn_wb_rules: # list of rules for the UKRN Workshop Builder tool
+ - allow-multiple # when dragged into the schedule, create a new instance
+ - undeletable # can't be deleted
+---
+
+This is a time for you to get some refreshment and clear your mind a little in preparation for the next part of the workshop.
diff --git a/_episodes/template.md b/_episodes/template.md
new file mode 100644
index 0000000..e1282be
--- /dev/null
+++ b/_episodes/template.md
@@ -0,0 +1,119 @@
+---
+title: # title of the episode
+teaching: # time required to teach (minutes)
+exercises: # time required for participants to do the activities (minutes)
+duration: # duration for a break, not needed if teaching/exercises are present (minutes)
+# summary of the episode content for displaying on the schedule page
+summary: >-
+questions: # list of questions we are trying to answer
+objectives: # list of learning outcomes
+keypoints: # list of take-home points
+is-break: # whether this episode is a break (has different presentation)
+ukrn_wb_rules: # list of rules for the UKRN Workshop Builder tool
+ - allow-multiple # when dragged into the schedule, create a new instance
+ - hidden # don't show in the builder
+ - template # is a template
+ - undeletable # cannot be removed using the tool
+
+ukrn_wb:
+ - fields_structure:
+ - name # Pretty name of the field
+ - type # Data type
+ - help # Help text
+ - is_array # Whether data is a list
+ - is_required # Whether field is required
+ - format # Formatting details for data
+ - special # Special information for deriving data e.g. options list
+ - fields:
+ - title:
+ - Title
+ - string
+ - >-
+ The title for the episode
+ - false
+ - true
+ - null
+ - null
+ - teaching:
+ - Teaching time
+ - number
+ - >-
+ The number of minutes teaching time required
+ - false
+ - false
+ - null
+ - null
+ - exercises:
+ - Working time
+ - number
+ - >-
+ The number of minutes required to complete any exercises
+ - false
+ - false
+ - null
+ - null
+ - duration:
+ - Duration
+ - number
+ - >-
+ Additional duration not accounted for by teaching or exercise time (e.g. break time)
+ - false
+ - false
+ - null
+ - null
+ - summary:
+ - Summary
+ - string
+ - >-
+ Short text summarising what happens in the episode
+ - false
+ - false
+ - long
+ - null
+ - questions:
+ - Questions
+ - string
+ - >-
+ Questions which will be addressed during the episode
+ - true
+ - false
+ - long
+ - null
+ - objectives:
+ - Objectives
+ - string
+ - >-
+ Learning outcomes for the episode
+ - true
+ - false
+ - long
+ - null
+ - keypoints:
+ - Key points
+ - string
+ - >-
+ The take-home points for the episode
+ - true
+ - false
+ - long
+ - null
+ - is-break:
+ - Break
+ - boolean
+ - >-
+ Whether this episode is a break (breaks look different in the schedule)
+ - false
+ - false
+ - null
+ - null
+ - ukrn_wb_rules:
+ - UKRN Workshop Builder rules
+ - string
+ - >-
+ List of special rules to apply when this episode is processed by the UKRN Workshop Builder
+ - true
+ - false
+ - ukrn-wb-rules
+ - ['allow-multiple', 'hidden', 'template']
+---
+
diff --git a/_episodes_rmd/.gitkeep b/_episodes_rmd/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/_episodes_rmd/data/.gitkeep b/_episodes_rmd/data/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/_extras/.gitkeep b/_extras/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/_extras/about.md b/_extras/about.md
new file mode 100644
index 0000000..aa7beea
--- /dev/null
+++ b/_extras/about.md
@@ -0,0 +1,6 @@
+---
+layout: page
+title: About
+permalink: /about/
+---
+{% include carpentries.html %}
diff --git a/_extras/customization.md b/_extras/customization.md
new file mode 100644
index 0000000..92d5cbc
--- /dev/null
+++ b/_extras/customization.md
@@ -0,0 +1,257 @@
+---
+layout: page
+title: Customizing Your Workshop's Website
+permalink: /customization/index.html
+---
+
+## Table of Content
+
+* TOC
+{:toc}
+
+## Configuration File `_config.yml`
+
+You should edit the `_config.yml` configuration file in the root directory of your workshop to
+configure some site-wide variables and make the site function correctly:
+
+* `carpentry` - to tell us which carpentry workshop this is. Possible values are:
+ - `"swc"` for Software Carpentry workshops,
+ - `"dc"` for Data Carpentry workshops,
+ - `"lc"` for Library Carpentry workshops, and
+ - `"cp"` for general Carpentries events such as instructor trainings (for which you should use
+ as the website template).
+* `curriculum` - to tell us which curriculum is being taught.
+ At the moment, applicable to Software and Data Carpentry workshops only.
+ Possible values are:
+ - `"dc-ecology"`, `"dc-genomics"`, `"dc-socsci"`, or `"dc-geospatial"` for Data Carpentry
+ workshops
+ - `"swc-inflammation"` or `"swc-gapminder"` for Software Carpentry workshops.
+* `flavor` - `"r"` or `"python"` depending on which lessons are being taught at the workshop
+ (currently only for Data Carpentry and Software Carpentry workshops).
+* `title` - overall title for the workshop. If set (i.e., different from "Workshop Title" or empty),
+ it will appear in the "jumbotron" (the gray box at the top of the page). This variable is also
+ used for the title of the extra pages. More information about extra pages are [available in the
+ README](https://github.com/carpentries/workshop-template#creating-extra-pages).
+
+For example, if the URL for the repository is `https://github.com/gvwilson/2015-07-01-miskatonic`,
+the URL for the website will be `http://gvwilson.github.io/2015-07-01-miskatonic`.
+
+You should not need to modify any of the other variable values in `_config.yml`.
+
+## Home Page (`index.md`): data in the YAML header
+
+Your workshop's home page lives in `index.md`,
+which must define the values below in its header.
+If your workshop is taught online, see the
+[following section](#for-online-workshops) for customization
+options.
+
+* `layout` must be `workshop`.
+
+* `venue` is the short name of the institution or group hosting the
+ workshop, like "Euphoric State University". It should *not*
+ include the address or other details, since this value is
+ displayed in a table on websites (e.g.,
+ ). See section
+ below for value to use for online workshops.
+
+* `address` is the workshop's address (including details like the
+ room number). The address should be all on one line.
+ See section below for value to use for online workshops.
+
+* `country` must be a two-letter ISO-3166 code for the country in
+ which the workshop is going to take place, such as "fr" (for
+ France) or "nz" (for New Zealand) - see [Wikipedia](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements)
+ for a complete list. See section below for value to use for
+ online workshops.
+
+* `language` is the language that will be used in the workshop.
+ It must be an [ISO 639-1 code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes).
+ Note that two-letter codes mean different things for countries
+ and languages: "ar" is Arabic when used for a language, but
+ Argentina when used for a country.
+
+* `latitude` and `longitude` are the latitude and longitude of the workshop
+ site (so we can put a pin on our map). You can use
+ [this site](https://getlatlong.net/) to find these values.
+ See section below for value to use for online workshops.
+
+* `start_date` is the workshop's starting date in YYYY-MM-DD format,
+ such as `2015-07-01`. You must use four digits for the year and
+ two each for the month and day.
+
+* `instructors` is a comma-separated list of instructor names. The
+ list must be enclosed in square brackets, and each name must be in
+ double quotes, as in `["Alan Turing","Grace Hopper"]`. Do not
+ include other information (such as the word "instructor") in these
+ values.
+
+* `helpers` is a comma-separated list of helper names formatted in the
+ same way as the instructor names. If there are no helpers, use an
+ empty list `[]`.
+
+* `contact` is the contact email address to use for your workshop.
+ If you do not provide a contact email address, your website will
+ display the address for the workshop coordinators (who probably
+ won't be able to answer questions about the specific details of
+ your workshop).
+
+The header may optionally define the following:
+
+* `collaborative_notes` is the URL for the Etherpad for your workshop.
+ If you are not using an Etherpad, you can delete this line. You can
+ create a carpentries etherpad [here](https://pad.carpentries.org/).
+
+* `eventbrite` is the multi-digit Eventbrite registration key. If you
+ are using Eventbrite, the Carpentries Regional Coordinators will
+ give this to you. If you are using something else, you may delete
+ this line. Note: this value must be given as a string in double
+ quotes, rather than as a number.
+
+### For online workshops
+
+If the workshop is online, follow the same instructions as above with the
+following modifications:
+
+* `venue`: Use the name of the institution that organizes the workshop and do
+ not include a mention that it is an online workshop.
+* `address`: If you can safely share the URL for the videoconferencing, you may
+ list it here (it must start with `http` or `https`); if you cannot or prefer
+ to not share the videoconferencing information, use the value `online`.
+* `country`: Please use the country associated with the host institution for the
+ workshop.
+* `latitude` and `longitude`: if it makes sense, use the coordinates for the
+ host institution. If it does not, use `0` for both the latitude and the
+ longitude.
+
+By default, the Setup Instructions will list the installation instructions for the
+videoconferencing service Zoom.
+If you use a different videoconferencing service,
+you can edit the file in `_includes/install_instructions/videoconferencing.html`
+to include the relevant installation instructions.
+
+## Home Page: Schedule
+
+The schedule is automatically generated by inspecting the values in
+`workshop-lessons` in `_config.yml`.
+
+The schedule is formatted using a table. If you would like to learn more about
+how to write tables in HTML, here is an [overview from
+Mozilla](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table) and
+the [w3schools](https://www.w3schools.com/html/html_tables.asp).
+
+## Home Page: Setup Instructions
+
+If you need assistance with customizing the setup instructions for your website,
+feel free to ask your questions in the Carpentries
+[Instructors Slack channel](https://swcarpentry.slack.com/archives/C08BVNU00)
+([join The Carpentries Slack workspace](https://swc-slack-invite.herokuapp.com/)).
+
+### Software Carpentry workshops
+
+#### Default settings
+
+For Software Carpentry workshops,
+setting the `flavor` variable in `_config.yml` to `r` or `python`
+will include the respective installation instructions for these tools.
+Additionally, by default, the installation instructions for
+a text editor, the Bash shell, and Git are included.
+
+#### If you need to remove tools
+
+If you need to remove any of the instructions for the default
+set of tools,
+you can delete lines that include these instructions in
+the `_includes/swc/setup.html` file.
+
+#### If you need to add tools
+
+If you need to add installation instructions for other tools,
+we provide installation instructions for SQL and OpenRefine.
+To make them appear on your workshop website,
+you can move the `{% raw %}{% include %}{% endraw %}` statements outside the comment
+block in `_includes/swc/setup.html`.
+
+If you need to add installation instructions for other tools,
+you will need to write your own. You can use installation instructions
+for other tools located in the `_includes/install_instructions/` folder
+as examples.
+
+### Data Carpentry workshops
+
+For Data Carpentry workshops,
+installation instructions live on the workshop overview page for each curriculum.
+Instead of including installation instructions in the workshop template,
+the workshop template includes links to these instructions.
+The correct link will be displyed
+when using the appropriate combination of values
+for the `curriculum` and `flavor` variables
+in the `_config.yml` file.
+
+### Library Carpentry workshops
+
+By default, Library Carpentry workshop websites
+include installation instructions for the Bash shell and Git.
+
+You may need to add installation instructions for additional tools
+you will be using during your workshop
+by editing the `_includes/lc/setup.html` file.
+You can either write your own instructions using the ones
+provided in `_includes/lc/setup.html` as an example,
+or, if you are using tools that already have installation instructions
+provided for Software Carpentry,
+you can add `{% raw %}{% include install_instructions/ %}{% endraw %}`
+where `` needs to be replaced by one of the files
+in the `_includes/install_instructions` folder.
+
+## Homepage: who can attend?
+
+If you want to specify who can attend the workshop you are advertising,
+there is a commented-out section in `index.md` that you can use to
+inform workshop website visitors of who can attend the event.
+You may want to specify that only members of your university,
+department, etc. can attend or that the event is open to the public.
+We don't provide templated text for this as each situation is different.
+We do provide a section, called "Who can attend?" for you to specify this
+information.
+
+To use it, move the {% raw %}{% endcomment %}{% endraw %} line above the
+`
` tag marking the beginning of this section and edit the paragraph
+to reflect the attendance policy for your workshop.
+
+## Updating the repository
+
+If for some reason,
+such as the installation instructions having become disconnected
+with the current lesson material,
+you need to get changes from this repository
+into the clone of it with your workshop page,
+please follow the steps bellow:
+
+1. Add the workshop-template repository as upstream:
+ ~~~
+ $ git remote add upstream https://github.com/carpentries/workshop-template.git
+ ~~~
+ {: .language-bash}
+
+2. Fetch the data from upstream repository (also know as the workshop-template
+ repository):
+ ~~~
+ $ git pull upstream
+ ~~~
+ {: .language-bash}
+
+3. Address possible merge conflicts, and
+ ~~~
+ $ git commit -a
+ ~~~
+ {: .language-bash}
+
+4. Push the changes to your repository on GitHub:
+ ~~~
+ $ git push origin gh-pages
+ ~~~
+ {: .language-bash}
+
+
+{% include links.md %}
diff --git a/_extras/design.md b/_extras/design.md
new file mode 100644
index 0000000..2f7b58b
--- /dev/null
+++ b/_extras/design.md
@@ -0,0 +1,166 @@
+---
+layout: page
+title: Background and Design
+permalink: /design/
+---
+
+## Project structure
+
+This template is a skeleton for creating workshop websites.
+It is used by the [UKRN Workshop Builder](/404.html) to produce repositories containing complete, bespoke workshop websites which are owned and controlled by the individual workshop hosts.
+The UKRN offers train-the-trainer instruction taking people through the creation of their workshop using the Builder tool.
+
+We can understand how to customise websites created from this template by understanding how the Builder tool does its job.
+The overarching framework in which we work is as follows:
+* **Topics** are areas of Open Research practice for which the UKRN has developed enough expertise and resources to allow people to design and deliver **workshops** teaching people the skills they need to implement those practices in their own work.
+ Topics will usually be accompanied by a [UKRN Primer](https://ukrn.org/primers) and other central resources.
+ * Examples include _Open Code_ and _Preregistration_.
+* **Workshops** are taught classes which equip attendees with the practical skills necessary to embed an Open Research **topic** in their workflow.
+ Each workshop is designed and delivered by a researcher and covers the practical implementation of a topic for researchers _in a particular area_.
+ Each workshop is supported by a website which contains all of the resources required to participate.
+ The topic of the workshop is delivered via a series of **lessons**.
+* **Lessons** are collections of **episodes** and form modular blocks of content on specific skills.
+ Lessons are only used for collecting episodes together - they don't actually show up as discrete entities in the final workshops.
+ * Examples for lessons in the _Open Code_ topic might be: _Introducing Open Code_, _Version Control_, _Getting a DOI for Code_.
+* **Episodes** are indivisible chunks of content.
+ Episodes can be interspersed with breaks.
+ * The _Version Control_ lesson might include episodes on _Introducing Git_, _Publishing on GitHub_, and _Semantic Versioning_.
+
+### How the Builder tool works
+
+The Builder tool takes the following steps:
+1. Create a repository in the instructor's GitHub account from this template.
+2. Trim the template down to remove references to unused topics, implement any custom changes to the introductory or general-purpose pages, and write the schedule from the list of selected episodes.
+3. Import selected Lessons from existing GitHub repositories
+4. Customise the imported Lessons
+ 1. Remove unused episodes
+ 2. Prepend the repository owner name to the resources and their references to avoid conflicts
+ 3. Apply any customisation to episodes
+
+All of these steps can be reproduced manually.
+Care should be taken when implementing episodes from different sources that they do not have conflicts over files in shared folders (e.g. that you don't have two different episodes trying to create `fig/example01.png`). Make sure to update references to these resources as well as the names of the resources themselves!
+
+### Customising Lessons
+
+Lessons are stored as GitHub repositories based on this template, but can be barebones because only the content is imported.
+Lessons should have at least one item in the `_episodes` or `_episodes_rmd` directory, and may additionally have resources in other directories.
+Lessons are imported into workshop websites and built and served as Jekyll pages as described below.
+
+To make your lesson appear automatically as an option in the appropriate workshop, ensure the GitHub repository has the appropriate tags. All lessons need the `ukrn-open-research` tag, and at least one topic tag (e.g. `open-code`) specifying which workshops the lesson will work with.
+
+#### Gotchas
+
+The Lessons require shared files which are shared with this basic template (e.g. layouts `_layouts`), and would therefore be duplicated for each lesson.
+To avoid this issue, the Builder tool checks whether the file to be copied is exactly the same as the version in the template, and skips it if so.
+If it is different, the user and repository are prepended to the filename, so `_layouts/base.html` becomes `_layouts/github-user_example-lesson_base.html` and references to `_layouts/base.html` in the lesson files are updated accordingly.
+
+## Working with Git and GitHub
+
+There are a few things you need to know in order to understand why we
+do things the way we do. Some of them are specific to GitHub, rather
+than Git itself.
+
+1. Git uses the term "clone" to mean "a copy of a repository".
+ GitHub uses the term "fork" to mean, "a copy of a GitHub-hosted
+ repo that is also hosted on GitHub", and the term "clone" to mean
+ "a copy of a GitHub-hosted repo that's located on someone else's
+ machine". In both cases, the duplicate has a remote called
+ `origin` that points to the original repo; other remotes can be
+ added manually.
+
+2. A user on GitHub can only have one fork of a particular repo.
+ This is a problem for us because an instructor may be involved in
+ several workshops, each of which has its own website repo. To avoid
+ this issue, we use the template functionality (you could also use the
+ `import.github.com` functionality).
+
+3. If a repository has a file called `README.md` in its root
+ directory, GitHub displays the contents of that file on the
+ repository's home page.
+
+4. If a repository has a branch called `gh-pages` (which stands for
+ "GitHub pages"), then GitHub uses the HTML and Markdown files in
+ that branch to create a website for the repository. If the
+ repository's URL is `http://github.com/darwin/finches`, the URL
+ for the website is `http://darwin.github.io/finches`.
+
+5. If an HTML or Markdown file has a header consisting of three
+ dashes, some data about the page, and three more dashes:
+
+ ```yaml
+ ---
+ key: value
+ other_key: other_value
+ ---
+ content of the page
+ ```
+
+ then GitHub doesn't just copy the file over verbatim. Instead, it
+ runs the file through a translator called [Jekyll][jekyll] that
+ looks for specially-formatted commands embedded in the file and
+ uses them to fill in the page.
+
+6. Commands can be embedded in the body of a page. One is
+ `{% raw %}{% include something.html %}{% endraw %}`, which tells
+ Jekyll to copy the contents of `something.html` into the file
+ being translated; this is used to create standard headers and
+ footers for pages. Another is `{% raw %}{{variable}}{% endraw %}`: when Jekyll sees
+ this, it replaces it with the value of `variable`. This is used
+ to insert things like a contact email address and the URL for our
+ Twitter account.
+
+7. Jekyll gets variables from two places: a file called `_config.yml`
+ located in the repo's root directory, and the header of each
+ individual page. Variables from `_config.yml` are put in an
+ object called `site`, and referred to as `site.variable`, so that
+ (for example) `{% raw %}{{site.swc_site}}{% endraw %}` in a page is replaced by the URL
+ of the main Software Carpentry web site ({{site.swc_site}}). Variables from the
+ page's header are put in an object called `page`, and referred to
+ as `page.variable`, so if a page's header defines a variable
+ called `venue`, `{% raw %}{{page.venue}}{% endraw %}` is replaced by "Euphoric State
+ University" (or whatever value the variable has).
+
+8. If a page uses `{% raw %}{% include something.html %}{% endraw %}`
+ to include a snippet of HTML, Jekyll looks in a directory called
+ `_includes` to find `something.html`. It always looks there, and
+ nowhere else, so anything we want people to be able to include in
+ their pages has to be stored in `_includes`.
+
+9. A repository can have another special directory called `_layouts`.
+ If a page like `index.html` has a variable called `layout`, and
+ that variable's value is `standard.html`, Jekyll loads the file
+ `_layouts/standard.html` and copies the content of `index.html`
+ into it, then expands the result. This is used to give the pages
+ in a site a uniform appearance.
+ We have created two layouts for workshop pages:
+
+ * `workshop.html` is used for workshops' home pages, and is the
+ layout for the `index.html` page in your repo's root directory.
+ That `index.html` page's header must define several variables as
+ specified in the the customization instructions in order for
+ your workshop to be included in our main website.
+
+ * `page.html` is used for any other pages you want to create.
+ **Note:** if you create extra pages, you *must* edit the values
+ in the top section of `_config.yml` as described in
+ [the lesson template documentation]({{ site.example_site }}).
+
+## Extra Directories
+
+This workshop template shares resources with the template used for
+Carpentry lessons. As a result, your workshop website's repository
+contains directories that most workshops don't need, but which can be
+used to store extra material when necessary:
+
+* `_extras/`: extra pages (like this one).
+* `_episodes/`: lesson episodes (which workshops usually don't have).
+* `_episodes_rmd/`: R Markdown lesson episodes (if any).
+* `code/`: for code samples.
+* `data/`: for data files.
+* `fig/`: for figures and other images.
+* `files/`: for miscellaneous files.
+
+For more information on these, please see [the documentation for the
+lesson template]({{ site.example_site }}).
+
+[jekyll]: https://jekyllrb.com/
diff --git a/_extras/faq.md b/_extras/faq.md
new file mode 100644
index 0000000..aaf8e23
--- /dev/null
+++ b/_extras/faq.md
@@ -0,0 +1,142 @@
+---
+layout: page
+title: FAQ
+permalink: /faq/index.html
+---
+
+## General
+
+*Where can I get help?*
+: Mail us at [{{site.email}}](mailto:{{site.email}}),
+ or join our [discussion list]({{site.swc_site}}/join/)
+ and ask for help there.
+
+*What if I can't wait?*
+: Run `make workshop-check` to run the workshop homepage checking program on `index.html`.
+
+*Where can I report problems or suggest improvements?*
+: Please file an issue against [{{site.workshop_repo}}](this repository)
+ or [mail us](mailto:{{site.email}}).
+
+*Why does the workshop repository have to be created by importing rather than forking?*
+: Because any particular user can only have one fork of a repository,
+ but instructors frequently need to work on several workshops at once.
+
+*Why do I have to be logged in before I start the import?*
+: It's a known issue with GitHub's importer.
+
+*Why does the workshop repository name have to follow the `YYYY-MM-DD-site` pattern?*
+: This makes it easy for coordinators to track workshops.
+ There are plans to move that coordination into [AMY][amy],
+ but until that happens this pattern makes it easy to sort workshops
+ by date without requiring an additional start-date column.
+ **Note: `YYYY-MM-DD` should be the start date of the workshop.**
+
+*Why use the `gh-pages` branch instead of `master`?*
+: Because [GitHub automatically publishes `gh-pages`][github-pages] as a website.
+
+*Why use Jekyll? Why not some other markup language and some other converter?*
+: Because it's the only tool supported by GitHub Pages.
+
+*Where should pages go if multiple workshops are running at a site simultaneously?*
+: Use subdirectories like `2015-07-01-esu/beginners`,
+ so that repository names always follow our four-part convention.
+
+*What if I want to add more values to `index.html`, like `address1` and `address2` for different rooms on different days?*
+: Go ahead,
+ but you *must* have the variables described in the customization instructions.
+
+*What is the "Windows installer"?*
+: We have built a small installation helper for Windows
+ that installs nano and SQLite, adds R to the path, and so on.
+ It is maintained in
+
+ which also has an up-to-date description of what it actually does.
+ The latest version is always available at
+ ,
+ and contributions are always welcome.
+
+## Debugging
+
+*Help, my website is not updating!*
+: Ensure that strings in the header of `index.html` are enclosed in quotations `"`.
+ Special characters such as `"&"` may render correctly on your local machine
+ but cause rendering to fail silently on GitHub.
+
+*Eventbrite registration isn't showing up on the workshop's home page.*
+: First check that you have something like:
+
+ ~~~
+ eventbrite: 1234567890AB
+ ~~~
+
+ in the YAML header of `index.html`.
+ If the YAML header is set properly you may be accessing
+ `file:///home/to/workshop/directory/_site/index.html` directly.
+ Instead,
+ please run
+
+ ~~~
+ $ make serve
+ ~~~
+
+ and look at `http://localhost:4000` in your browser
+ (or push your changes to GitHub and view your page there).
+
+*What do I do if I see a `invalid byte sequence in ...` error when I run `tools/check`?*
+: Your computer is telling you that it doesn't understand some of the characters you're using.
+ Declare your locale to be `en_US.UTF-8` in your shell:
+
+ ~~~
+ $ export LC_ALL=en_US.UTF-8
+ $ export LANG=en_US.UTF-8
+ ~~~
+
+*What do I do if I get a "can't convert nil into String" error?*
+: On some Linux distributions (e.g, Ubuntu 14.04), you may get this error:
+
+ ~~~
+ $ ./tools/preview
+ /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': iconv will be deprecated in the future, use String#encode instead.
+ /usr/lib/ruby/1.9.1/time.rb:265:in `_parse': can't convert nil into String (TypeError)
+ from /usr/lib/ruby/1.9.1/time.rb:265:in `parse'
+ from /usr/bin/jekyll:95:in `block (2 levels) in '
+ from /usr/lib/ruby/1.9.1/optparse.rb:1391:in `call'
+ from /usr/lib/ruby/1.9.1/optparse.rb:1391:in `block in parse_in_order'
+ from /usr/lib/ruby/1.9.1/optparse.rb:1347:in `catch'
+ from /usr/lib/ruby/1.9.1/optparse.rb:1347:in `parse_in_order'
+ from /usr/lib/ruby/1.9.1/optparse.rb:1341:in `order!'
+ from /usr/lib/ruby/1.9.1/optparse.rb:1432:in `permute!'
+ from /usr/lib/ruby/1.9.1/optparse.rb:1453:in `parse!'
+ from /usr/bin/jekyll:137:in `'
+ ~~~
+
+ This occurs because you are using an old version of Jekyll located in `/usr/bin`.
+ Make sure that you have installed Jekyll using:
+
+ ~~~
+ $ gem install jekyll
+ ~~~
+
+ This installs Jekyll in `/usr/local/bin`,
+ so make sure this directory comes before `/usr/bin` in your `PATH` environment variable.
+ When your path is set correctly,
+ you should see:
+
+ ~~~
+ $ which jekyll
+ /usr/local/bin/jekyll
+ ~~~
+
+ You may also have to install the `nodejs` package to disable references to JavaScript,
+ which you can do using:
+
+ ~~~
+ $ sudo apt-get install nodejs
+ ~~~
+
+ For more information,
+ see .
+
+[amy]: https://github.com/swcarpentry/amy
+[github-pages]: https://help.github.com/articles/creating-project-pages-manually/
diff --git a/_extras/helpers.md b/_extras/helpers.md
new file mode 100644
index 0000000..e8ced14
--- /dev/null
+++ b/_extras/helpers.md
@@ -0,0 +1,12 @@
+---
+title: Information for Helpers
+---
+
+The role of Helpers is defined on the [Helper Checklist page](https://docs.carpentries.org/topic_folders/hosts_instructors/hosts_instructors_checklist.html#helper-checklist). Please review this information.
+
+The Carpentries aims to create an inclusive environment so the [Code of Conduct](https://docs.carpentries.org/topic_folders/policies/code-of-conduct.html) is very important.
+
+Please also familiarize yourself with the [key points](https://carpentries.github.io/instructor-training/reference.html) summary of the Carpentries Instructor training to get an idea of the values and strategies we aim to use in Carpentries workshops. Feel free to poke around the rest of the material if you wish, but those key points are what is important in how we work with the learners.
+
+We maintain a list of common issues that occur during installation as a reference that may be useful in preparation and the day of the workshop on the
+[Configuration Problems and Solutions wiki page]({{site.swc_github}}/workshop-template/wiki/Configuration-Problems-and-Solutions).
diff --git a/_includes/aio-script.md b/_includes/aio-script.md
new file mode 100644
index 0000000..d90e6d6
--- /dev/null
+++ b/_includes/aio-script.md
@@ -0,0 +1,25 @@
+{% comment %}
+As a maintainer, you don't need to edit this file.
+If you notice that something doesn't work, please
+open an issue: https://github.com/carpentries/styles/issues/new
+{% endcomment %}
+
+{% include manual_episode_order.html %}
+
+{% for lesson_episode in lesson_episodes %}
+
+{% if site.episode_order %}
+ {% assign e = site.episodes | where: "slug", lesson_episode | first %}
+{% else %}
+ {% assign e = lesson_episode %}
+{% endif %}
+
+
{{ e.title }}
+
+{% include episode_overview.html teaching_time=e.teaching exercise_time=e.exercises episode_questions=e.questions episode_objectives=e.objectives %}
+
+{{ e.content }}
+
+{% include episode_keypoints.html episode_keypoints=e.keypoints %}
+
+{% endfor %}
diff --git a/_includes/all_keypoints.html b/_includes/all_keypoints.html
new file mode 100644
index 0000000..f0abd25
--- /dev/null
+++ b/_includes/all_keypoints.html
@@ -0,0 +1,31 @@
+{% comment %}
+ Display key points of all episodes for reference.
+{% endcomment %}
+
+{% include base_path.html %}
+{% include manual_episode_order.html %}
+
+
diff --git a/_includes/base_path.html b/_includes/base_path.html
new file mode 100644
index 0000000..7efb357
--- /dev/null
+++ b/_includes/base_path.html
@@ -0,0 +1,27 @@
+{% comment %}
+This is adapted from: https://ricostacruz.com/til/relative-paths-in-jekyll
+
+`page.url` gives the URL of the current page with a leading /:
+
+- when the URL ends with the extension (e.g., /foo/bar.html) then we can get
+ the depth by counting the number of / and remove - 1
+- when the URL ends with a / (e.g. /foo/bar/) then the number / gives the depth
+ directly
+{% endcomment %}
+
+{% assign relative_root_path = '' %}
+
+{% assign last_char = page.url | slice: -1 %}
+
+{% if last_char == "/"}
+{% assign offset = 0 %}
+{% else %}
+{% assign offset = 1 %}
+{% endif %}
+
+{% assign depth = page.url | split: '/' | size | minus: offset %}
+{% if depth <= 1 %}{% assign relative_root_path = '.' %}
+{% elsif depth == 2 %}{% assign relative_root_path = '..' %}
+{% elsif depth == 3 %}{% assign relative_root_path = '../..' %}
+{% elsif depth == 4 %}{% assign relative_root_path = '../../..' %}
+{% endif %}
diff --git a/_includes/carpentries.html b/_includes/carpentries.html
new file mode 100644
index 0000000..051bb09
--- /dev/null
+++ b/_includes/carpentries.html
@@ -0,0 +1,72 @@
+{% comment %}
+ General description of Software, Data, and Library Carpentry.
+{% endcomment %}
+
+{% include base_path.html %}
+
+
+
+
+
+
+
The Carpentries comprises
+ Software Carpentry, Data Carpentry, and Library Carpentry communities of Instructors, Trainers,
+ Maintainers, helpers, and supporters who share a mission to teach
+ foundational coding and data science skills to researchers and people
+ working in library- and information-related roles. In January,
+ 2018, The Carpentries was formed by the merger of Software Carpentry and
+ Data Carpentry. Library Carpentry became an official Carpentries Lesson Program
+ in November 2018.
+
+
+
While individual lessons and workshops continue to be run under each
+ lesson project, The Carpentries provide overall staffing and governance, as
+ well as support for assessment, instructor training and mentoring.
+ Memberships are joint, and the Carpentries project maintains a shared Code
+ of Conduct. The Carpentries is a fiscally sponsored project of Community
+ Initiatives, a registered 501(c)3 non-profit based in California, USA.
+
+
+
+
+
+
+
+
Since 1998, Software Carpentry has
+ been teaching researchers across all disciplines the foundational coding
+ skills they need to get more done in less time and with less pain. Its
+ volunteer instructors have run hundreds of events for thousands of learners
+ around the world. Now that all research involves some degree of
+ computational work, whether with big data, cloud computing, or simple task
+ automation, these skills are needed more than ever.
+
+
+
+
+
+
+
+
+
Data Carpentry develops and teaches
+ workshops on the fundamental data skills needed to conduct research. Its
+ target audience is researchers who have little to no prior computational
+ experience, and its lessons are domain specific, building on learners'
+ existing knowledge to enable them to quickly apply skills learned to their
+ own research. Data Carpentry workshops take researchers through the entire
+ data life cycle.
+
+
+
+
+
+
+
+
+
Library Carpentry develops lessons and
+ teaches workshops for and with people working in library- and
+ information-related roles. Its goal is to create an on-ramp to empower this
+ community to use software and data in their own work, as well as be
+ advocates for and train others in efficient, effective and reproducible data
+ and software practices.
+
+
diff --git a/_includes/episode_keypoints.html b/_includes/episode_keypoints.html
new file mode 100644
index 0000000..abded8b
--- /dev/null
+++ b/_includes/episode_keypoints.html
@@ -0,0 +1,20 @@
+{% comment %}
+Display key points for an episode.
+{% endcomment %}
+
+{% if page.keypoints == nil %}
+{% assign episode_keypoints = include.episode_keypoints %}
+{% else %}
+{% assign episode_keypoints = page.keypoints %}
+{% endif %}
+
+{% if episode_keypoints and episode_keypoints.size %}
+
+
Key Points
+
+ {% for keypoint in episode_keypoints %}
+
{{ keypoint|markdownify }}
+ {% endfor %}
+
+
+{% endif %}
diff --git a/_includes/episode_navbar.html b/_includes/episode_navbar.html
new file mode 100644
index 0000000..3b35bea
--- /dev/null
+++ b/_includes/episode_navbar.html
@@ -0,0 +1,42 @@
+{% comment %}
+For some reason, the relative_root_path seems out of scope in this file, so we
+need to re-assign it here
+{% endcomment %}
+
+{% include base_path.html %}
+
+{% comment %}
+ Navigation bar for an episode.
+{% endcomment %}
+
+{% include prev_and_next_episodes.html %}
+{% comment %}
+ 'previous_episode' and 'next_episodes' are defined in 'manual_episode_order.html'.
+ These replace 'page.previous' and 'page.next' objects, correspondingly.
+{% endcomment %}
+
+
diff --git a/_includes/favicons.html b/_includes/favicons.html
new file mode 100644
index 0000000..8a50b4d
--- /dev/null
+++ b/_includes/favicons.html
@@ -0,0 +1,33 @@
+{% assign favicon_url = relative_root_path | append: '/assets/favicons/' | append: site.carpentry %}
+
+{% if site.carpentry == 'swc' %}
+{% assign carpentry = 'Software Carpentry' %}
+{% elsif site.carpentry == 'dc' %}
+{% assign carpentry = 'Data Carpentry' %}
+{% elsif site.carpentry == 'lc' %}
+{% assign carpentry = 'Library Carpentry' %}
+{% elsif site.carpentry == 'cp' %}
+{% assign carpentry = 'The Carpentries' %}
+{% endif %}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/_includes/gh_variables.html b/_includes/gh_variables.html
new file mode 100644
index 0000000..3fdae4a
--- /dev/null
+++ b/_includes/gh_variables.html
@@ -0,0 +1,45 @@
+{% comment %}
+When rendering websites locally, `site.github.url` doesn't get resolved properly
+unless a GitHub Personal Access Token is set up and available in the
+environment. This leads to warnings and errors when trying to serve the site
+locally. To work around this, we use the `jekyll.environment` variable which is
+set to `development` when rendering the site locally, and set to `production` on
+GitHub where `site.github.url` is defined.
+{% endcomment %}
+
+{% if jekyll.environment == "production" %}
+
+{% comment %}
+First, get the name of the repository
+{% endcomment %}
+{% assign repo_name = site.github.repository_name %}
+
+{% comment %}
+`site.github.public_repositories` contains comprehensive information for all public repositories for the organization. We use `where` to extract the part
+of the metadata that is relevant to the present repository.
+{% endcomment %}
+{% assign repo_info = site.github.public_repositories | where: "name", repo_name %}
+
+{% comment %}
+Now, we can extract the default branch for the repo
+{% endcomment %}
+{% assign default_branch = repo_info[0].default_branch %}
+
+{% comment %}
+Other variables requested by the template
+{% endcomment %}
+{% assign repo_url = site.github.repository_url %}
+{% assign search_domain_url = site.github.url %}
+{% assign project_title = site.github.project_title %}
+{% assign source_branch = site.github.source.branch %}
+
+{% elsif jekyll.environment == "development" %}
+
+{% assign repo_name = "" %}
+{% assign repo_url = "" %}
+{% assign default_branch = "" %}
+{% assign search_domain_url = "" %}
+{% assign project_title = "" %}
+{% assign source_branch = "" %}
+
+{% endif %}
diff --git a/_includes/github-ribbon.html b/_includes/github-ribbon.html
new file mode 100644
index 0000000..e6af081
--- /dev/null
+++ b/_includes/github-ribbon.html
@@ -0,0 +1 @@
+Find us on GitHub
diff --git a/_includes/install_instructions/editor.html b/_includes/install_instructions/editor.html
new file mode 100644
index 0000000..373c4a9
--- /dev/null
+++ b/_includes/install_instructions/editor.html
@@ -0,0 +1,51 @@
+
+
Text Editor
+
+
+ When you're writing code, it's nice to have a text editor that is
+ optimized for writing code, with features like automatic
+ color-coding of key words. The default text editor on macOS and
+ Linux is usually set to Vim, which is not famous for being
+ intuitive. If you accidentally find yourself stuck in it, hit
+ the Esc key, followed by :+Q+!
+ (colon, lower-case 'q', exclamation mark), then hitting Return to
+ return to the shell.
+
+ nano is a basic editor and the default that instructors use in the workshop.
+ It is installed along with Git.
+
+
+
+
+ nano is a basic editor and the default that instructors use in the workshop.
+ See the Git installation video tutorial
+ for an example on how to open nano.
+ It should be pre-installed.
+
+
Video Tutorial
+
+
+
+
+
+
+
+
+ nano is a basic editor and the default that instructors use in the workshop.
+ It should be pre-installed.
+
+
+
+
+
diff --git a/_includes/install_instructions/git.html b/_includes/install_instructions/git.html
new file mode 100644
index 0000000..0d9d794
--- /dev/null
+++ b/_includes/install_instructions/git.html
@@ -0,0 +1,153 @@
+{% comment %}
+Git Setup instructions rely on Shell instructions. If you don't include
+Shell instructions as part of your workshop website, make sure to adjust
+the text below accordingly.
+{% endcomment %}
+
+
Git
+
+ Git is a version control system that lets you track who made changes
+ to what when and has options for easily updating a shared or public
+ version of your code
+ on github.com. You will need a
+ supported
+ web browser.
+
+
+ You will need an account at github.com
+ for parts of the Git lesson. Basic GitHub accounts are free. We encourage
+ you to create a GitHub account if you don't have one already.
+ Please consider what personal information you'd like to reveal. For
+ example, you may want to review these
+ instructions
+ for keeping your email address private provided at GitHub.
+
Run the installer and follow the steps below:
+
+ {% comment %} Git 2.29.1 Setup {% endcomment %}
+
+ Click on "Next" four times (two times if you've previously
+ installed Git). You don't need to change anything
+ in the Information, location, components, and start menu screens.
+
+
+
+ From the dropdown menu select "Use the Nano editor by default" (NOTE: you will need to scroll up to find it) and click on "Next".
+
+
+ {% comment %} Adjusting the name of the initial branch in new repositories {% endcomment %}
+
+ On the page that says "Adjusting the name of the initial branch in new repositories", ensure that
+ "Let Git decide" is selected. This will ensure the highest level of compatibility for our lessons.
+ {% comment %}
+ This section also has "Override the default branch name for new repositories" and has a text box set
+ to "main". I'm not having people switch to this just yet because our git lesson still uses the old paradigm.
+ {% endcomment %}
+
+ Ensure that "Git from the command line and also from 3rd-party software" is selected and
+ click on "Next". (If you don't do this Git Bash will not work properly, requiring you to
+ remove the Git Bash installation, re-run the installer and to select the "Git from the
+ command line and also from 3rd-party software" option.)
+
+ Ensure that "Use the native Windows Secure Channel Library" is selected and click on "Next".
+
+ {% comment %} This should mean that people stuck behind corporate firewalls that do MITM attacks
+ with their own root CA are still able to access remote git repos. {% endcomment %}
+ {% comment %} Configuring the line ending conversions {% endcomment %}
+
+ Ensure that "Checkout Windows-style, commit Unix-style line endings" is selected and click on "Next".
+
+ {% comment %} Configuring the terminal emulator to use with Git Bash {% endcomment %}
+
+
+ Ensure that "Use Windows' default console window" is selected and click on "Next".
+
+
+ {% comment %} Installing {% endcomment %}
+ {% comment %} Completing the Git Setup Wizard {% endcomment %}
+ {% comment %} as of 2020-06-02, the Window will say "click Finish", but the button is labelled as "Next" {% endcomment %}
+
Click on "Finish" or "Next".
+
+
+
+ If your "HOME" environment variable is not set (or you don't know what this is):
+
+
Open command prompt (Open Start Menu then type cmd and press Enter)
+
+ Type the following line into the command prompt window exactly as shown:
+
setx HOME "%USERPROFILE%"
+
+
Press Enter, you should see SUCCESS: Specified value was saved.
+
Quit command prompt by typing exit then pressing Enter
+
+
+
+
This will provide you with both Git and Bash in the Git Bash program.
+
Video Tutorial
+
+
+
+
+
+
+
+
+ For macOS, install Git for Mac
+ by downloading and running the most recent "mavericks" installer from
+ this list.
+ Because this installer is not signed by the developer, you may have to
+ right click (control click) on the .pkg file, click Open, and click
+ Open on the pop up window.
+ After installing Git, there will not be anything in your /Applications folder,
+ as Git is a command line program.
+ For older versions of OS X (10.5-10.8) use the
+ most recent available installer labelled "snow-leopard"
+ available here.
+
+
Video Tutorial
+
+
+
+
+
+
+
+
+ If Git is not already available on your machine you can try to
+ install it via your distro's package manager. For Debian/Ubuntu run
+ sudo apt-get install git and for Fedora run
+ sudo dnf install git.
+
+
+
+
+
diff --git a/_includes/install_instructions/openrefine.html b/_includes/install_instructions/openrefine.html
new file mode 100644
index 0000000..75daad1
--- /dev/null
+++ b/_includes/install_instructions/openrefine.html
@@ -0,0 +1,57 @@
+
+
OpenRefine
+
+ For this lesson you will need OpenRefine and a
+ web browser. Note: this is a Java program that runs on your machine (not in the cloud).
+ It runs inside a web browser, but no web connection is needed.
+
+ Check that you have either the Firefox or the Chrome browser installed and set as your default browser.
+ OpenRefine runs in your default browser.
+ It will not run correctly in Internet Explorer.
+
Unzip the downloaded file into the OpenRefine directory by right-clicking and selecting "Extract ...".
+
Go to your newly created OpenRefine directory.
+
Launch OpenRefine by clicking openrefine.exe (this will launch a command prompt window, but you can ignore that - just wait for OpenRefine to open in the browser).
+
If you are using a different browser, or if OpenRefine does not automatically open for you, point your browser at http://127.0.0.1:3333/ or http://localhost:3333 to use the program.
+
+
+
+
+
Check that you have either the Firefox or the Chrome browser installed and set as your default browser. OpenRefine runs in your default browser. It may not run correctly in Safari.
Unzip the downloaded file into the OpenRefine directory by double-clicking it.
+
Go to your newly created OpenRefine directory.
+
Launch OpenRefine by dragging the icon into the Applications folder.
+
Use Ctrl-click/Open ... to launch it.
+
If you are using a different browser, or if OpenRefine does not automatically open for you, point your browser at http://127.0.0.1:3333/ or http://localhost:3333 to use the program.
+
+
+
+
+
Check that you have either the Firefox or the Chrome browser installed and set as your default browser. OpenRefine runs in your default browser.
Unzip the downloaded file into the OpenRefine directory.
+
Go to your newly created OpenRefine directory.
+
Launch OpenRefine by entering ./refine into the terminal within the OpenRefine directory.
+
If you are using a different browser, or if OpenRefine does not automatically open for you, point your browser at http://127.0.0.1:3333/ or http://localhost:3333 to use the program.
+
+
+
+
+
diff --git a/_includes/install_instructions/python.html b/_includes/install_instructions/python.html
new file mode 100644
index 0000000..cf80ab8
--- /dev/null
+++ b/_includes/install_instructions/python.html
@@ -0,0 +1,113 @@
+{% comment %}
+
+Remove the third paragraph if the workshop will teach Python
+using something other than the Jupyter Notebook. Details at
+
+https://jupyter-notebook.readthedocs.io/en/stable/notebook.html#browser-compatibility
+{% endcomment %}
+
+
Python
+
+
+ Python is a popular language for
+ research computing, and great for general-purpose programming as
+ well. Installing all of its research packages individually can be
+ a bit difficult, so we recommend
+ Anaconda,
+ an all-in-one installer.
+
+
+
+ Regardless of how you choose to install it,
+ please make sure you install Python version 3.x
+ (e.g., 3.6 is fine).
+
+
+ {% comment %}
+ Please remove or comment out this paragraph using
+ or {% comment %} and {% endcomment %}
+ if you do not plan to use Jupyter Notebook environment.
+ {% endcomment %}
+
+ We will teach Python using the Jupyter Notebook,
+ a programming environment that runs in a web browser (Jupyter Notebook will be installed by Anaconda). For this to work you will need a reasonably
+ up-to-date browser. The current versions of the Chrome, Safari and
+ Firefox browsers are all
+ supported
+ (some older browsers, including Internet Explorer version 9
+ and below, are not).
+
Download the Anaconda for Windows installer with Python 3. (If you are not sure which version to choose, you probably want the 64-bit Graphical Installer Anaconda3-...-Windows-x86_64.exe)
+
Install Python 3 by running the Anaconda Installer, using all of the defaults for installation except make sure to check Add Anaconda to my PATH environment variable.
Download the Anaconda Installer with Python 3 for Linux.
+ (The installation requires using the shell. If you aren't
+ comfortable doing the installation yourself
+ stop here and request help at the workshop.)
+
+
+ Open a terminal window and navigate to the directory where
+ the executable is downloaded (e.g., `cd ~/Downloads`).
+
+
+ Type
bash Anaconda3-
and then press
+ Tab to autocomplete the full file name. The name of
+ file you just downloaded should appear.
+
+
+ Press Enter
+ (or Return depending on your keyboard).
+ You will follow the text-only prompts.
+ To move through the text, press Spacebar.
+ Type yes and press enter to approve the license.
+ Press Enter (or Return)
+ to approve the default location
+ for the files.
+ Type yes and press
+ Enter (or Return)
+ to prepend Anaconda to your PATH
+ (this makes the Anaconda distribution the default Python).
+
+
+ Close the terminal window.
+
+
+
+
+
+
diff --git a/_includes/install_instructions/r.html b/_includes/install_instructions/r.html
new file mode 100644
index 0000000..8e8220a
--- /dev/null
+++ b/_includes/install_instructions/r.html
@@ -0,0 +1,65 @@
+
+
R
+
+
+ R is a programming language
+ that is especially powerful for data exploration, visualization, and
+ statistical analysis. To interact with R, we use
+ RStudio.
+
+ Install R by downloading and running
+ this .exe file
+ from CRAN.
+ Also, please install the
+ RStudio IDE.
+ Note that if you have separate user and admin accounts, you should run the
+ installers as administrator (right-click on .exe file and select "Run as
+ administrator" instead of double-clicking). Otherwise problems may occur later,
+ for example when installing R packages.
+
+ You can download the binary files for your distribution
+ from CRAN. Or
+ you can use your package manager (e.g. for Debian/Ubuntu
+ run sudo apt-get install r-base and for Fedora run
+ sudo dnf install R). Also, please install the
+ RStudio IDE.
+
+
+
+
+
diff --git a/_includes/install_instructions/shell.html b/_includes/install_instructions/shell.html
new file mode 100644
index 0000000..817f9c0
--- /dev/null
+++ b/_includes/install_instructions/shell.html
@@ -0,0 +1,145 @@
+
+
The Bash Shell
+
+ Bash is a commonly-used shell that gives you the power to do
+ tasks more quickly.
+
Run the installer and follow the steps below:
+
+ {% comment %} Git 2.29.1 Setup {% endcomment %}
+
+ Click on "Next" four times (two times if you've previously
+ installed Git). You don't need to change anything
+ in the Information, location, components, and start menu screens.
+
+
+
+ From the dropdown menu select "Use the Nano editor by default" (NOTE: you will need to scroll up to find it) and click on "Next".
+
+
+ {% comment %} Adjusting the name of the initial branch in new repositories {% endcomment %}
+
+ On the page that says "Adjusting the name of the initial branch in new repositories", ensure that
+ "Let Git decide" is selected. This will ensure the highest level of compatibility for our lessons.
+ {% comment %}
+ This section also has "Override the default branch name for new repositories" and has a text box set
+ to "main". I'm not having people switch to this just yet because our git lesson still uses the old paradigm.
+ {% endcomment %}
+
+ Ensure that "Git from the command line and also from 3rd-party software" is selected and
+ click on "Next". (If you don't do this Git Bash will not work properly, requiring you to
+ remove the Git Bash installation, re-run the installer and to select the "Git from the
+ command line and also from 3rd-party software" option.)
+
+ Ensure that "Use the native Windows Secure Channel Library" is selected and click on "Next".
+
+ {% comment %} This should mean that people stuck behind corporate firewalls that do MITM attacks
+ with their own root CA are still able to access remote git repos. {% endcomment %}
+ {% comment %} Configuring the line ending conversions {% endcomment %}
+
+ Ensure that "Checkout Windows-style, commit Unix-style line endings" is selected and click on "Next".
+
+ {% comment %} Configuring the terminal emulator to use with Git Bash {% endcomment %}
+
+
+ Ensure that "Use Windows' default console window" is selected and click on "Next".
+
+
+ {% comment %} Installing {% endcomment %}
+ {% comment %} Completing the Git Setup Wizard {% endcomment %}
+ {% comment %} as of 2020-06-02, the Window will say "click Finish", but the button is labelled as "Next" {% endcomment %}
+
Click on "Finish" or "Next".
+
+
+
+ If your "HOME" environment variable is not set (or you don't know what this is):
+
+
Open command prompt (Open Start Menu then type cmd and press Enter)
+
+ Type the following line into the command prompt window exactly as shown:
+
setx HOME "%USERPROFILE%"
+
+
Press Enter, you should see SUCCESS: Specified value was saved.
+
Quit command prompt by typing exit then pressing Enter
+
+
+
+
This will provide you with both Git and Bash in the Git Bash program.
+
Video Tutorial
+
+
+
+
+
+
+
+
+ The default shell in some versions of macOS is Bash, and
+ Bash is available in all versions, so no need to install anything.
+ You access Bash from the Terminal (found in
+ /Applications/Utilities).
+ See the Git installation video tutorial
+ for an example on how to open the Terminal.
+ You may want to keep Terminal in your dock for this workshop.
+
+
+ To see if your default shell is Bash type echo $SHELL
+ in Terminal and press the Return key. If the message
+ printed does not end with '/bash' then your default is something
+ else and you can run Bash by typing bash
+
+
+ If you want to change your default shell, see
+ this Apple Support article and follow the instructions on "How to change your default shell".
+
+
Video Tutorial
+
+
+
+
+
+
+
+
+ The default shell is usually Bash and there is usually no need to
+ install anything.
+
+
+ To see if your default shell is Bash type echo $SHELL in
+ a terminal and press the Enter key. If the message printed
+ does not end with '/bash' then your default is something else and you
+ can run Bash by typing bash.
+
+
+
+
+
diff --git a/_includes/install_instructions/sql.html b/_includes/install_instructions/sql.html
new file mode 100644
index 0000000..365ee6e
--- /dev/null
+++ b/_includes/install_instructions/sql.html
@@ -0,0 +1,53 @@
+
+
SQLite
+
+
+ SQL is a specialized programming language used with databases. We
+ use a database manager called
+ SQLite in our lessons.
+
Copy the following curl -fsSL {{site.url}}{{site.baseurl}}/getsql.sh | bash
+
Paste it into the window that Git Bash opened. If you're unsure, ask an instructor for help
+
You should see something like 3.27.2 2019-02-25 16:06:06 ...
+
+
+
If you want to do this manually, download sqlite3, make a bin directory in the user's home directory, unzip sqlite3, move it into the bin directory, and then add the bin directory to the path.
If you installed Anaconda, it also has a copy of SQLite
+ without support to readline.
+ Instructors will provide a workaround for it if needed.
+
diff --git a/_includes/install_instructions/videoconferencing.html b/_includes/install_instructions/videoconferencing.html
new file mode 100644
index 0000000..b5344c8
--- /dev/null
+++ b/_includes/install_instructions/videoconferencing.html
@@ -0,0 +1,44 @@
+
+
Install the videoconferencing client
+
+{% comment %}
+Replace the paragraph below with the relevant installation instructions
+if you do not use Zoom
+{% endcomment %}
+
+ If you haven't used Zoom before, go to the
+ official website
+ to download and install the Zoom client for your computer.
+
+
+
+
Set up your workspace
+
+
+ Like other Carpentries workshops,
+ you will be learning by "coding along" with the Instructors.
+ To do this, you will need to have both the window for the tool
+ you will be learning about (a terminal, RStudio, your web browser, etc..)
+ and the window for the Zoom video conference client open.
+ In order to see both at once,
+ we recommend using one of the following set up options:
+
+
Two monitors: If you have two monitors,
+ plan to have the tool you are learing up on one monitor and
+ the video conferencing software on the other.
+
Two devices: If you don't have two monitors,
+ do you have another device (tablet, smartphone) with a medium to large
+ sized screen? If so, try using the smaller device as your video
+ conference connection and your larger device (laptop or desktop)
+ to follow along with the tool you will be learning about.
+
Divide your screen: If you only have one device
+ and one screen, practice having two windows
+ (the video conference program and one of the tools you will be using
+ at the workshop) open together.
+ How can you best fit both on your screen?
+ Will it work better for you to toggle between them
+ using a keyboard shortcut?
+ Try it out in advance to decide what will work best for you.
+
+ This blog post includes detailed information on how to set up your screen to follow along during the workshop.
+
diff --git a/_includes/installedFile.lqd b/_includes/installedFile.lqd
new file mode 100644
index 0000000..a8d59c4
--- /dev/null
+++ b/_includes/installedFile.lqd
@@ -0,0 +1,2 @@
+{% assign path = page.originalRepository | prepend: "/installed/" | append: include.path %}
+{{ path | relative_url }}
diff --git a/_includes/intro/_participant-setup.html b/_includes/intro/_participant-setup.html
new file mode 100644
index 0000000..91aea32
--- /dev/null
+++ b/_includes/intro/_participant-setup.html
@@ -0,0 +1,3 @@
+{% for X in site.setup_files %}
+{% include install_instructions/{{X}}.html %}
+{% endfor %}
diff --git a/_includes/intro/accessibility.md b/_includes/intro/accessibility.md
new file mode 100644
index 0000000..da58374
--- /dev/null
+++ b/_includes/intro/accessibility.md
@@ -0,0 +1,17 @@
+### Accessibility
+
+We are committed to making this workshop accessible to everybody. The workshop organizers have checked that:
+
+* The room is wheelchair / scooter accessible.
+* Accessible restrooms are available.
+
+Materials will be provided in advance of the workshop and
+ large-print handouts are available if needed by notifying the
+ organizers in advance.
+If we can help making learning easier for
+ you (e.g. sign-language interpreters, lactation facilities) please
+ get in touch (using contact details below) and we will
+ attempt to provide them.
+
+We are dedicated to providing a positive and accessible learning environment for all.
+Please notify the instructors in advance of the workshop if you require any accommodations or if there is anything we can do to make this workshop more accessible to you.
diff --git a/_includes/intro/requirements.md b/_includes/intro/requirements.md
new file mode 100644
index 0000000..773ace2
--- /dev/null
+++ b/_includes/intro/requirements.md
@@ -0,0 +1,3 @@
+### Requirements
+* Participants must have access to a computer with a Mac, Linux, or Windows operating system (not a tablet, Chromebook, etc.) that they have administrative privileges on.
+* They should have a few specific software packages installed (listed [below](#setup)).
diff --git a/_includes/intro/topic-intros/open-access.md b/_includes/intro/topic-intros/open-access.md
new file mode 100644
index 0000000..2fd92a3
--- /dev/null
+++ b/_includes/intro/topic-intros/open-access.md
@@ -0,0 +1,12 @@
+Open Access training aims to helps researchers disseminate their research widely using Open Access publication approaches.
+
+This training will teach researchers to:
+* navigate and identify intitutional and funder **policies**
+* choose an appropriate **Open Access journal**
+* select the right **type of Open Access**
+* use **institutional repositories**
+
+_Open Access training introduces you to the fundamentals of Open Access publishing and
+provides you with practical tools for publishing real articles in Open Access journals.
+It also acts as a platform for further self-directed learning.
+Other UKRN Open Research topics can be found in the [list of UKRN Primers](https://ukrn.org/primers/)._
diff --git a/_includes/intro/topic-intros/open-code.md b/_includes/intro/topic-intros/open-code.md
new file mode 100644
index 0000000..480b85b
--- /dev/null
+++ b/_includes/intro/topic-intros/open-code.md
@@ -0,0 +1,12 @@
+Open Code training helps researchers share software so that others can check their results and extend their work.
+
+This training will teach researchers to:
+* use **version control** to transparently track the evolution of software and analysis scripts
+* **licence software appropriately** and **publish** code on public platforms
+* use **good programming habits** to create code that can be read, used, and extended by others
+* use **literate programming** tools to embed analysis code and its results directly into manuscripts
+
+_Open Code training introduces you to the fundamentals of writing and sharing good code, and
+provides you with practical tools for sharing actual code. It also acts as a
+platform for further self-directed learning.
+Other UKRN Open Research topics can be found in the [list of UKRN Primers](https://ukrn.org/primers/)._
diff --git a/_includes/intro/topic-intros/open-data.md b/_includes/intro/topic-intros/open-data.md
new file mode 100644
index 0000000..b313e4f
--- /dev/null
+++ b/_includes/intro/topic-intros/open-data.md
@@ -0,0 +1,13 @@
+Open Data training aims to help researchers make their data available to others so that their results can be checked and the data reused for other purposes.
+
+This training will teach researchers to:
+* produce data which are **FAIR**: Findable, Accessible, Interoperable, and Reusable
+* **find repositories**
+* use appropriate **data formats**
+* manage **metadata** (information describing datasets)
+* ensure **non-identifiability** (for researchers working with human data)
+
+_Open Data training introduces you to the fundamentals of data sharing and
+provides you with practical tools for sharing real data. It also acts as a
+platform for further self-directed learning.
+Other UKRN Open Research topics can be found in the [list of UKRN Primers](https://ukrn.org/primers/)._
diff --git a/_includes/intro/topic-intros/preprints.md b/_includes/intro/topic-intros/preprints.md
new file mode 100644
index 0000000..53e41a6
--- /dev/null
+++ b/_includes/intro/topic-intros/preprints.md
@@ -0,0 +1,13 @@
+Training on preprints helps researchers disseminate their research more rapidly and widely using preprint archives.
+
+This training will teach researchers to:
+* **find archives**
+* understand how **preprinting changes the journal publication workflow**
+* identify **when **to publish a preprint
+* **publish an article** as a preprint
+* understand issues surrounding the **interpretation of preprints** by non-expert readers
+
+_Training on preprints introduces you to the fundamentals of preprinting and
+provides you with practical tools for preprinting actual manuscripts. It also acts as a
+platform for further self-directed learning.
+Other UKRN Open Research topics can be found in the [list of UKRN Primers](https://ukrn.org/primers/)._
diff --git a/_includes/intro/topic-intros/preregistration.md b/_includes/intro/topic-intros/preregistration.md
new file mode 100644
index 0000000..8f939a2
--- /dev/null
+++ b/_includes/intro/topic-intros/preregistration.md
@@ -0,0 +1,13 @@
+Preregistration training aims to help researchers make their results more trustworthy by clearly differentiating pre-planned from exploratory analyses.
+
+This training will teach researchers to:
+* preregister studies and write Registered Reports (in which a journal prospectively agrees to publish a study on the basis of its methodology before the results are know)
+* **find repositories**
+* identify **what type of studies** preregistration is most valuable for
+* choose an appropriate preregistration **template**
+* locate **journals which accept Registered Reports**
+
+_Preregistration training introduces you to the fundamentals of preregistration and
+provides you with practical tools for preregistering real studies. It also acts as a
+platform for further self-directed learning.
+Other UKRN Open Research topics can be found in the [list of UKRN Primers](https://ukrn.org/primers/)._
diff --git a/_includes/intro/topic-intros/unknown-topic.md b/_includes/intro/topic-intros/unknown-topic.md
new file mode 100644
index 0000000..6d10d89
--- /dev/null
+++ b/_includes/intro/topic-intros/unknown-topic.md
@@ -0,0 +1,7 @@
+Open Research training aims to helps researchers disseminate their research widely using Open Access publication approaches.
+
+This training will teach researchers to:
+* list of **learning outcomes**
+
+_Here is a slightly longer description of the topic.
+Other UKRN Open Research topics can be found in the [list of UKRN Primers](https://ukrn.org/primers/)._
diff --git a/_includes/javascript.html b/_includes/javascript.html
new file mode 100644
index 0000000..e4d9301
--- /dev/null
+++ b/_includes/javascript.html
@@ -0,0 +1,54 @@
+{% comment %}
+ JavaScript used in lesson and workshop pages.
+{% endcomment %}
+
+
+
+
+
diff --git a/_includes/lesson_footer.html b/_includes/lesson_footer.html
new file mode 100644
index 0000000..40af9e9
--- /dev/null
+++ b/_includes/lesson_footer.html
@@ -0,0 +1,40 @@
+{% comment %}
+ Footer for lesson pages.
+{% endcomment %}
+
+{% include gh_variables.html %}
+
+
diff --git a/_includes/life_cycle.html b/_includes/life_cycle.html
new file mode 100644
index 0000000..efc5b6d
--- /dev/null
+++ b/_includes/life_cycle.html
@@ -0,0 +1,34 @@
+
+{% if site.life_cycle == "pre-alpha" %}
+
+
+
+ This lesson is still being designed and assembled (Pre-Alpha version)
+
+
+
+
+{% elsif site.life_cycle == "alpha" %}
+
+
+
+ This lesson is in the early stages of development (Alpha version)
+
+{% endif %}
+{% endif %}
+{% endfor %}
+
+
diff --git a/_includes/unique_days.lqd b/_includes/unique_days.lqd
new file mode 100644
index 0000000..1440289
--- /dev/null
+++ b/_includes/unique_days.lqd
@@ -0,0 +1,16 @@
+{% comment %}
+ Expose the variable days as an ordered list of unique days in the episodes
+{% endcomment %}
+
+{% assign day_list = EPISODES | map: 'day' %}
+{% assign days = "" %}
+{% for day in day_list %}
+ {% assign d = day | plus: 0 %}
+ {% assign days = days | append: d %}
+ {% assign days = days | append: ";" %}
+{% endfor %}
+
+{% assign days = days | split: ";" %}
+
+{% assign days = days | uniq %}
+{% assign days = days | sort %}
diff --git a/_includes/warning-curriculum.html b/_includes/warning-curriculum.html
new file mode 100644
index 0000000..6f57d16
--- /dev/null
+++ b/_includes/warning-curriculum.html
@@ -0,0 +1,8 @@
+
+
+ Unrecognized value for variable curriculum set in
+ _config.yml. Currently the variable is set to:
+ {{ site.curriculum }}. Check the values of
+ carpentry and curriculum in the
+ _config.yml file.
+
diff --git a/_includes/warning-flavor.html b/_includes/warning-flavor.html
new file mode 100644
index 0000000..66309ba
--- /dev/null
+++ b/_includes/warning-flavor.html
@@ -0,0 +1,7 @@
+
+
+ Unrecognized value for variable flavor set in
+ _config.yml. Valid values are "r" and
+ "python", currently set to {{ site.flavor }}.
+
+
diff --git a/_includes/workshop_ad.html b/_includes/workshop_ad.html
new file mode 100644
index 0000000..744a490
--- /dev/null
+++ b/_includes/workshop_ad.html
@@ -0,0 +1,46 @@
+{% comment %}
+Advertising box at the top of a workshop website home page.
+{% endcomment %}
+
+{% assign begin_address = site.address | slice: 0, 4 | downcase %}
+{% if site.address == "online" %}
+{% assign online = "true_private" %}
+{% elsif begin_address contains "http" %}
+{% assign online = "true_public" %}
+{% else %}
+{% assign online = "false" %}
+{% endif %}
+
+