OpenC3/cosmos

View on GitHub
docs.openc3.com/docs/meta/philosophy.md

Summary

Maintainability
Test Coverage
---
title: Philosophy
---

COSMOS is a C3 (Command, Control and Communication) system with the following primary goals:

1. Interface with Anything

   COSMOS should be able to communicate with anything that provides a computer-to-computer interface, regardless of what the interface is. This means that COSMOS adapts to what other systems are doing and evolves over time. It does not publish an API that hardware must adhere to if it wants to communicate with COSMOS.

2. Log Everything

   All data that flows into and out of COSMOS is logged. This provides history as well as attribution for what happened when and why. Keeping accurate logs is an essential and critical aspect of COSMOS.

3. Open Architecture and Source

   Nothing about how COSMOS is implemented is meant to be secret or hidden, even in Enterprise Edition. In all editions, the source code for everything in COSMOS is provided and available for users to inspect or modify as needed. Never worry about an unsolvable problem or having to accept some detail that you don't like. This also opens the world to integrate anything they need into COSMOS without restriction or limitation.

4. Be Modular

   There are infinite number of things for COSMOS to connect to, but it is impossible to ship COSMOS with all the code it would need to talk to everything. For this reason, COSMOS is designed to be modular in all the places that matter.

5. Use Configuration when Possible, and Code When Logic Is Needed

   Configuration is great for making COSMOS as usable as possible by non-software engineers. It also shows where common patterns exist. However, configuration is horrible when logic or custom math are needed.

6. Empower Developers

   COSMOS is meant to be easy enough to be used by everyone, not just C2 software experts.