-
Notifications
You must be signed in to change notification settings - Fork 0
Editing Style Guide
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.
- 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
- 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.
- 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.
- 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"
- 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)
- 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.
- 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.
- 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
- 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.
- 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
FOLDOC - the Free Online Dictionary of Computing is useful.
2D, 3D (noun., adj.)
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"
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
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.)
data set (two words)
dynamically typed (no hyphen)
e-commerce
edge case (n.) (two words)
edge detection (adj.) (no hyphen)
end user (n.)
end-user (adj.)
Euclidean (adj.)
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 (abbv.) unit indicating average acceleration caused by gravity on Earth
gcc (proper n.)
- Use
gccif it is referring to the command. This is a bit fuzzy.
Git (proper n.)
GitHub (proper n.)
garbage-collected (adj.)
HTML
HTTP
high-level (adj.)
high-performance (adj.)
hostname (n.)
hard-code (v.)
hard-coded (adj.)
hysteresis (n.)
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
learned, not learnt
language-specific (adj.)
Logo (n., language)
long poll (two words)
lower-level (adj.)
Lua (proper noun, programming language)
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.)
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
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)
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?")
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
type-safe (adj.)
type check (v., n., adj.)
third-party (adj.) (not 3rd)
top-level (adj.)
tradeoff (n.)
URL
versus (spell out) (except in headers, captions)
Unix (not UNIX)
use case (n.)
use-case (adj.)
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