As any developer or community contributor can tell you, some parts of the Singularity codebase can be confusing and frustrating to decipher. Particularly the messy CLI portion of the code, which is written in some Python but mostly Shell. Because of this, and because we need to start expanding the codebase to support interaction with the coming external tooling, we think that the best course of action is to rebuild the CLI from the ground up. When deciding on the language to use, we had the following criteria in mind:
- The team wanted to move to a modern, compiled language for the front end. Eliminating run-time dependencies ensures a consistent experience across all platforms.
- Many of the major projects in the container ecosystem are written in Go. Moving to Go promotes a higher level of interoperability with these other projects.
- Go is an incredibly easy language to become productive in. Most of the team has had little to no experience with Go, but we are quickly coming up to speed.
Right now we have a bit of an idea of how the Singularity runtime will interact with the new Go portions. Check out the diagram that was made by Cedric that gives our ideas on where this is heading:
Over the next week before the Hackathon, the Sylabs team will be hammering as fast as possible to get a framework for the new Go code. Our next blog post will be discussing the details we figure out over the next week.