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
- Version numbering
- Coding standards
- Linter to support coding standards
- Continuous integration (ideally something that prevents merging patches that break tests)