Skip to content

Design, Software

REV: 2021-07-28

Official Guidebolt Software-Design Guide

Reference

FreeRTOS

Codebase, Version Control, Build System

Canonical Project Structure (Code Synthesis)

C++ Style Guide (Google)

Git

Meson

Graphics, VR/AR, Machine Vision

LearnOpenGL

VulkanTutorial

OpenXR Spec (Khronos Group)

DepthAI (Luxonis)

Audio

DeepSpeech (Mozilla)

General

The Art of Unix Programming

TEXT PDF

C, C++

Thriving in a Crowded and Changing World: C++ 2006–2020 (STROUSTRUP)

PDF

Joint Strike Fighter AV C++ Coding Standards, 2005, Lockheed Martin

PDF

JPL Institutional Coding Standard for the C Programming Language (2009) (NASA)

PDF

The Power of Ten - Rules for Developing Safety Critical Code (2006) (NASA)

PDF

C Coding Guidelines for Critical Systems (2004) (MISRA)

PDF

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.