Software Carpentry Website
Lessons are not stored in this repository: please see the lessons page for links to their repositories.
Software Carpentry is an open project, and we welcome contributions of all kinds. By contributing, you are agreeing that Software Carpentry may redistribute your work under these licenses, and to abide by our code of conduct.
The website uses Jekyll, a static website generator written in Ruby.
You need to have Version 2.1.0 or higher of Ruby and the package manager Bundler (The package manager is used to make sure you use exactly the same versions of software as GitHub Pages).
Bundler can be installed with
$ gem install bundler.
If you are on Linux, you will need to install the Ruby header files (e.g.,
$ sudo apt-get install ruby-dev on Debian/Ubuntu).
After checking out the repository, please run:
Alternative Method: If you have Docker installed on your system, you may be able to use the
make dockerbuild and
make dockerserve targets. These
Makefile targets will install all Jekyll dependencies into the folder
vendor/ and build/serve the website respectively.
$ bundle install
to install Jekyll and the software it depends on. You may consult Using Jekyll with Pages for further instructions.
Please do not use
jekyll build or
jekyll serve directly to build or view the website.
Instead, you should use the following commands:
make commands: list available commands.
make serve: build files locally and run a server at http://0.0.0.0:4000/ for viewing. This is the best way to preview the site.
make site: build files locally, but do not serve them dynamically.
make cleanremoves the
_sitedirectory and any Emacs editor backup files littering the source directories.
The details describes a few more advanced commands as well. Please note that rebuilding this site can take 3-4 minutes on a moderately powerful laptop, and occasionally times out on GitHub. We're working on it...
To write a blog post,
create a file called
(for HTML and Markdown respectively).
YYYY is the 4-digit year of the post, MM the 2-digit month, and DD the 2-digit day;
some-title can be any hyphenated string of words that do not include special characters such as quotes.
Please do not use underscores or periods in the names.
your blog post will appear as
The YAML header of a blog post must look like this:
--- layout: post authors: ["Your Name"] title: "A Title-Cased Title for the Post" date: YYYY-MM-DD time: "hh:mm:ss" category: ["Some Category", "Some Other Category"] ---
YYYY-MM-DD is replaced by the post's date and
hh:mm:ss by the post's time.
Note that the time must be quoted so that the colons it contains do not confuse Jekyll's YAML parser.
Note also that
authors is a list---if the post has more than one author,
please format the list like this:
... authors: ["First Author", "Second Author", "Third Author"] ...
rather than running all the authors' names together in one long string.
layout: page-fullwidth permalink: /some/path/ title: Title in Title Case
You must then also add the page to
which is used to generate the site's pull-down navigation menu.
To add a workshop, fill in the workshop request form online. You should fill in this form even for self-organized workshops in order to get your workshop into our database.
Do not edit the YAML in
this is overwritten every time the website is rebuilt on the server.
This website depends on three data files,
each of which is rebuilt by
_data/amy.yml, which contains information about upcoming workshops, instructors' locations, and so on that is fetched from our online workshop management tool. You must be logged in to AMY in order to run this.
_data/dashboard.yml, which contains information about the state of our GitHub repositories. In order to run this, you must get a GitHub API token and store it in
make includesto rebuild the data file
_data/includes.yml. This does not require special permissions, but is only necessary if you have added more people to
_includes/peopleor more projects to
_includes/projects. (We plan to move the content of these two directories to
make includeswill no longer be needed.)
We cache the output of these commands in the
so that people can rebuild the site without needing special permissions.
The files in the
assets directories control the appearance of this site.
Their contents are pulled in manually from a stand-alone https://github.com/swcarpentry/styles repository,
which also controls the appearance of
the workshop template
and lesson template.
Please contact us before modifying any of these files
so that we can figure out the best way to incorporate your improvements.
Rebuilding the Main Web Site
A copy of the shell script
bin/rebuild-site.sh is installed in the website's home directory on our server
and re-run hourly by cron.
If you are able to ssh to the server,
it can be re-run manually as:
$ ssh software-carpentry.org ./rebuild-site.sh