Rethinking software development and operations in the cloud - Dark language

Recently I listened to an episode of the Software Engineering Daily podcast which featured the two founders behind Dark, which is a company developing Dark the programming language. Or rather, Dark is not just a programming language, but a new way of thinking about software development.

One of the founders, Paul Biggar, may be known to people as one of the founders of CircleCI, a well-known CI/CD pipeline product. Paul and Ellen’s talk on the podcast about that we in the software industry try to improve the software development process, but we tend to make smaller improvements here and there and does not take a holistic view. Thus we may improve certain aspects, but we still have a lot of complexity in the software development process - a lot which not directly contribute to what the core aspect of software development is - solving problems and building useful solutions.

As a software developer or DevOps person, one has to learn and perhaps maintain a lot of complexity in tooling - version control systems, test frameworks, CI/CD pipelines, build tools, deployment tools, infrastructure-as-code configurations, patch management, high availability setup etc.

The cycle from development to production can take time and it has to go through a lot of steps and tools to get into production. Productive teams have optimized these processes to do relatively fast and small changes automatically, to allow them to be fairly confident in their ability to change and update fast and safe.

But the tools around this is still a set of loosely coupled pieces which are glued together. The serverless movement promises to remove some of the complexity around the infrastructure to allow focus on the code itself but also introduces some complexity of its own. AWS Lambda may be perhaps the most well-known Function-as-a-service services out there where the idea is that developers should be able to focus just on the business logic of the function. But there is a fair amount of complexity still around building, testing and deploying these functions.

I have done some programming in Clojure and one thing that I love with Clojure programming is the aspect of REPL driven development - using the REPL of Clojure is an integral part of the development process and integrating the editor with the REPL provides a very fast and productive feedback loop when developing.

Dark takes this even further and integrates the whole lifecycle including deployment for the solution into that kind of fast feedback loop - to the point that they refer to Dark as being “deployless”, i.e. deployment is pretty much a non-issue, just a natural part of the development workflow.

I very much applaud this effort and I hope this will succeed. I encourage everyone to go and have a look at the Dark website, read the blogs, look at the videos. Dark is currently in private beta and is not quite ready for general production use yet.

This is the kind of projects that the software industry and cloud computing space need.