Software in Space!
Space, the final frontier …”
What is the first thing that pops into your mind when you think of space exploration?
Astronauts? Rockets? International Space Station? Team of experts sitting in an office in a Chinese or American Space agency?
Many images in the media show expert teams congratulating themselves or incredible rovers and rockets cruising in outer space. But what about the people who write the software that keeps the satellites orbiting and the missiles on track?
Many people are curious to learn about space; they want to discover what it looks like and what efforts humanity exerts to explore it. However, without deep and detailed knowledge, it would be hard to understand how space technology really works. And This is where being a software engineer helps. Even if you don’t know enough about rocket materials and physics, coders can comprehend the types of software technologies used in space.
The following is a list of software tools for spacefaring projects:
- HTCondor
- PostgreSQL
- Python
- Angular
- JavaScript
- TypeScript
- Dockers
- Kubernetes
Starlink and SpaceX
The software at Starlink is written in well-known programming languages. Because of its reliability and capability for bare-metal programming, Starlink uses C++ for most of the code in its satellites. The company also uses Python for some prototyping because it’s generally faster to build in. This mirrors what developers use in autonomous vehicle technology.
SpaceX’s continuous integration environment is primarily based on HTCondor, and its metadata is managed with PostgreSQL. In addition, the company uses Python for backend test running, build orchestration, and web services. The front end of these web services uses Angular, JavaScript, and some TypeScript. In terms of containerization, SpaceX uses Dockers and a bit of Kubernetes.
What sets SpaceX’s application software division apart from its equivalents in other companies is that they have four very different projects to support: Falcon, which delivers cargo to outer space, Dragon, which focuses on human spaceflight, Starship, which will focus on interplanetary transport, and Starlink, for satellite internet. This scope of projects sets it apart even from NASA.
Testing and Testing Code
Rocket software needs to be as reliable as possible. So, it is no surprise that the quality requirements are high at NASA and SpaceX, especially compared to regular commercial applications. Elaborate systems are in place to ensure that no one breaks the code by merging something faulty with the master branch. Before a developer can make a pull request, they must meet elaborate criteria. Before merging, the code gets tested twice, and it’s tested again after the actual merge.
For people who don’t necessarily “want to become an astronaut or work at NASA,” Guthals said, “the inspiration of how code is used” to accomplish space exploration missions “can help inspire you to apply the same curiosity and creativity to any problem that you’re passionate about.”