Modern developers are highly technical, opinionated, passionate, community-focused, driven, polyglot, and most importantly, empowered decision-makers. Today, developers have a say in the products being built and the tools and technologies used to build them. Most importantly, time is precious, and developers and project managers can always benefit from great efficiency. To attain great efficiency, though, you must understand the software lifecycle, and how it can be organized and manipulated.
The industry is still working on perfecting how a developer's time is spent. We can divide a developer's major tasks into two different "loops":
- Inner loop: These are the most common tasks developers do, the ones that fully utilize their skillsets: code, run, validate, and debug. This is the classical developer loop.
- Outer loop: This is where a developer's code goes through continuous integration and continuous delivery (CI/CD) and gets deployed to production. On Gitlab and similar platforms, a developer's pull request (PR) gets merged to the main branch, CI/CD kicks in and creates the build, runs the necessary tests, and deploys to the specified environments. This is a DevOps loop.
Developers should spend most of their effort on inner-loop tasks, driving innovation, and minimal time on the outer loop.
Understanding the differences between the inner and outer loops can help identify the developer tools that work best for each part of the software lifecycle.
Open source inner-loop tools
Here are some of my favorite open source tools for the code, run, validate, and debug cycle.
- Eclipse Che makes Kubernetes development accessible for developer teams. Che provides an in-browser integrated development environment (IDE), allowing developers to code, build, test, and run applications from any machine exactly as they run in production.
- Visual Studio Code (VS Code) and VSCodium are open source code editors with support for debugging, syntax highlighting, intelligent code completion, snippets, code refactoring, and embedded Git.
- OpenShift Do (odo) is a command-line interface for developers that supports fast, iterative development, allowing them to focus on what's most important to them: code.
- Minishift helps developers run OKD (the community distribution of Kubernetes) locally by launching a single-node OKD cluster inside a virtual machine. Minishift allows trying out OKD or developing with it, day-to-day, on a local machine.
- Eclipse Che
- Eclipse Che
- VS Code Dependency Analytics is an open source vulnerability database.
- Eclipse Che
There are many workflows to implement a good coding cycle. To get an idea of how developers are using these tools, read Daniel Oh's article about how he uses Quark for serverless application development and Bryan Son's article about how his team uses Eclipse Che.
Open source outer-loop tools
There are great open source tools that make it easier to send code through CI/CD and deploy it to production.
- Tekton is an open source framework for creating CI/CD systems, allowing developers to build, test, and deploy.
- Jenkins is a free and open source automation server. It helps automate the parts of software development related to building, testing, and deploying to facilitate CI/CD.
- Shipwright is an extensible framework for building container images on Kubernetes.
- Eclipse JKube is a collection of plugins and libraries used to build container images using Docker, Jib, or OpenShift Source-to-Image (S2I) build strategies.
- CodeReady Containers (CRC) manages a local OpenShift 4.x cluster optimized for testing and development purposes.
- Prometheus provides event monitoring and alerting.
- Helm is a package manager for Kubernetes.
- Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. It makes application deployment and lifecycle management automated, auditable, and easy to understand.
If you're keen to implement a DevOps strategy, you can get started with Jess Cherry's article on how to use Minishift and Jenkiins to setup your first pipeline.
Make it easy
Today, developers choose the tools and technologies used in software integration and delivery. If you're a developer, then choose open source tools for maximum flexibility. If you're a project manager or architect, choose open source tools to help your developers succeed by working less and getting more done.