Definition of Done - GetPoplog/Seed GitHub Wiki

Our definition of done is the set of criteria we need to meet for completing a pull-request.

  • Tested locally by the dev.
  • CircleCI shows as green.
  • Any significant chance is approved by another dev.
  • Changes meet our standards - see below.
  • Implementation uses our agreed toolset: note that build and runtime have different requirements

Build-time Tools

  • /bin/bash or /bin/sh for shell scripting (not /bin/csh)
  • Widely available filters e.g. cp, tar, chmod, echo, sed, grep, etc.
    • If it is in busybox it's fine.
    • Also known to be allowed: GNU make, git, sudo, curl and wget.
    • Prefer curl to wget.
  • python3 (version 3.7+) for complex scripts and pip for installing packages.
  • Any runtime tools, 'cos its a very short list.

Runtime Tools

  • /bin/sh
  • gcc
  • corepop

Coding

General

  • We prefer spaces to tabs for layout in all contexts. This is because tab-indented text is displayed inconsistently on the system that we use. N.B. Makefiles are excluded because tabs/spaces are significant.

Shell Scripting

  • All scripts will pass the shellcheck
    • e.g. all shell variables will be quoted
  • Scripts will use the long-options for all Unix commands unless the short-codes are explicitly allowed
    • tar we all -xvfcC
    • mkdir we allow -p
    • grep we allow -Rliv

Pop-11 Coding Standards

  • *.p files will include a final newline immediately before the end of file (i.e. line terminator). Required for good behaviour with VED.
  • *.p files will begin with compile_mode :pop11 +strict and assign the section immediately afterwards.
  • Autoloadable files will be accompanied by matching help files that document the autoloadable identifier.
  • Autoloadable variables will be global, so that they work no matter what section they are loaded from.
  • Library files will be accompanied by matching help files that document all the top-level identifiers.
  • Library files will be idempotent, typically guarded by an #_IF.