Skip to content

Editing Style Guide

Amy Brown edited this page Apr 6, 2016 · 37 revisions

Style sheet for 500 Lines

Originally created by Amy Brown for AOSA II. Modified by Tavish Armstrong for POSA, then by Mike DiBernardo and Amy Brown for 500 Lines.

Feel free to add your own items to the alphabetical list if there are things you always have to look up or are not sure of. Please also add correct spellings of proper names.

Copyediting Checklist

  • copyedit
  • check headers
  • consistent header levels
  • capitalization correct
  • check figures for size - reduce size where possible and desirable
  • check format of figure captions
  • make sure figure references use \aosafigref, not just \ref

Footnotes

  • No footnotes which are just links to Wikipedia. If it’s obviously something you can look up on Wikipedia, remove the footnote. If it’s something so weird that it might not occur to people to even look it up, add a brief description to the footnote and keep the Wikipedia URL.
  • If linking to github, make sure it is not a link to a file on a master branch. Pick the most recent commit and use that in place of master in the URL.
  • Footnote markers go after a terminating period, but before a comma or semi-colon. No space before footnote markers.

Special symbols

  • No smileys.
  • Use “and” instead of & (unless it’s in code or the name of something, obviously).
  • Items in bulleted lists should be treated as sentences (capital letter at start, period at end) if any one of the points in the list is a sentence; if all items in the list are phrases or sentence fragments, leave first letter lowercase and do not terminate with a period.

Headers

  • Chapter titles are level one (#), section titles level two (##), and so on.
  • "Section Headers in Header Case Like This"
    • Except fourth-level headers (####) which should be in sentence case
  • Capitalize first word in headers even if it is a technical term which is not usually capitalized (e.g., Wai-test in Yesod chapter) -- unless it’s the name of the subject of the chapter and has been lowercased throughout. In that case, try and rewrite the header so the lowercase word is not the first word.
  • Capitalize sub-words in hyphenated words as usual, so "Peer-to-Peer", "User-Interaction Testing"

Tables, figures, captions

  • Figure captions in sentence case (capitalize first word and proper nouns only) with no terminating period (unless the caption is a sentence). Several sentences okay; copyedit as body text.
    • "Figure 1.1: A thing in the software"
  • Pay special attention to text after verbatim code blocks - if it is a continuation of the paragraph before the code, unindent it (with \noindent)

Dates and Numbers

  • Write out numbers less than 10 (unless you are reporting the result of a specific calculation or measurement); e.g, "Hex colors are six characters long", "The resulting dividend was 6.0".
  • 1990s (no apostrophe)
  • ’90s (apostrophe before)
  • Use commas in large numbers (e.g., 10,000 not 10 000).
  • Do not format numbers as code -- numbers don't need any special formatting unless they would be formatted specially if they were text; i.e., in quotes if you're quoting the number, or italicized if you need to emphasize the number.

International English

  • Keep English/American spellings as written by the author - just make sure they are consistent within the chapter.
  • Make a note in a comment at the top of the .tex/.markdown file as to whether the spelling is American or English.

Punctuation

  • Names of Design Patterns (as defined in the book by Gamma, Helm, Johnson and Vlissides) are treated as proper nouns; i.e., capitalized.
  • Closed em-dash (i.e., no spaces around it).
  • No spaces around slashes.
  • No apostrophe when pluralizing acronyms with no internal period: IDs, IPs, IDEs.
  • Place terminal punctuation outside quotation marks unless the punctuation is part of the quotation (see Copyeditor’s Handbook, p. 78).
  • "It has" should not contract to "it's".
  • Keep exclamation marks to an absolute minimum - no more than two per chapter. Software performance is more exciting than software architecture, but still not that exciting. (Sorry. ;) )
  • For singular words that end in s, form the possessive with 's, not just the apostrophe.
    • e.g., Node.js's

Abbreviations and acronyms

  • I/O not IO
  • PHP not php
  • HTML not html unless in a filename
  • URL not url
  • KB, MB, GB, with a space between the numeral and the unit: 1 KB, not 1KB
  • kbps (kilobits per second), KB/s (kilobytes per second)
  • Don’t set TeX and LaTeX in backslashes - we don’t have any other logos in the book, I don’t see why we should have these. (Except in the colophon.)
  • i.e., e.g., are acceptable but should be followed by a comma.
  • etc. (with period)
  • no periods in degree abbreviations: PhD, MA, BMath, etc.

Formatting

  • First use of an unfamiliar term (or a familiar term in an unfamiliar context) is set in italics - don’t use quotation marks.
  • Use \aosafigure for figures and \aosafigref for references to figures
  • Use \aosaenumerate and \aosaitemize for lists.
  • All URLs should be in \footnotes.
  • Space between citations and text.
  • Use thinspaces in code, e.g.: \code{git\,init\,--bare}
  • Use \code for (this is subject to discussion and change):
  • identifiers
  • command line commands
  • directory and file names
  • email addresses
  • file extensions

For Reference

FOLDOC - the Free Online Dictionary of Computing is useful.


Words and Terms To Note

Terms beginning with a number or symbol

2D, 3D (noun., adj.)

A

active-pixel sensor (n.)

Applesoft BASIC (n.)

application (not app )

application-level (adj.)

ad hoc (no hyphen)

Autotools (proper n.) refer to them as "the Autotools"

B

backend (n.) (contrast with “front end”)

back-end (adj.)

backtick (n.) for this: `

bachelor’s degree (not just “bachelor’s in Math”)

BLOB (n.) Binary Large OBject (note all caps)

Boolean

C

caching

client-side (adj.)

CMake

code base

Comet (web application model) (note capital)

command-line interface

command instead of command-line for a specific invocation of a command

callback (n., adj.)

D

data set (two words)

dynamically typed (no hyphen)

E

e-commerce

edge case (n.) (two words)

edge detection (adj.) (no hyphen)

email

end user (n.)

end-user (adj.)

Euclidean (adj.)

F

filename (n.) (contrast with "file system", two words)

file system (n., adj.) (contrast with "filename", one word)

front end (n.) (contrast with “backend”, one word)

front-end (adj.)

focused

fault-tolerant (adj.)

flowchart (n.)

G

g (abbv.) unit indicating average acceleration caused by gravity on Earth

gcc (proper n.)

  • Use gcc if it is referring to the command. This is a bit fuzzy.

Git (proper n.)

GitHub (proper n.)

garbage-collected (adj.)

H

HTML

HTTP

high-level (adj.)

high-performance (adj.)

hostname (n.)

hard-code (v.)

hard-coded (adj.)

hysteresis (n.)

I-J-K

indexes

Inversion of Control

I/O not IO

JAR (n., Java ARchive)

JSON

Internet (n.) (adj.)

JavaScript (use "JavaScript" on first use, optionally JS thereafter)

JavaBean

L

learned, not learnt

language-specific (adj.)

Logo (n., language)

long poll (two words)

lower-level (adj.)

Lua (proper noun, programming language)

M

Makefile

middleware, pl. middleware (n.)

message passing (adj.) (no adjective because it is a “common compound noun” - CH, p. 139)

metadata (n.)

mojibake (n.) - when non-Latin text is mangled by encoding errors

Multi-Paxos (n.)

N-O

Node.js (the library/platform)

non-profit (adj., n.)

non-blocking (adj.)

open source (n., adj.) (no capitals, no hyphen when used as adj.)

object-relational mapping (hyphen)

object-oriented (adj.)

optimization (n.)

nonlinear, nonlinearly (adj., adv.)

ongoing (adj.)

OpenJPEG

P

PARC (n., Palo Alto Research Center)

Paxos (n., note capital) -- also Simple Paxos, Multi-Paxos

plugin (n.)

plaintext (in context of cryptography), plain text (otherwise)

Power, Russell (n., au. of "How fast can we make interpreted Python?")

Python (capitalize)

Q-R

run time (n.) - the time during which a program is running

run-time (adj.)

Racc (proper n.)

repository (n.) (not repo)

reentrant (adj.)

reengineer (v.)

read-only (adj.)

round-trip (adj., n.)

Rubinsteyn, Alex (n., au. of "How fast can we make interpreted Python?")

S

server-side (adj.)

shared-nothing (architecture)

Service-Oriented Architecture

Simple Paxos (n.)

Simula 67 (n., programming language)

single-threaded (adj.)

a/an SQL (leave as written but ensure consistency within each chapter)

Smalltalk (n., programming language)

statically typed (no hyphen because first ends in -ly)

Slowloris (web server attack)

schema-less

specced (v.) (not spec’d)

standalone (adj.)

setup (n.)

set up (v.)

shutdown (n.)

shut down (v.)

switchover (n.)

special-purpose (adj.))

side effect

subclass (n.) (all one word)

Swartz, Paul (n.) -- creator of pyvm2

Synod (n.) -- ref. to Lamport paper "The Part-Time Parliament" -- note capital

T

type-safe (adj.)

type check (v., n., adj.)

third-party (adj.) (not 3rd)

top-level (adj.)

tradeoff (n.)

U-V

URL

versus (spell out) (except in headers, captions)

Unix (not UNIX)

use case (n.)

use-case (adj.)

W-X-Y-Z

web (n.) -- no cap

website (n.)

WebSocket (note caps)

web server (n.)

web worker (n.) -- note no caps

workaround (n.)

Xerox (proper n.)

Yacc (proper n.)

YAML