Software Maintenance: Hard Forks, Soft Forks, Public Blockchains, Private Blockchains, and more…
The main purpose of software maintenance is to update software application after they are deployed to correct bugs and flaws, improve performance, and adapt to third-party dependencies such as hardware, other software modules, etc.

Software Maintenance is the process of improving and modifying a software product after it has been delivered to the customer. The main purpose of software maintenance is to update software application after they are deployed to correct bugs and flaws, improve performance, and adapt to third-party dependencies such as hardware, other software modules, etc. Modern applications need to be maintained to stay relevant in an ever growing application dominant society where change is rapid and competition can be fierce.
Maintenance and updating traditional software infrastructures already comes with the obstacles of transition security and transition reliability regarding migrating and implementing the new software changes. One consideration when updating software is the backwards compatibility of the update. Backwards compatibility is the property that allows for interoperability with an older legacy software, or with input designed for such a system, especially in terms of telecommunications and computing. For example, the software on a PlayStation 3 was not backwards compatible with PlayStation 2 discs. In contrast, the software on the XBOX One was backwards compatible with a variety of XBOX 360 games.
Backwards compatibility adds an extra degree of complexity for distributed applications (dApps) and blockchain protocols because of the nature and value proposition of ‘Immutability’ throughout the system. Essentially, for the data and transactions previously recorded on the system to still have an auditable history and be utilized after an update, their needs to be backwards compatibility. This is difficult because you can’t modify an previously deployed smart contract on a blockchain without affecting the hash of that block, and therefore, breaking the chain. The terminology used to distinguish backwards compatible and non-backwards compatible updates in blockchain terminology are Soft Forks and Hard Forks, respectively.

Hard Fork vs Soft Fork
Soft Fork: A soft fork is a backward compatible method of upgrading a blockchain. Soft forks do not require software running on computers connected to the network to upgrade to maintain consensus, because all blocks on the soft-forked blockchain adhere to the old set of consensus rules as well as the new ones. However, blocks produced by computers that follow the old set of consensus rules will violate the new set of rules, resulting in their blocks becoming ‘stale’ if a majority adopts the soft fork update. This is because for a soft fork to work, a majority of miners need to recognize and enforce the new set of consensus rules. If this majority is reached, then the older network can become deprecated, with the newer blockchain gaining recognition as the correct blockchain.
Hard Fork: A hard fork is a non-backward compatible method of upgrading a blockchain. It is a permanent divergence from the previous version of a blockchain which are not compatible with the older network. All network participants are required to upgrade to the latest version of the software in order to continue interacting with the blockchain network. Blocks that are verified by nodes that are not yet upgraded to the latest version of the protocol software will be ruled invalid in a hard fork update. This can lead to splits in a blockchain such as the when Ethereum hard forked into Ethereum and Ethereum Classic after the DAO Attack in 2016.
Public Blockchains vs Private Blockchains vs dApps
Public Blockchain, Private Blockchains, and dApps all present separate upgradability problems due to different governance, architecture structures. Private blockchains and dApps can have a higher degree of control over there updates because of the centralized nature of their architecture. Updating and maintaining public blockchains present further complications due to the public governance models many of the most popular blockchain protocols implement. The developers or creators of the system can not choose or force people to adopt the new updates, rather, each of the users of the system must voluntarily agree to use the new update or not. This leads to even more challenges and issues when trying to update a blockchain based application or private blockchain protocols. In parts II-IV, I will outline upgradability in context of each of these specific types of blockchains.
Blockchain upgradability presents one of the largest problems affecting the development community. Traditional software protocols only require point-to-point compatibility which allows for more flexibility when upgrading due to the allowance varying degrees of interoperability. However, in a blockchain network, all participating computers (nodes) must validate the new blocks and the recorded history of the blockchain. This significantly increases the difficult to upgrade without affecting the rest of the network. Upgrading blockchain protocols and dApps require a more complex issues to be considered than traditional software protocols and applications. The next article in this series will outline the difficulties the Ethereum Foundation and core developers are debating in regards to upgrading the Ethereum blockchain. Ethereum is a public blockchain protocol that has over 2,000 dApps and there upgrading roadmap has been changed and delayed multiple times due to difference of opinions and technical difficulties.

About Ken Miyachi
Ken Miyachi is the CEO and co-founder of LedgerSafe, a blockchain based transactional and financial compliance platform. His background is in software engineering, specializing in distributed systems, architecture design, and machine learning.
Miyachi has applied his expertise across a variety interdisciplinary domains including computational biology research for the UCSD Dermatology Department, serverless architecture design of the SpatialVis Application, and advising Sheppard, Mullin, Richter, and Hampton on software patents and revitalizing their Intellectual Property automation and efficiency initiative.
He leverages his unique combination of technical expertise, economic insights, and legal strategies to develop, implement, and manage business objectives. Miyachi currently serves as a researcher at San Diego Supercomputer Centers BlockLAB and is the chair of the IEEE San Diego Blockchain Initiative.
Published March 7, 2019. Views are the author’s own and are not financial, legal or tax advice.


