The role of blockchain in enabling software lifecycles

Blockchain. Nearly anyone who spends time online has heard of it, yet very few people really understand what it does and the potential implications. The operational framework for blockchain is cryptocurrency trading, with the best know example being Bitcoin. I’m not going into the weeds on cryptocurrency, there is a lot of information out there and it’s easy to find. What is far more interesting is how blockchain is used to track trades, and what else it could be used to track.

Blockchain is essentially a ledger account of activity, similar to a bank ledger that tracks activity in your checking account. The primary difference is that instead of having the ledger in a fixed location (your bank), the ledger is copied and distributed to thousands of nodes globally. Everyone who wants a copy can have one, everyone can see every trade (the trades are anonymous, but visible). Blockchain as a tracking mechanism is completely open, transparent and vastly replicated. Which, conveniently, also makes it nearly impossible to hack, since this only works if all ledgers are consistent.

Cryptocurrency trading aside, the idea of an open, distributed and non-hackable tracking ledger is incredibly appealing to anyone who needs to track information moving through a process. If you stop and think about this, the potential list of applications gets very big very quickly (and will be addressed in an upcoming blog). For the sake of brevity, I’d like to focus on the potential to apply the premise of a blockchain ledger to software development.

So how would this apply? One example would be using blockchain as an alternative to tracking software (test suites) that are used to ensure code is developed on schedule and on target. Assuming the driver for the use of a test suite is to provide accountability and transparency to the development process, tracking information via a blockchain would address these issues directly, and in a way that offers visibility to everyone in the development cycle. Since most software development follows an agile delivery method, having an embedded framework that provides on-demand end-to-end transparency would be a huge step forward.

In this use case, one of the core enablers of a blockchain solution would be the inclusion of Smart Contracts, which are essentially dependent clauses (e.g. until this condition is met, nothing moves forward), so the delivery process itself is designed to be self-regulating. If a closed-loop DevOps framework enforces service (code) delivery via Smart Contracts, any failures in the code (that is, anything the customer has specified as an unacceptable state) would be detected automatically before it becomes a customer issue. This would drive alignment from the customer via Sales and Support in terms of expectations of service delivery, which is routed back through Product Management/Marketing to Development, worked in through code, tracked by blockchain ledgers, and enforced via Smart Contracts.

This not only ties the whole premise together very nicely, it provides continuity of vision along the entire software supply chain, which is the whole point of DevOps.