Atomist has launched an Alpha Programme for those who want to try out Rug, the company’s meta-meta-programming language.
The company describes Rug as a language which automates development workflow. It is used to automate generation of repetitive or boilerplate code, and is orchestrated by Atomist.
Rug aims to improve productivity when working with distributed systems such as microservices. It focuses on some of the problems with these types of architectures, such as repetitive coding tasks across services - library upgrades, build configurations, skeleton project generation, and more.
Russ Miles, lead engineer at Atomist, first unveiled Rug at Jax London 2016, showing how it could be used for project creation. Known as ‘generators,’ these types of Rugs could be used to create microservices from scratch. For example, you could get something like a skeleton Spring Boot microservice generated by executing a single command. This includes components such as a Gradle build configuration, package structure, and even Dockerfiles.
Miles also showed that there was Git and GitHub integration with Rugs. With the ability to create commits and issue pull requests, the Atomist GitHub user behaved just like a real person. By being indistinguishable from an ordinary developer, Miles explained, this would help make it easy to integrate into a team. This was because the Git history and GitHub usage would appear as if it had been a person manually going through the process.
Another integration Miles demonstrated was with Slack. There is an Atomist Slack bot which you can issue commands to in order to create GitHub projects, set up permissions and then generate a skeleton project. This meant that you would be able to clone a new, fully configured service immediately after typing a single phrase into a Slack channel.
Following on from project creation, Miles showed how Rugs were able to make changes to an existing codebase. This was known an ‘editor’. An example shown was one which could perform a library upgrade across multiple projects. A use case for this would be applying a security patch to a common library used across many microservices.
Rug provides its own testing framework. It adopts a BDD approach, which enables the user to describe the behaviour of the application from the outside in. The goal was explained as enabling users to create Rugs which are as robust and reliable as possible.
Miles emphasised that Rug was not something that locks you into editing and creating code for any specific programming languages. By being language agnostic, the goal is for it to easily integrate with the polyglot architectures you often find with microservices. In fact, it was also emphasised that the benefits of Rug are more applicable to these types of complex and distributed systems, as opposed to traditional monolithic applications.
Atomist is founded by Rod Johnson, creator of the Spring Framework. There is also a ten-minute interview with Miles which can be watched online.