Using text files to accelerate configuration of COSMOS
COSMOS was created back in 2006 due to the frustrations with building telemetry screens in another command and control application. We've been asked more than a few times whether we will add WYSIWYG Editors or Drag and Drop to our screen definitions. Our philosophy is text based configuration files that enable engineers to make changes quickly and configuration manage those changes easily. This approach allows us to build telemetry screens in less than 1 hour which previously took all day!
How do you configure your software applications? Most consumer facing apps take the approach of running the software and then having the user go through a number of screens to configure all the settings. I think all of us are familiar with this through the use of our phones. The Settings App on the iPhone has gotten so complex it has its own search box to help you figure out where everything is!
Many engineering software applications (including COSMOS) take the configuration file approach. Whether an ini, json, yaml, properties, bashrc, or simply text they allow you enter the settings line by line with an editor and typically apply those settings when the software boots. The learning curve for configuration files is higher but it comes with several key benefits.
Copy and Paste
The most obvious benefit to configuration files is simply copy and paste. If I have an existing line in my configuration file that needs to be duplicated and modified slightly this is extremely fast and efficient. While some applications make copy and paste available in their dialogs, there's nothing quite as fast and easy as ctrl-c, ctrl-v (⌘-c, ⌘-v for us Mac people).
While json is notorious for NOT having comments, the COSMOS configuration files do! Comments are a great way to add notes about why a change was made, future enhancements, alternative implementations, etc. Use comments to help others (and your future self) remember why changes were made and how things work!
Let's say you're using some complex software application and have configured various settings through the application itself. Can those settings be configuration managed in Git or Subversion? Even if the settings can be exported and saved ... are they? Using configuration files which are text makes checking into Git simple and part of the normal workflow. Every change is then easily diffed and attributed so you can know who broke the telemetry stream when a bit offset changes!
Modern software applications like COSMOS take advantage of templating to add even more power to their configuration files. In COSMOS we use ERB which stands for Embedded Ruby. This allows you to inject variables and entire configuration sections into your files. With a little templating logic you can add 5 items as easy as adding 1. Here's an example of injecting the "target_name" variable, rendering a partial configuration file named "_ccsds_tlm.txt", and using ERB logic to add 5 "VALUE" items in a loop.
If you're frustrated with the amount of time it takes to configure your C2 system then setup a Demo with us! We want to enable engineers to be as productive as possible. I promise we have a lot more tricks up our sleeve than just configuration files!