Commit 9c447b8e authored by Greg Wilson's avatar Greg Wilson
Browse files

Preparing for June 2016 release

parent 15331a02
*~
.DS_Store
.sass-cache
_site
__pycache__
---
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/
---
layout: page
title: "Licenses"
permalink: /license/
---
## Instructional Material
All Software Carpentry and Data Carpentry instructional material is
made available under the [Creative Commons Attribution
license][cc-by-human]. The following is a human-readable summary of
(and not a substitute for) the [full legal text of the CC BY 4.0
license][cc-by-legal].
You are free:
* to **Share**---copy and redistribute the material in any medium or format
* to **Adapt**---remix, transform, and build upon the material
for any purpose, even commercially.
The licensor cannot revoke these freedoms as long as you follow the
license terms.
Under the following terms:
* **Attribution**---You must give appropriate credit (mentioning that
your work is derived from work that is Copyright © Software
Carpentry and, where practical, linking to
http://software-carpentry.org/), provide a [link to the
license][cc-by-human], and indicate if changes were made. You may do
so in any reasonable manner, but not in any way that suggests the
licensor endorses you or your use.
**No additional restrictions**---You may not apply legal terms or
technological measures that legally restrict others from doing
anything the license permits. With the understanding that:
Notices:
* You do not have to comply with the license for elements of the
material in the public domain or where your use is permitted by an
applicable exception or limitation.
* No warranties are given. The license may not give you all of the
permissions necessary for your intended use. For example, other
rights such as publicity, privacy, or moral rights may limit how you
use the material.
## Software
Except where otherwise noted, the example programs and other software
provided by Software Carpentry and Data Carpentry are made available under the
[OSI][osi]-approved
[MIT license][mit-license].
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
## Trademark
"Software Carpentry" an "Data Carpentry" and their respective logos
are registered trademarks of [NumFOCUS][numfocus].
[cc-by-human]: https://creativecommons.org/licenses/by/4.0/
[cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode
[mit-license]: http://opensource.org/licenses/mit-license.html
[numfocus]: http://numfocus.org/
[osi]: http://opensource.org
## ========================================
## Commands for both workshop and lesson websites.
# Settings
MAKEFILES=Makefile $(wildcard *.mk)
JEKYLL=jekyll
DST=_site
# Controls
.PHONY : commands clean files
all : commands
## commands : show all commands.
commands :
@grep -h -E '^##' ${MAKEFILES} | sed -e 's/## //g'
## serve : run a local server.
serve :
${JEKYLL} serve --config _config.yml,_config_dev.yml
## site : build files but do not run a server.
site :
${JEKYLL} build --config _config.yml,_config_dev.yml
## figures : re-generate inclusion displaying all figures.
figures :
@bin/extract_figures.py -s _episodes -p bin/markdown-ast.rb > _includes/all_figures.html
## clean : clean up junk files.
clean :
@rm -rf ${DST}
@rm -rf .sass-cache
@rm -rf bin/__pycache__
@find . -name .DS_Store -exec rm {} \;
@find . -name '*~' -exec rm {} \;
@find . -name '*.pyc' -exec rm {} \;
## ----------------------------------------
## Commands specific to workshop websites.
.PHONY : workshop-check
## workshop-check : check workshop homepage.
workshop-check :
@bin/workshop_check.py .
## ----------------------------------------
## Commands specific to lesson websites.
.PHONY : lesson-check lesson-files lesson-fixme lesson-single
# Lesson source files in the order they appear in the navigation menu.
SRC_FILES = \
index.md \
CONDUCT.md \
setup.md \
$(wildcard _episodes/*.md) \
reference.md \
$(wildcard _extras/*.md) \
LICENSE.md
# Generated lesson files in the order they appear in the navigation menu.
HTML_FILES = \
${DST}/index.html \
${DST}/conduct/index.html \
${DST}/setup/index.html \
$(patsubst _episodes/%.md,${DST}/%/index.html,$(wildcard _episodes/*.md)) \
${DST}/reference/index.html \
$(patsubst _extras/%.md,${DST}/%/index.html,$(wildcard _extras/*.md)) \
${DST}/license/index.html
## lesson-check : validate lesson Markdown.
lesson-check :
@bin/lesson_check.py -s . -p bin/markdown-ast.rb
unittest :
python bin/test_lesson_check.py
## lesson-files : show expected names of generated files for debugging.
lesson-files :
@echo 'source:' ${SRC_FILES}
@echo 'generated:' ${HTML_FILES}
## lesson-fixme : show FIXME markers embedded in source files.
lesson-fixme :
@fgrep -i -n FIXME ${SRC_FILES} || true
#-------------------------------------------------------------------------------
# Include extra commands if available.
#-------------------------------------------------------------------------------
-include commands.mk
#------------------------------------------------------------
# This config-file is only needed for development. Instead of changing
# the url everytime you work locally on the project, run a server with
# both configuration files:
#
# jekyll serve --config _config.yml,_config_dev.yml
#------------------------------------------------------------
# Is this production or development? (Overrides _config.yml.)
is_production: false
# Override root so that CSS and other resources will load locally.
github:
url: http://0.0.0.0:4000
{% comment %}
Display key points of all episodes for reference.
{% endcomment %}
<h2>Key Points</h2>
<table class="table table-striped">
{% for episode in site.episodes %}
{% unless episode.break %}
<tr>
<td class="col-md-3">
<a href="{{ site.github.url }}{{ episode.url }}">{{ episode.title }}</a>
</td>
<td class="col-md-9">
<ul>
{% for keypoint in episode.keypoints %}
<li>{{ keypoint }}</li>
{% endfor %}
</ul>
</td>
</tr>
{% endunless %}
{% endfor %}
</table>
<div class="row">
<div class="col-md-2" align="center">
<a href="{{ site.swc_site }}"><img src="{{ site.github.url }}/assets/img/swc-icon-blue.svg" alt="Software Carpentry logo" /></a>
</div>
<div class="col-md-8">
Since 1998,
<a href="{{ site.swc_site }}">Software Carpentry</a>
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.
</div>
</div>
<br/>
<div class="row">
<div class="col-md-2" align="center">
<a href="{{ site.dc_site }}"><img src="{{ site.github.url }}/assets/img/dc-icon-black.svg" alt="Data Carpentry logo" /></a>
</div>
<div class="col-md-8">
<a href="{{ site.dc_site }}">Data Carpentry</a> 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.
</div>
</div>
{% comment %}
Display information about a break.
{% endcomment %}
<p>Break: {{page.break}} min</p>
{% 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 %}
<blockquote class="keypoints">
<h2>Key Points</h2>
<ul>
{% for keypoint in page.keypoints %}
<li>{{ keypoint }}</li>
{% endfor %}
</ul>
</blockquote>
{% comment %}
Display an episode's timings and learning objectives.
{% endcomment %}
<blockquote class="objectives">
<h2>Overview</h2>
<div class="row">
<div class="col-md-3">
<strong>Teaching:</strong> {{ page.teaching }} min
</br>
<strong>Exercises:</strong> {{ page.exercises }} min
</div>
<div class="col-md-9">
<strong>Questions</strong>
<ul>
{% for question in page.questions %}
<li>{{ question }}</li>
{% endfor %}
</ul>
</div>
</div>
<div class="row">
<div class="col-md-3">
</div>
<div class="col-md-9">
<strong>Objectives</strong>
<ul>
{% for objective in page.objectives %}
<li>{{ objective }}</li>
{% endfor %}
</ul>
</div>
</div>
</blockquote>
{% include episode_find_prev_next.html %}
<div class="row">
<div class="col-md-1">
<h3>
{% if prev_episode %}
<a href="{{ site.github.url }}{{ prev_episode.url }}"><span class="glyphicon glyphicon-menu-left"></span></a>
{% else %}
<a href="{{ site.github.url }}"><span class="glyphicon glyphicon-menu-up"></span></a>
{% endif %}
</h3>
</div>
<div class="col-md-10">
<h3 class="maintitle"><a href="{{ site.github.url }}/">{{ site.title }}</a></h3>
<h1 class="maintitle">{{ page.title }}</h1>
</div>
<div class="col-md-1">
<h3>
{% if next_episode %}
<a href="{{ site.github.url }}{{ next_episode.url }}"><span class="glyphicon glyphicon-menu-right"></span></a>
{% else %}
<a href="{{ site.github.url }}"><span class="glyphicon glyphicon-menu-up"></span></a>
{% endif %}
</h3>
</div>
</div>
{% comment %}
Generic footer. Links to repository, not to generated website, so
we do a bit of a dance to get the right URL.
{% endcomment %}
{% if site.is_production %}
{% capture repo_url %}{{ site.github.repository_url }}{% endcapture %}
{% else %}
{% capture repo_url %}https://github.com/{{ site.account }}/{{ site.project }}{% endcapture %}
{% endif %}
<hr/>
<footer>
<div class="row">
<div class="col-md-6" align="left">
<h4>
Copyright &copy; 2016
{% if site.carpentry == "swc" %}<a href="{{ site.swc_site }}">Software Carpentry Foundation</a>{% endif %}
{% if site.carpentry == "dc" %}<a href="{{ site.dc_site }}">Data Carpentry</a>{% endif %}
</h4>
</div>
<div class="col-md-6" align="right">
<h4>
<a href="{{ repo_url }}">Source</a>
/
<a href="{{ repo_url }}/blob/gh-pages/CONTRIBUTING.md">Contributing</a>
/
<a href="mailto:{{ site.email }}">Contact</a>
</h4>
</div>
</div>
</footer>
<script src="{{ site.github.url }}/assets/js/jquery.min.js"></script>
<script src="{{ site.github.url }}/assets/js/bootstrap.min.js"></script>
<script src="{{ site.github.url }}/assets/js/lesson.js"></script>
<h1 class="maintitle"><a href="{{ site.github.url }}/">{{ site.title }}</a>{% if page.title %}: {{ page.title }}{% endif %}</h1>
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
{% if page.carpentry == "swc" %}
<a href="{{ site.swc_site }}" class="pull-left">
<img class="navbar-logo" src="{{ site.github.url }}/assets/img/swc-icon-blue.svg" alt="Software Carpentry logo" />
</a>
{% elsif page.carpentry == "dc" %}
<a href="{{ site.dc_site }}" class="pull-left">
<img class="navbar-logo" src="{{ site.github.url }}/assets/img/dc-icon-black.svg" alt="Data Carpentry logo" />
</a>
{% elsif site.carpentry == "swc" %}
<a href="{{ site.swc_site }}" class="pull-left">
<img class="navbar-logo" src="{{ site.github.url }}/assets/img/swc-icon-blue.svg" alt="Software Carpentry logo" />
</a>
{% elsif site.carpentry == "dc" %}
<a href="{{ site.dc_site }}" class="pull-left">
<img class="navbar-logo" src="{{ site.github.url }}/assets/img/dc-icon-black.svg" alt="Data Carpentry logo" />
</a>
{% endif %}
<a class="navbar-brand" href="{{ site.github.url }}/">Home</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li><a href="{{ site.github.url }}/conduct/">Code of Conduct</a></li>
{% if site.kind == "lesson" %}
<li><a href="{{ site.github.url }}/setup/">Setup</a></li>
<li class="dropdown">
<a href="{{ site.github.url }}/" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Episodes <span class="caret"></span></a>
<ul class="dropdown-menu">
{% for episode in site.episodes %}
<li><a href="{{ site.github.url }}{{ episode.url }}">{{ episode.title }}</a></li>
{% endfor %}
</ul>
</li>
<li class="dropdown">
<a href="{{ site.github.url }}/" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Extras <span class="caret"></span></a>
<ul class="dropdown-menu">
{% for extra in site.extras %}
<li><a href="{{ site.github.url }}{{ extra.url }}">{{ extra.title }}</a></li>
{% endfor %}
</ul>
</li>
<li><a href="{{ site.github.url }}/reference/">Reference</a></li>
{% endif %}
<li><a href="{{ site.github.url }}/license/">License</a></li>
</ul>
<form class="navbar-form navbar-right" role="search" id="search" onsubmit="google_search(); return false;">
<div class="form-group">
<input type="text" id="google-search" placeholder="Search...">
</div>
</form>
</div>
</div>
</nav>
{% comment %}
Display syllabus in tabular form.
Days are displayed if at least one episode has 'start = true'.
{% endcomment %}
<div class="syllabus">
<h2>Schedule</h2>
{% assign day = 0 %}
{% assign multiday = false %}
{% for episode in site.episodes %}
{% if episode.start %}{% assign multiday = true %}{% break %}{% endif %}
{% endfor %}
{% assign current = site.start_time %}
<table class="table table-striped">
{% for episode in site.episodes %}
{% if episode.start %} {% comment %} Starting a new day? {% endcomment %}
{% assign day = day | plus: 1 %}
{% if day > 1 %} {% comment %} If about to start day 2 or later, show finishing time for previous day {% endcomment %}
{% assign hours = current | divided_by: 60 %}
{% assign minutes = current | modulo: 60 %}
<tr>
{% if multiday %}<td></td>{% endif %}
<td class="col-md-1">{% if hours < 10 %}0{% endif %}{{ hours }}:{% if minutes < 10 %}0{% endif %}{{ minutes }}</td>
<td class="col-md-3">Finish</td>
<td class="col-md-7"></td>
</tr>
{% endif %}
{% assign current = site.start_time %} {% comment %}Re-set start time of this episode to general daily start time {% endcomment %}
{% endif %}
{% assign hours = current | divided_by: 60 %}
{% assign minutes = current | modulo: 60 %}
<tr>
{% if multiday %}<td class="col-md-1">{% if episode.start %}Day {{ day }}{% endif %}</td>{% endif %}
<td class="col-md-1">{% if hours < 10 %}0{% endif %}{{ hours }}:{% if minutes < 10 %}0{% endif %}{{ minutes }}</td>
<td class="col-md-3">
<a href="{{ site.github.url }}{{ episode.url }}">{{ episode.title }}</a>
</td>
<td class="col-md-7">
{% if episode.break %}
Break
{% else %}
{% if episode.questions %}
{{ episode.questions | join: '<br/>' }}
{% endif %}
{% endif %}
</td>
</tr>
{% assign current = current | plus: episode.teaching | plus: episode.exercises | plus: episode.break %}
{% endfor %}
{% assign hours = current | divided_by: 60 %}
{% assign minutes = current | modulo: 60 %}
<tr>
{% if multiday %}<td></td>{% endif %}
<td class="col-md-1">{% if hours < 10 %}0{% endif %}{{ hours }}:{% if minutes < 10 %}0{% endif %}{{ minutes }}</td>
<td class="col-md-3">Finish</td>
<td class="col-md-7"></td>
</tr>
</table>
</div>
<div class="jumbotron">
<div class="row">
<div class="col-md-10 col-md-offset-1">
<h2>{{page.venue}}</h2>
<div class="row">
<div class="col-md-6">
<p>{{page.humandate}}</p>
<p>{% if page.humantime %}{{page.humantime}}{% endif %}</p>
</div>
<div class="col-md-6">
<p>
<strong>Instructors:</strong>
{% if page.instructor %}
{{page.instructor | join: ', ' %}}
{% else %}
to be announced.
{% endif %}
</p>
{% if page.helper %}
<p>
<strong>Helpers:</strong>
{{page.helper | join: ', ' %}}
</p>
{% endif %}
</div>
</div>
</div>
</div>
</div>
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment