These guidelines have been developed to help you understand the process of creating a tutorial for the English Programming Historian. They include practical and philosophical details of the tutorial writing process, as well as an indication of the workflow and the peer review process. If at any time you are unclear, please email the managing editor, {% include managing-editor.html lang=page.lang %}.
The scope and length of the tutorial should be appropriate to the complexity of the task. Tutorials should not exceed 8,000 words (including code). Shorter lessons are welcome. Longer lessons may need to be split into multiple tutorials.
If you have an idea for a new lesson, complete a lesson proposal form and send it to {% include managing-editor.html lang=page.lang %}.
You can get a sense of what we publish by looking through our published lessons, reading our reviewer guidelines or browsing lessons in development. Please also take a moment to check our Lesson Concordance document to see which methods we have already covered in our published or forthcoming lessons.
If your proposal is accepted, an editor will create a "Proposal" page on our submissions website with the lesson's working title and proposed learning outcomes. This serves to mark the work in progress. To ensure timely publication, authors should submit their draft article within 90 days.
During this 90 day period, your point of contact will be the managing editor or an editor delegated at the managing editor's perogative.
This style guide lays out a set of standards for authors to use when creating or translating English-language lessons for Programming Historian. By using it, you help us ensure content is consistent and accessible.
It is presented in three sections which should be read before and after writing:
This first section is concerned with big-picture matters of style which will help you make decisions that meet the needs of our audience and editors. They include basic information on style and tone, open access and open source values, information on writing for a global audience, writing sustainably, and making smart choices about data used in lessons. Read this section when planning your lesson. Read it again before submitting to make sure your lesson meets these requirements.
Programming Historian is committed to open source values. All lessons must use open source programming languages and software whenever possible. This policy is meant to minimize costs for all parties, and to allow the greatest possible level of participation.
Upon acceptance, you agree to publish your lesson under a Creative Commons "CC-BY" license.
Programming Historian readers live all around the world. Authors can and should take steps to write their lesson accessibly for as many people as possible. Follow these global-facing guidelines:
Write for someone who doesn't live in your country or share your beliefs.
Technical Terms: should always be linked to Wikipedia or a suitably reliable dictionary or sustainable website in the first instance. A technical term is any word that a person on the street may not know or understand.
Cultural References: mentions of persons, organisations, or historical details should always come with contextual information. Assume no prior knowledge, even of widely known cultural references (eg, the Beatles). Use generic terms rather than trademarks (tissue rather than Kleenex). Links to Wikipedia should be used liberally. Be aware that historical events often have different names in different countries.
Idioms: Avoid jokes, puns, plays on words, idiomatic expressions, sarcasm, emojis, jargon, terms unique to your dialect, or language that is more difficult than it needs to be.
Geography: when referencing places, be specific. Does "south-west" mean Valencia? Canada? Africa? Always write out the full name of the area the first time you use it.
Multi-lingual: when choosing methods or tools, make choices with multi-lingual readers in mind – especially for textual analysis methods, which may not support other character sets or may only provide intellectually robust results when used on English texts. Where possible, choose approaches that have multi-lingual documentation, or provide multi-lingual references for further reading. This will help our translators.
Racial and Ethnic Language: use racial terminology carefully and with specificity. Historic terms no longer in use should be used only in their historical context and only when necessary. Use racial terms as adjectives and not nouns: white people rather than "whites", an Asian woman rather than "an Asian". Be aware that terms may be understood differently in different countries and what you have learned to be correct or sensitive may be culturally specific to your country (eg, not all people with African ancestry are "African Americans". Some of them are African, or black British, or Caribbean, etc). Likewise, readers in the UK will understand "Asian" (India, Pakistan, Bangladesh) differently than those in North America (eg China, Japan, Vietnam, Thailand).
Visual Representations: choose primary sources, images, figures, and screen shots, considering how they will present themselves to a global audience.
Computing resources: if your lesson requires relatively substantial computing resources, include an alert warning after the Table of Contents to inform the readers. Please be specific and translate the requirements into real terms (e.g. "You need at least 8GB of RAM to finish this lesson", "This lesson uses large files (up to 2GB)", etc. ). State if readers need admin access to install software.
Programming Historian publishes lessons for the long-term. Please follow these sustainability guidelines when writing:
Authors should consult our lesson retirement policy for information on how the editorial team manages lessons that have become out-of-date.
This second section covers more specific matters of writing style, such as which words to use, or how we use punctuation, or what format to use for dates or numbers. Read this section before and after writing your draft.
Headings should not contain inline code font or style formatting such as bold, italic, or code font. Headings should always immediately precede body text. Do not follow a heading with an admonition or another heading without some form of introductory or descriptive text.
Typically, we use numbered lists and bulleted lists. List items are sentence-capped. List items should be treated as separate items and should not be strung together with punctuation or conjunctions.
NOT style:
Style:
Or:
The guideline is to use them sparingly in the running prose. Specific rules:
Links rather than endnotes may be appropriate in most cases.
Ensure linked phrases are semantically meaningful. Do not link terms that are meaningful only to sighted users such as "click here".
All traditionally published and academic literature should be end-noted rather than linked.
If you are writing an "analysis" tutorial, you must refer to published scholarly literature.
Endnote superscripts should be outside the final punctuation like this.² Not inside like this².
Use the "Notes and Bibliography" system found in the The Chicago Manual of Style, 17th Edition for endnotes.
On first mention of a published work, include author name (including first/given name). For example, "You can find more information in The Elements of Typographic Style by Robert Bringhurst," or "For more information, consult Robert Bringhurt’s The Elements of Typographic Style." On subsequent references, just use the book title. Author’s names can be shortened to surname only on subsequent use.
Endnotes should not just contain a URL.
In order to cite software, which requires citation as a condition of use within a lesson, please provide as much as possible from the information below, following the general "Notes and Bibliography” system found in the Chicago Manual of Style, 17th Edition for endnotes:
Eg. The Pandas Development Team. pandas-dev/pandas: Pandas. v. 1.2.3 (2020). https://doi.org/10.5281/zenodo.3509134
Please check each software official webpage or documentation for authors guidelines about how to cite their work (eg. https://pandas.pydata.org/about/citing.html, https://www.tidyverse.org/blog/2019/11/tidyverse-1-3-0/#citing-the-tidyverse).
This final section covers matters of formatting for submission. Read this section before and after writing your draft. If you get any of these elements wrong, you will be able to correct them when we post a live preview of your lesson at the start of the peer review process.
All lessons must be written in Markdown. A template for writing your lessons has been provided.
Markdown is a mark-up language that is best created with a text editor. MS Word and Open Office are NOT text editors and should be avoided. We recommend Atom, TextWrangler, TextEdit, MacDown or Notepad++. For a gentle introduction to Markdown formatting see Getting Started with Markdown, or the concise reference GitHub Guide to Markdown.
Your lesson should be saved in .md format. Your lesson filename becomes part of the lesson URL. Therefore, it should be named according to the following rules:
To ensure consistency across lessons, adhere to the following text formatting guidelines:
If you want to include an aside or a warning to readers, you can set it apart from the main text:
<div class="alert alert-warning">
Be sure that you follow directions carefully!
</div>
Images can help readers understand your lesson steps, but should not be used for decoration. If you wish to use images in your lesson, label them sequentially LESSON-NAME1.jpg, LESSON-NAME2.jpg, etc. Refer to them in the text as "Figure 1", "Figure 2", and so on. All figures must come with a concise figure caption and endnotes where appropriate. You must have the legal right to post any images.
Use web-friendly file formats such as .png or .jpg and reduce large images to a maximum of 840px on the longest side. This is important for readers in countries with slower internet speeds.
Images should be saved in a folder with the same name as your lesson .md file. The editor assigned to your lesson can assist you in uploading your images when you submit.
To insert an image in your text, use the following format:
{% raw %}
{% include figure.html filename="IMAGE-FILENAME" caption="YOUR CAPTION USING \"ESCAPED\" QUOTES" %}
{% endraw %}
Note that internal quotation marks in your caption must be escaped with a backslash, as in the example above. Images may not appear in previews of your lesson, but your editor will ensure they render properly when the lesson is published.
Lines of code should be formatted to distinguish them clearly from prose:
They will look like this
and this
respectively.
-- Follow best practice in writing your code:
backticks
(eg, `USERNAME HERE`).backticks
when mentioned in the text and should include their file extension. Choose names that are concise and meaningful. You may use snake_case or camelCase, but be consistent (eg, data.txt
, cleanData.py
etc).code
using back-ticks
in the running prose. A list of reserved words in common programming languages include:abstract
, arguments
, await
, Boolean
, break
, byte
, case
, catch
, char
, class
, const
, continue
, debugger
, default
, delete
, do
, double
, else
, enum
, eval
, export
, extends
, false
, final
, finally
, float
, for
, function
, goto
, if
, implements
, import
, in
, instanceof
, int
, interface
, let
, long
, native
, new
, null
, package
, private
, protected
, public
, return
, short
, static
, super
, switch
, synchronized
, this
, throw
, throws
, transient
, true
, try
, typeof
, var
, void
, volatile
, while
, with
, yield
.
and
, as
, assert
, break
, class
, continue
, def
, del
, elif
, else
, except
, exec
, finally
, for
, from
, global
, if
, import
, in
, is
, lambda
, not
, or
, pass
, print
, raise
, return
, try
, while
, with
, yield
.
and
, as
, assert
, break
, class
, continue
, def
, del
, elif
, else
, except
, False
, finally
, for
, from
, global
, if
, import
, in
, is
, lambda
, nonlocal
, None
, not
, or
, pass
, raise
, return
, True
, try
, while
, with
, yield
.
break
, else
, for
, FALSE
, function
, if
, in
, Inf
, NA
, NA_character_
, NA_complex_
, NA_integer_
, NA_real_
, NaN
, next
, NULL
, repeat
, TRUE
, while
.
Double-check that your lesson file has been prepared to the above specifications. Once you are satisfied, we strongly recommend that you ask at least two people to try your tutorial and provide feedback. This will help you make improvements that mean our peer reviewers can focus on helping you produce the strongest possible lesson.
You are ready to submit the lesson for peer review. Submissions are made by emailing materials to your editor so they can upload them to our peer review site on Github.
Your editor will check that your files have been uploaded and formatted properly. At this stage you will be sent a preview link where any formatting errors will be evident and you can fix them.
The peer review will be recorded on a Github "ticket", which acts like an open message board discussion. Be aware that our peer review happens in public and remains publicly available as a permanent record of peer review. If you have concerns or would like to request a closed review, contact your assigned editor.
The peer review process normally happens in 3 stages:
The editor assigned to your lesson will carefully read and try your lesson, providing a first round of feedback that you will be asked to respond to. The purpose of this first round of feedback is to ensure that your lesson addresses the needs of Programming Historian readers, and to make sure that the external peer reviewers receive a lesson that works. You will normally be given one month to respond to this first peer review.
The editor will then open the lesson for formal peer review. This will include at least two reviewers invited by the editor, and may also include comments from the wider community, who are welcome to contribute views. We generally try to ask reviewers to provide their comments within one month, but sometimes unforeseen circumstances mean this is not possible. The editor should make it clear to you that you should not respond to reviews until after both reviews have been published and the editor has summarised and provided clear instructions for moving forward. In some cases this may be a suggestion to substantially revise or rethink the lesson. In other cases it will be a matter of making some changes. Depending on the peer review comments, and the nature of issues raised, you may need to revise the tutorial more than once, but the editor will endeavour to ensure that you are given a clear pathway towards publication. You always have the option of withdrawing from the review process if you so choose.
Once your editor and peer reviewers are happy with the piece, the editor will recommend publication to the Managing Editor, who will read the piece to ensure that it meets our Author's Guidelines and standards. In some cases there may be additional revisions or copy editing at this stage to bring the piece in line with our publishing standards. If the Managing Editor is happy with the piece, it will be moved to the live site for publication. Your editor will inform you of any additional information required at this stage.
You may find it helpful to read our editor guidelines, which detail our editorial process.
If at any point you are unsure of your role or what to do next, post a question to the peer review issue. One of our editors will respond as soon as possible. We endeavour to respond to all queries within a few days.
Occasionally, we receive feedback from users who have encountered an error while completing one of our lessons. If this happens, our Publishing Assistant will open an Issue on GitHub, then carry out an assessment to confirm whether the error reported represents a problem caused by the user (editing the lesson's code or changing its dataset, for example) or a problem within the lesson itself. If the latter, our Publishing Assistant will re-test the relevant part(s) of the lesson and undertake research to identify a fix. As part of this Lesson Maintenance process, we may contact you alongside other members of the Programming Historian team to ask for advice. In the case that no fix can be found, we will propose adding a warning to the lesson explaining that some users may encounter an error. Where possible, the warning should include links to further reading, empowering users to identify a solution themselves.
Our team of volunteers works hard to provide a rigourous, collegial, and efficient peer review for authors. However, we recognize that there are times when we may fall short of expectations. We want authors to feel empowered to hold us to high standards. If, for whatever reason, you feel that you have been treated unfairly, that you are unhappy or confused by the process, that the review process has been unnecessarily delayed, that a reviewer has been rude, that your editor has not been responsive enough, or have any other concern, please bring it to our attention so we can address it proactively.
Raising a concern will NOT negatively affect the outcome of your peer review - even a peer review in progress.
To raise a concern, please contact one of the following parties, chosing whomever you feel most comfortable approaching.
We hope you don't find yourself in a situation in which you are unhappy, but if you do, we thank you for helping us to improve.
This style guide was created with support from the School of Humanities, University of Hertfordshire.