Basic stuff around writing programs

3 thoughts
last posted Jan. 30, 2015, 8:26 a.m.
0
get stream as: markdown or atom
0

To write a computer program, you need to provide a bunch of other guff that has little to do with the program you are writing.

  • Licence
  • README
  • Build system (ideally an 'hermetic' build system that insulates your build configuration from the surrounding environment)
  • Test runner
  • Documentation!
    • Something to build docs
    • Something to publish docs
    • API docs
    • Long-form documentation (e.g. how to, design)
    • Change log
  • Release process
  • Code review system
  • Version control
  • Web site
  • Discussion forum
    • IRC?
    • Mailing list?
  • Version numbering
  • Coding standards
  • Linter to support coding standards
  • Continuous integration (ideally something that prevents merging patches that break tests)
0

Additions from others:

  • Somewhere to file bugs (@sil)
  • Code of Conduct (@popey)
  • Installation instructions (@sil)
  • OS-specific packaging
  • A name (@puzzlement, Jani Monoses)
    • Make sure people can search for it! (@puzzlement, @froztbyte)
  • Forum for announcements (Jani Monoses)
    • Blog?
    • Twitter?
  • Landing bot (@bigjools)
    • Something that acts on code review approval by merging, might not be necessary depending on overall setup. (e.g. Github doesn't have "Approve" it just has "Merge").
  • A dependency list (Chad MILLER)
    • If you have a hermetic build process, you don't need another one of these
  • Instructions / script for running from source (@froztbyte)
    • Remember, plenty of potential users/contributors will be unfamiliar with your language's toolchain! @froztbyte [good call - jml]
    • "./makethisrun --devmode should be able to give me all I need to tweak things. debug logs, warnings of missing packages/tools," @froztbyte
0

Serious business!

Things that I personally think are optional, but are good ideas, especially if you've got a bit of momentum or you're hiring lawyers.

  • Logo / branding
  • Contributor agreement (@popey) [jml still doesn't think this is necessary or desirable]
  • Release schedule (Bjoern Michaelsen)
  • Roadmap (Jani Monoses)
  • Documentation style guide