Atomist - How Teams Deliver Software
Every serious business has its own development and delivery experience. Most of them aren’t what we want. We want to spend our time and focus solving problems for the business, but to do that well, we need to enact our own blueprint for software delivery.
So far, enterprises piece together pipeline tools, configured by a plethora of YAML or by hand in a GUI. For anything interesting, we resort to a Bash script, the lowest common denominator of programming. We enroll myriad chatbots to spam our channels. We write how-to wiki pages and distribute hand-me-down scripts. As our practices improve, older projects languish in prior standards. Meanwhile we shake our heads wistfully over the elegant flow of shiny new delivery tools – they will never fit our real-world environment.
Atomist says, there is a better way. A world beyond pipelines, a world of little YAML and Bash, a world where we code our way to an appropriate delivery experience, with higher coding standards, up-to-date application suites, and continual improvement. And this way begins where we are, not with a big migration.
The new world is driven by events, not configuration, and we specify our reactions in a modern programming language. These events are correlated to each other into a coherent model, an API for Software. Developers and automations work together, coordinating in chat. Decisions are for people; consistent execution of tedious tasks is for programs.
Escape Bash and YAML
Tired of managing CI/CD Bash scripts and YAML config across dozens of repositories? Use Atomist to tame the complexity and execute your best delivery process across all your repositories.
What is this better way?
Atomist lets you construct your delivery process in code – but not too much code. A service, a framework, and some libraries take care of the pieces that are common to every development organization. Atomist works atop your existing toolchain, adding functionality and smoothing your experience; then you’re free to improve it.
While you can run an SDM independently and in private to help only yourself, the magic happens when it connects to the Atomist service to respond to your whole team or organization. The service provides triggering with rich events and custom commands, interactive chat integration, and built-in automations like sweet chat messages for standard events like code push and issue creation. These chat messages get updated when new information comes in. They include useful buttons to take action: raise a PR, label an issue, or approve the next step in the deploy process.
But wait, there’s more!
I’ve talked about how your delivery flow can be defined in code instead of Bash, in one open place instead of many narrow pipelines. I mentioned custom commands, where you can ensconce common developer activities in a convenient location, accessible from chat. These commands are code: consistent, shared, versioned. You might have gleaned that because your Software Delivery Machine is code, you’re never limited to plugins, nor to anyone else’s idea of the correct delivery mechanism; your SDM can integrate with your existing tools. Keep the tools that are working for you, and integrate new ones as you wish. Tie these together with an SDM, plus bonuses like automatic CHANGELOG management.
Your SDM gives you something else: the ability to manipulate code across all your projects with one command. Atomist libraries help you write code transforms–functions that operate on code–and the API for Software turns those into branches, pull requests, or automatic commits on every deviating push. Bring code up to standards and then keep it there.
Your SDM gives you something else: start new projects with the right code and setup, every time. Atomist generators start from a real, working project and use code transforms to construct a starting point in a new repository.
Your SDM can respond to more events, and to custom events that you send. You can query your correlated events using GraphQL. You can build chat commands, with updating messages and adding action buttons. You can add integrations and commands written by Atomist and the community, and contribute your own.
Check out some samples of what an Atomist SDM can do:
- Upgrade test files to a new standard
- Enforce custom code formatting
- Deploy Spring Boot to Kubernetes, and generate new projects, and manage versions of existing projects (video)
- Convert a migration script into a Slack command
You might want to know
How to proceed
If you want bring the Atomist into your team, you’ll get built-in chat integrations immediately. Proceed to the Using Atomist page to get Atomist installed in your Slack workspace, authorized in GitHub, and connected to your continuous integration system.
If you want to develop with Atomist, either for your team or for your own local use (with no enrollment), please skip to the Developer Guide to learn how to create and run your own SDM.