diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..c3b96690 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,11 @@ +--- +layout: page +title: "Contributor Code of Conduct" +--- +As contributors and maintainers of this project, +we pledge to follow the [Carpentry Code of Conduct][coc]. + +Instances of abusive, harassing, or otherwise unacceptable behavior +may be reported by following our [reporting guidelines][coc-reporting]. + +{% include links.md %} diff --git a/CONDUCT.md b/CONDUCT.md deleted file mode 100644 index e83b08fa..00000000 --- a/CONDUCT.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -layout: page -title: "Contributor Code of Conduct" -permalink: /conduct/ ---- -As contributors and maintainers of this project, -we pledge to respect all people who contribute through reporting issues, -posting feature requests, -updating documentation, -submitting pull requests or patches, -and other activities. - -We are committed to making participation in this project a harassment-free experience for everyone, -regardless of level of experience, -gender, -gender identity and expression, -sexual orientation, -disability, -personal appearance, -body size, -race, -ethnicity, -age, -or religion. - -Examples of unacceptable behavior by participants include the use of sexual language or imagery, -derogatory comments or personal attacks, -trolling, -public or private harassment, -insults, -or other unprofessional conduct. - -Project maintainers have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct. -Project maintainers who do not follow the Code of Conduct may be removed from the project team. - -Instances of abusive, harassing, or otherwise unacceptable behavior -may be reported by opening an issue or contacting one or more of the project maintainers. - -This Code of Conduct is adapted from -the [Contributor Covenant][contrib-covenant] Version 1.0.0. - -[contrib-covenant]: http://contributor-covenant.org/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8c576937..5a6b02a7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,16 +1,4 @@ -# Contributing - HPC Carpentry - -**This lesson is currently under active development by the HPC Carpentry team.** - -Although this is intended to be an open lesson that follows the general -Software and Data Carpentry contribution guidelines, -we are currently focusing on delivering our initial lesson pass. - -Although we appreciate external input, -contributions and input from the wider community will be reviewed only once initial lesson generation is complete. -(We want this lesson as much as you do!) - -## General contribution guidelines +# Contributing [Software Carpentry][swc-site] and [Data Carpentry][dc-site] are open source projects, and we welcome contributions of all kinds: @@ -27,7 +15,7 @@ In exchange, we will address your issues and/or assess your change proposal as promptly as we can, and help you become a member of our community. Everyone involved in [Software Carpentry][swc-site] and [Data Carpentry][dc-site] -agrees to abide by our [code of conduct](CONDUCT.md). +agrees to abide by our [code of conduct](CODE_OF_CONDUCT.md). ## How to Contribute @@ -39,7 +27,7 @@ This is a good way to introduce yourself and to meet some of our community members. 1. If you do not have a [GitHub][github] account, - you can [send us comments by email][contact]. + you can [send us comments by email][email]. However, we will be able to respond more quickly if you use one of the other methods described below. @@ -62,30 +50,30 @@ and to meet some of our community members. which can be viewed at . 2. If you wish to change the example lesson, - please work in , + please work in , which documents the format of our lessons - and can be viewed at . + and can be viewed at . 3. If you wish to change the template used for workshop websites, - please work in . + please work in . The home page of that repository explains how to set up workshop websites, - while the extra pages in + while the extra pages in provide more background on our design choices. 4. If you wish to change CSS style files, tools, or HTML boilerplate for lessons or workshops stored in `_includes` or `_layouts`, - please work in . + please work in . ## What to Contribute There are many ways to contribute, from writing new exercises and improving existing ones to updating or filling in the documentation -and and submitting [bug reports][issues] +and submitting [bug reports][issues] about things that don't work, aren't clear, or are missing. -If you are looking for ideas, -please see [the list of issues for this repository][issues], -or the issues for [Data Carpentry][dc-issues] +If you are looking for ideas, please see the 'Issues' tab for +a list of issues associated with this repository, +or you may also look at the issues for [Data Carpentry][dc-issues] and [Software Carpentry][swc-issues] projects. Comments on issues and reviews of pull requests are just as welcome: @@ -107,57 +95,54 @@ The first encourages contributors to be honest about requirements; the second, to think hard about priorities. We are also not looking for exercises or other material that only run on one platform. -Our workshops typically contain a mixture of Windows, Mac OS X, and Linux users; +Our workshops typically contain a mixture of Windows, macOS, and Linux users; in order to be usable, our lessons must run equally well on all three. ## Using GitHub -If you choose to contribute via GitHub, -you may want to look at +If you choose to contribute via GitHub, you may want to look at [How to Contribute to an Open Source Project on GitHub][how-contribute]. -In brief: - -1. The published copy of the lesson is in the `gh-pages` branch of the repository - (so that GitHub will regenerate it automatically). - Please create all branches from that, - and merge the [master repository][repo]'s `gh-pages` branch into your `gh-pages` branch - before starting work. - Please do *not* work directly in your `gh-pages` branch, - since that will make it difficult for you to work on other contributions. - -2. We use [GitHub flow][github-flow] to manage changes: - 1. Create a new branch in your desktop copy of this repository for each significant change. - 2. Commit the change in that branch. - 3. Push that branch to your fork of this repository on GitHub. - 4. Submit a pull request from that branch to the [master repository][repo]. - 5. If you receive feedback, - make changes on your desktop and push to your branch on GitHub: - the pull request will update automatically. - -Each lesson has two maintainers who review issues and pull requests -or encourage others to do so. -The maintainers are community volunteers, -and have final say over what gets merged into the lesson. +To manage changes, we follow [GitHub flow][github-flow]. +Each lesson has two maintainers who review issues and pull requests or encourage others to do so. +The maintainers are community volunteers and have final say over what gets merged into the lesson. +To use the web interface for contributing to a lesson: + +1. Fork the originating repository to your GitHub profile. +2. Within your version of the forked repository, move to the `gh-pages` branch and +create a new branch for each significant change being made. +3. Navigate to the file(s) you wish to change within the new branches and make revisions as required. +4. Commit all changed files within the appropriate branches. +5. Create individual pull requests from each of your changed branches +to the `gh-pages` branch within the originating repository. +6. If you receive feedback, make changes using your issue-specific branches of the forked +repository and the pull requests will update automatically. +7. Repeat as needed until all feedback has been addressed. + +When starting work, please make sure your clone of the originating `gh-pages` branch is up-to-date +before creating your own revision-specific branch(es) from there. +Additionally, please only work from your newly-created branch(es) and *not* +your clone of the originating `gh-pages` branch. +Lastly, published copies of all the lessons are available in the `gh-pages` branch of the originating +repository for reference while revising. ## Other Resources General discussion of [Software Carpentry][swc-site] and [Data Carpentry][dc-site] happens on the [discussion mailing list][discuss-list], which everyone is welcome to join. -You can also [reach us by email][contact]. +You can also [reach us by email][email]. -[contact]: mailto:admin@software-carpentry.org +[email]: mailto:admin@software-carpentry.org [dc-issues]: https://github.com/issues?q=user%3Adatacarpentry [dc-lessons]: http://datacarpentry.org/lessons/ [dc-site]: http://datacarpentry.org/ [discuss-list]: http://lists.software-carpentry.org/listinfo/discuss -[github]: http://github.com +[github]: https://github.com [github-flow]: https://guides.github.com/introduction/flow/ [github-join]: https://github.com/join [how-contribute]: https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github -[issues]: https://github.com/swcarpentry/FIXME/issues/ -[repo]: https://github.com/swcarpentry/FIXME/ +[issues]: https://guides.github.com/features/issues/ [swc-issues]: https://github.com/issues?q=user%3Aswcarpentry -[swc-lessons]: http://software-carpentry.org/lessons/ -[swc-site]: http://software-carpentry.org/ +[swc-lessons]: https://software-carpentry.org/lessons/ +[swc-site]: https://software-carpentry.org/ diff --git a/_config.yml b/_config.yml index b124da7e..bf933b5b 100644 --- a/_config.yml +++ b/_config.yml @@ -2,16 +2,19 @@ # Values for this lesson. #------------------------------------------------------------ -# Which carpentry is this ("swc", "dc", or "lc")? +# Which carpentry is this ("swc", "dc", "lc", or "cp")? +# swc: Software Carpentry +# dc: Data Carpentry +# lc: Library Carpentry +# cp: Carpentries (to use for instructor traning for instance) carpentry: "swc" # Overall title for pages. title: "Introduction to High-Performance Computing" -# Contact. This *must* include the protocol: if it's an email -# address, it must look like "mailto:lessons@software-carpentry.org", -# or if it's a URL, "https://gitter.im/username/ProjectName". -contact: "mailto:lessons@software-carpentry.org" +# Life cycle stage of the lesson +# possible values: "pre-alpha", "alpha", "beta", "stable" +life_cycle: "alpha" #------------------------------------------------------------ # Generic settings (should not need to change). @@ -22,26 +25,40 @@ kind: "lesson" # Magic to make URLs resolve both locally and on GitHub. # See https://help.github.com/articles/repository-metadata-on-github-pages/. +# Please don't change it: / is correct. repository: / +# Email address, no mailto: +email: "team@carpentries.org" + # Sites. amy_site: "https://amy.software-carpentry.org/workshops" +carpentries_github: "https://github.com/carpentries" +carpentries_pages: "https://carpentries.github.io" +carpentries_site: "https://carpentries.org/" dc_site: "http://datacarpentry.org" +example_repo: "https://github.com/carpentries/lesson-example" +example_site: "https://carpentries.github.io/lesson-example" +lc_site: "https://librarycarpentry.org/" swc_github: "https://github.com/swcarpentry" -swc_site: "https://software-carpentry.org" swc_pages: "https://swcarpentry.github.io" -lc_site: "http://librarycarpentry.github.io/" -template_repo: "https://github.com/swcarpentry/styles" -example_repo: "https://github.com/swcarpentry/lesson-example" -example_site: "https://swcarpentry.github.com/lesson-example" -workshop_repo: "https://github.com/swcarpentry/workshop-template" -workshop_site: "https://swcarpentry.github.io/workshop-template" -training_site: "https://swcarpentry.github.io/instructor-training" +swc_site: "https://software-carpentry.org" +template_repo: "https://github.com/carpentries/styles" +training_site: "https://carpentries.github.io/instructor-training" +workshop_repo: "https://github.com/carpentries/workshop-template" +workshop_site: "https://carpentries.github.io/workshop-template" +cc_by_human: "https://creativecommons.org/licenses/by/4.0/" # Surveys. -pre_survey: "https://www.surveymonkey.com/r/swc_pre_workshop_v1?workshop_id=" -post_survey: "https://www.surveymonkey.com/r/swc_post_workshop_v1?workshop_id=" +swc_pre_survey: "https://www.surveymonkey.com/r/swc_pre_workshop_v1?workshop_id=" +swc_post_survey: "https://www.surveymonkey.com/r/swc_post_workshop_v1?workshop_id=" training_post_survey: "https://www.surveymonkey.com/r/post-instructor-training" +dc_pre_survey: "https://www.surveymonkey.com/r/dcpreworkshopassessment?workshop_id=" +dc_post_survey: "https://www.surveymonkey.com/r/dcpostworkshopassessment?workshop_id=" +lc_pre_survey: "https://www.surveymonkey.com/r/lcpreworkshopsurvey?workshop_id=" +lc_post_survey: "https://www.surveymonkey.com/r/lcpostworkshopsurvey?workshop_id=" +instructor_pre_survey: "https://www.surveymonkey.com/r/instructor_training_pre_survey?workshop_id=" +instructor_post_survey: "https://www.surveymonkey.com/r/instructor_training_post_survey?workshop_id=" # Start time in minutes (0 to be clock-independent, 540 to show a start at 09:00 am). start_time: 0 @@ -50,25 +67,35 @@ start_time: 0 collections: episodes: output: true - permalink: /:path/ + permalink: /:path/index.html extras: output: true + permalink: /:path/index.html # Set the default layout for things in the episodes collection. defaults: - values: - root: .. + root: . + layout: page - scope: path: "" type: episodes values: + root: .. layout: episode + - scope: + path: "" + type: extras + values: + root: .. + layout: page # Files and directories that are not to be copied. exclude: - Makefile - - bin + - bin/ + - .Rproj.user/ -# Turn off built-in syntax highlighting. -highlighter: false +# Turn on built-in syntax highlighting. +highlighter: rouge diff --git a/_extras/about.md b/_extras/about.md index aa7beea3..5f07f659 100644 --- a/_extras/about.md +++ b/_extras/about.md @@ -1,6 +1,5 @@ --- -layout: page title: About -permalink: /about/ --- {% include carpentries.html %} +{% include links.md %} diff --git a/_extras/discuss.md b/_extras/discuss.md index 1d467a48..bfc33c50 100644 --- a/_extras/discuss.md +++ b/_extras/discuss.md @@ -1,6 +1,6 @@ --- -layout: page title: Discussion -permalink: /discuss/ --- FIXME + +{% include links.md %} diff --git a/_extras/figures.md b/_extras/figures.md index de99a578..ee5b6508 100644 --- a/_extras/figures.md +++ b/_extras/figures.md @@ -1,6 +1,68 @@ --- -layout: page title: Figures -permalink: /figures/ --- -{% include all_figures.html %} + +{% include base_path.html %} + + +{% comment %} +Create anchor for each one of the episodes. +{% endcomment %} +{% for episode in site.episodes %} +
+{% endfor %} + +{% include links.md %} diff --git a/_extras/guide.md b/_extras/guide.md index 3ac56243..50f266f8 100644 --- a/_extras/guide.md +++ b/_extras/guide.md @@ -1,39 +1,6 @@ --- -layout: page title: "Instructor Notes" -permalink: /guide/ --- +FIXME -## Cluster roleplay instructions (from 04-scheduler) - -To do this exercise, you will need about 50-100 pieces of paper or sticky notes. - -1. Divide the room into groups, with specific roles. - * Pick three-four people to be the "scheduler" - * Have the remaining one-third of the room be "users", given several slips of - paper (or post-it notes) and pens - * Have the remaining two thirds of the room be "compute nodes" -Make sure everyone knows what their roles are. Have the "users" - go to the front of the room (or the back, wherever there's space - for them to stand) and the "schedulers" stand between the users - and "compute nodes" (who should remain at their seats). - -2. Divide the pieces of paper / sticky notes among the "users" and have them -fill out all the pages with simple math problems and their name. Tell everyone that these -are the jobs that need to be done and correspond to their computing research problems. - -3. Point out that we now have jobs and we have "compute nodes" (the people still sitting -down) that can solve these problems. How are the jobs going to get to the nodes? -The answer is the scheduling program that will take the jobs from the users and deliver -them to open compute nodes. - -4. Have all the "compute nodes" raise their hands. Have the users "submit" their -jobs by handing them to the schedulers. Schedulers -should then deliver them to "open" (hands-raised) compute nodes and collect -finished problems and return them to the appropriate user. - -5. Wait until most of the problems are done and then re-seat everyone. - -6. Follow-up discussion: what would happen if a node couldn't solve the math problem? It -might be important to indicate the *resources* that your job needs to run. Add other -parallels that will be coming up in the next section of the lesson. +{% include links.md %} diff --git a/_includes/all_keypoints.html b/_includes/all_keypoints.html index 8563df34..e4fd289f 100644 --- a/_includes/all_keypoints.html +++ b/_includes/all_keypoints.html @@ -1,13 +1,16 @@ {% comment %} Display key points of all episodes for reference. {% endcomment %} + +{% include base_path.html %} +

Key Points

{% for episode in site.episodes %} {% unless episode.break %}
- {{ episode.title }} + {{ episode.title }}
    diff --git a/_includes/base_path.html b/_includes/base_path.html new file mode 100644 index 00000000..7efb3570 --- /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 index a0e0181f..5691223f 100644 --- a/_includes/carpentries.html +++ b/_includes/carpentries.html @@ -1,44 +1,71 @@ {% comment %} General description of Software and Data Carpentry. {% endcomment %} + +{% include base_path.html %} +
    - Software Carpentry logo + The Carpentries logo
    - Since 1998, - Software Carpentry - has been teaching researchers in science, engineering, medicine, and related disciplines - the computing 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 in the past two and a half years. +

    The Carpentries comprises + Software Carpentry and Data Carpentry, communities of Instructors, Trainers, + Maintainers, helpers, and supporters who share a mission to teach + foundational coding and data science skills to researchers. In January, + 2018, The Carpentries was formed by the merger of Software Carpentry and + Data Carpentry.

    + +

    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.

    +
    +
    +
    +
    + Software Carpentry logo +
    +
    +

    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 logo + Data Carpentry logo
    - 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 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 logo + Library Carpentry logo
    - Library Carpentry is made by librarians to help librarians - automate repetitive, boring, error-prone tasks; - create, maintain and analyse sustainable and reusable data; - work effectively with IT and systems colleagues; - better understand the use of software in research; - and much more. - Library Carpentry was the winner of the 2016 - British Library Labs Teaching and Learning Award. +

    Library Carpentry is in discussions with + The Carpentries to be a Lesson Project, like Software Carpentry* + and Data Carpentry. 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_navbar.html b/_includes/episode_navbar.html index 1f6e033d..ea368eba 100644 --- a/_includes/episode_navbar.html +++ b/_includes/episode_navbar.html @@ -1,28 +1,35 @@ +{% 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 %} +
    -
    -

    +
    +

    {% if page.previous.url %} - previous episode + previous episode {% else %} - lesson home + lesson home {% endif %}

    -
    +
    {% if include.episode_navbar_title %} -

    {{ site.title }}

    -

    {{ page.title }}

    +

    {{ site.title }}

    {% endif %}
    -
    -

    +
    +

    {% if page.next.url %} - next episode + next episode {% else %} - lesson home + lesson home {% endif %}

    diff --git a/_includes/episode_title.html b/_includes/episode_title.html index 5b9c821c..d0abc654 100644 --- a/_includes/episode_title.html +++ b/_includes/episode_title.html @@ -1,42 +1,9 @@ -{% comment %} - Find previous and next episodes (if any). -{% endcomment %} -{% for episode in site.episodes %} - {% if episode.url == page.url %} - {% unless forloop.first %} - {% assign prev_episode = prev %} - {% endunless %} - {% unless forloop.last %} - {% assign next_episode = site.episodes[forloop.index] %} - {% endunless %} - {% endif %} - {% assign prev = episode %} -{% endfor %} - -{% comment %} - Display title and prev/next links. -{% endcomment %}
    -

    - {% if prev_episode %} - - {% else %} - - {% endif %} -

    -

    {{ site.title }}

    {{ page.title }}

    -

    - {% if next_episode %} - - {% else %} - - {% endif %} -

    diff --git a/_includes/favicons.html b/_includes/favicons.html new file mode 100644 index 00000000..8a50b4d9 --- /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/javascript.html b/_includes/javascript.html index a2066c20..fcc74e6e 100644 --- a/_includes/javascript.html +++ b/_includes/javascript.html @@ -1,9 +1,9 @@ {% comment %} - Javascript used in lesson and workshop pages. + JavaScript used in lesson and workshop pages. {% endcomment %} - - - + + +