Design, Software
REV: 2021-07-28
Official Guidebolt Software-Design Guide
Reference
Codebase, Version Control, Build System
Canonical Project Structure (Code Synthesis)
Graphics, VR/AR, Machine Vision
Audio
General
The Art of Unix Programming
C, C++
Thriving in a Crowded and Changing World: C++ 2006–2020 (STROUSTRUP)
Joint Strike Fighter AV C++ Coding Standards, 2005, Lockheed Martin
JPL Institutional Coding Standard for the C Programming Language (2009) (NASA)
The Power of Ten - Rules for Developing Safety Critical Code (2006) (NASA)
C Coding Guidelines for Critical Systems (2004) (MISRA)
Notes
SW Types: embedded, general-purpose
Preferred Languages: Python (fast abstract), PHP (fast-deploy web-dev), C (embedded, simple high-rel programs), C++ (complex high-performance programs)
Preferred VCS: Git
Standards
All source code must be ultimately organized in a single umbrella-element (file or folder) per software project/module. The single-umbrella must be specific to that module.
REASON: A single umbrella element is easier to share, back-up, and reference. It is clear where supporting data should be organized; at the start of the file or within the top folder (ex. README file, docs folder).
All comments shall use inline comment syntax (ex. //).
All source code should be organized with documentation to make it useful (ex. compile, install, run). This documentation should be proportional to the complexity/specialness of the use-process.