Atmo Beta-2: New features and a look at what's next

Atmo Beta-2: New features and a look at what's next

Almost 2 weeks ago, the second beta release of Atmo was set loose on the world. The release contained a fair number of new features, which you can read all about in the release notes. I want to highlight my favourite parts here, and talk briefly about what's next for Atmo and the other Suborbital projects that are built into it.

For starters, the new schedules functionality in Beta-2 has become my absolute best friend. By utilizing the exact same mechanism for composing Runables as the handlers section of the Directive, schedules allow you to run background tasks on a schedule you define. You can use all of the operators you already know such as fn, group, as well as the new onErr and forEach:

  - name: atmo-report
      hours: 1
      repo: suborbital/atmo
      - fn: ghstars

      - fn: send-report
          stargazers: ghstars

I've been building my own analytics and reporting tools based on these new capabilities, and it's been a dream. I can build and test my application on my Intel MacBook, and then use the exact same bundle on my office M1 Mac Mini to keep my analytics stack running with no downtime and no re-building for different architectures. WebAssembly is great.

I also want to point out that the internal changes made to Reactr and the Runnable API for this release will have compounding effects for future releases. It introduced a new FFI interface to make the interactions between WebAssembly modules and the host much more efficient when working with large pieces of data. The interface is now much simpler, which will make building future capabilities just that much quicker.

Speaking of future capabilities, I will be setting my sights on database access for Atmo Beta-3. I have been working on some early proof of concepts that use GraphQL as a vehicle for flexible interactions with databases, and the results are very promising. I expect this beta will take a bit longer, as there are many performance and security concerns that need to be designed carefully, but I am really excited about what will become possible when you can use Atmo to access your databases.

In my view, database access is the final major piece of the puzzle that will allow Atmo to ready for the 'real world'. I'm hoping that after Beta-3 is released I will be able to start recommending Atmo for production use. It will not be marked '1.0' until the Directive format, Runnable API, and meshing protocols are finalized and ready for a compatibility guarantee, but I am fully hoping that Atmo 1.0 could arrive before 2022 is upon us.

As for the 'building blocks'; Vektor, Grav, and Reactr continue to evolve. Each has gotten updates recently, with Vektor getting updates to its vlog package, Grav with some performance and stability improvements, and Reactr with a whole host of under-the-hood refactors to make it more flexible and ready for whatever is yet to come.

Subo has been getting new releases alongside Atmo. Most recently it gained a (development only) release tool that is making Suborbital's release process more automated and reliable. I can now cut new releases of any project with one command rather than worrying about forgetting something or having something set incorrectly. All of the Suborbital projects have a roadmap outside of 'just' supporting Atmo, and I hope to give them each more dedicated attention in the second half of this year!

I recently released an experimental Kubernetes deployment for Atmo. Give it a try and let me know what you think!

I get very excited thinking about what can be made possible with the architecture being put in place by Suborbital's projects, and I hope you'll come along with me for the ride! You can follow me and Suborbital on Twitter, and you can visit the Suborbital website if you'd like to join our Discord server, book a 1:1 tour of the project, or otherwise get more information about what Suborbital is all about.

Stay safe, get vaccinated, and keep wearing a mask!

Cover photo by v2osk on Unsplash