How software development works

Many people do not understand how software development works. They might think that it is possible to create software that can be used forever as is when it is done. Similarly like a knife or shoes. Once a knife is produced you can buy it and use it for cutting foods. There is a catch. When a knife is blunt it is difficult to use it for cutting. It is necessary to sharpen it. You can do it yourself or you can ask an expert to sharpen your knife. This process can be considered as maintenance. It is necessary to sharpen a knife from time to time.

In the world of software, it works exactly the same way. Someone must be responsible for software and maintain it. In contrast to a knife, the software is a much more complex mechanism. It cannot be said that the software is fully ready when it is produced and given to users. Even if teams try the best to create the best piece of software in the world, there always might be minor bugs or other issues. These bugs can appear during usage. Software engineers usually observe the software and collect feedback from users. They can then fix issues and release a newer version of the software.

A knife is a very simple tool that does not need improvements. Everybody can choose a knife of their choice and use it. You can buy a small knife that can be put into your pocket. You can buy a special knife for cutting fishes or you can buy a fighting knife similar to one that Rambo had. In the world of software, all users need to install the same version. They can customize some minor things but the installation package is the same for all of them.

The software usually is more universal. It can do more things and some users can use just a few functionalities while others utilize all available options. Moreover, it can happen that some users would love to have more functionalities or a better user experience. Users are not mostly able to improve the software. They must contact the team and ask for it.

Software without maintenance gets old very quickly and I would be willing to bet with you that everything that you have installed on your computer was updated recently. Teams cannot avoid the maintenance and even adding new functionalities. When they were not willing to do it then competitors would come and create a better product. Users always want to use the best available products and services on the market.

In the world of blockchain, users want to use networks that are fast and have cheap transaction fees. Transactional networks are sufficient for some users. However, other users want to use decentralized services or write their own smart contracts. In the world of blockchain, there is always a lot of space for improving something or delivering new breathtaking functionality. When users are unsatisfied with high transaction fees then teams must act quickly. When users want to have faster settlement then it is necessary to start with searching for a solution. When people want more functionalities, smart contracts can be the right way to go. This will never stop. Why? Because of the adoption. New users will come and they will test many available solutions. Users can have different requirements for functionalities. Settlements in minutes can be fine for some of them. Others will require settlement in seconds. Some users will probably require to use smart contracts and issue their own tokens.

There always be demand for some functionalities and many projects will strive to deliver them. The motivation is simple. Satisfying the needs of users will bring new traffic to the network. Thus, more fees will be collected and the impact of the network on society will be higher. That is exactly what global public networks need.

Let’s compare it with the production of knives. A producer of knives sell them and get paid for them. It allows her to pay costs and produce new knives. The bond between the producer of knives and buyers is weak. Buyers of knives do not need the producer any longer. Maybe in the case that there is a problem with knives and they will complain and will be required to get their money back. In the world of blockchain software, the bond is much stronger. The existence of a decentralized network is fully dependent on software engineers.

They must be somewhere and be ready to solve issues that occur. They also need to consider possible improvements and implement them. If it was not the case then a decentralized network could quietly disappear one day for many reasons. For example, a bug could appear that could prevent users from sending transactions safely. Cryptographic tools can get old and it is necessary to replace them or strengthen cryptography. Competitors can come up with a fantastic improvement and users will wish to have the same feature in the network that they currently use. A competitive network will have a faster transaction, higher decentralization, lower fees, or nicer UI. All those are reasons why a team must be ready to react quickly to innovations that happen elsewhere.

Let’s ask a critical question. How should a team of a decentralized network look like?

Levels of decentralization

Let’s explain what is the relation between a decentralized network and a bunch of developers that take care of the software.

IOHK is an R&D team that is currently responsible for the Cardano software development. There are a bunch of smaller teams all around the world that form the IOHK. A few universities are engaged in the development of Cardano as well. So, there is a certain level of decentralization regarding geography and independence of groups. It is actually very smart to engage universities in the development since even if IOHK disappeared then the best brains in the world could continue with the research and development of Cardano.

IOHK produces a client or a node. It is a piece of software that people install on their computers when they want to use Cardano or create a Cardano pool. Everybody in the world can freely decide to install the Cardano client or create a pool. Nobody needs permission. The source code is available on GitHub. So it is possible to build your own version.

It is the point where the decentralization of the Cardano network begins. Individuals make their own decisions about installing the software. When they decide to do it, nobody can easily prevent it. Neither the IOHK team nor Charles Hoskinson. It is often said that Cardano is centralized since it is possible to contact the IOHK company or Charles directly. We think that these thoughts are wrong. How could somebody influence the decisions of individuals that have installed the software? When authorities insisted on Charles stopping the Cardano network how could he do it? We doubt that Charles would ask the community to stop clients and pools. Anyway, It would not work. Nobody is directly forced to do so. The Cardano network is unstoppable. People can freely operate their nodes and the Cardano network would happily continue on with processing transactions.

The reality is that software development and a decentralized network are two different things. As we said, the IOHK team takes care of the software development but its responsibility ends by pushing code changes to GitHub. It is on the community whether individuals accept the newer version of the client and install it. The team has no power regarding the level of decentralization network. All rules, conditions, and limitations are embedded in the source code. People basically accept the source code regardless of whether individuals understand the content or not.

We hope the border between the team and the network is clear. There is still one open question. How a decentralized development should look like. A software team consists of a few experienced engineers. Every team usually needs both researchers and programmers. Besides them, there can be other members of the team taking care of finance, marketing, etc. Members of the team cannot act individually. They must cooperate during the development. It is necessary to define some rules and conditions regarding the development. For example, how to propose new changes, how to implement them, and how to accept them and include them into the main branch of the source code. Can everyone in the world change something in the source code and be sure that the change will be accepted? Definitely not. If that would be possible then everybody in the world could implement code that could break something regardless of whether it would be intentionally or unintentionally.

To avoid that, the acceptance process must be defined that ensures that the proposed code does what is expected and that it will work. The question is who should have the right to accept proposed changes. There always is a certain level of centralization. Only a limited number of people are capable of judging whether a proposed code change is correct and should be accepted. Everybody should have the right to see all proposed changes and comment on them. However, only a few people should have the right to include changes in the main branch. Decentralization on this level is difficult and it is questionable whether it even makes sense. Clear rules and transparency is the best thing that can be done.

The IOHK team is international and members of the team live in their countries. They are employers of IOHK company and they are regularly paid. IOHK is formally a private company with CEO Charles Hoskinson. Is it a problem or a certain weakness regarding decentralization? In our view not at all at this stage of development and adoption. The team promised to deliver Cardano and there is a plan in the roadmap that will give the protocol into the hands of the community.

The Voltaire era will be the final piece that hands over the development of the protocol to the hands of stakeholders. Stakeholders are people that hold ADA coins. The Cardano project has a treasury that is regularly filled by the part of collected fees. Stakeholders will be able to vote about the future of the protocol. Everybody will be able to propose a new change called the Cardano Improvement Proposal (CIP). Stakeholders will decide whether a given proposed change will be funded and get into the protocol.

Thanks to the Voltaire era, Cardano will become a truly decentralized network and it will not be under the control of IOHK. It does not mean that the current members of the IOHK team will not participate in the research and development of Cardano. It will be still possible but stakeholders will decide what they should do and whether they will be allowed to work on Cardano. The community can decide to hire some other team.

Notice that this level of decentralization is probably the best that can be achieved. The majority of stakeholders are not software engineers. They can have an opinion on things like introducing privacy or whether it is better to spend money on marketing or rather on scalability improvement. They can also decide about the team they will get the mandate to implement the change and what is the fair reward for it. That is all. Stakeholders will decide and engineers will implement the changes.

Maintaining a global decentralized protocol poses a huge responsibility

A global public decentralized network might serve millions or even billions of people. Cardano is an ambitious project that can achieve the goal. Cardano’s definition of success is about solving real-world issues. It means that the technology must be superior. The protocol must be able to evolve and it must be ensured that it will never fail. With the growing number of users, the responsibility will also grow. The impact of public networks, Cardano included, might be tremendous one day. Different people and groups will want to get power regarding the protocol development. It is inevitable.

Who should have the responsibility? Somebody whom we do not know? A group of people that we do not know? If we did not know who maintains the protocol then it would mean that a few individuals have the power to decide about the future of all users of the protocol. It does not matter whether we talk about Bitcoin, Ethereum, or Cardano. It is the same in all cases. The process of software development behind every decentralized protocol should be transparent and clear to everybody. In the ideal case, a higher number of people should have the right to decide about the future of the protocol. This requirement will be more important with higher adoption. People will be interested in how it works and how they can influence the future of the protocols. It just makes sense. Holding cryptocurrency basically means that a significant part of people’s wealth depends on a good quality of decentralized networks.

Trust in money might shift from traditional central and commercial banks to decentralized protocols. Giving trust to a decentralized network means that we trust both the team that is responsible for the software development and also to people that keep the network running.

Is it better to trust the IOHK team or some group of anonymous people? We do not have a clear answer for you. It depends on your individual preferences. In our view, the Cardano approach is better. When IOHK will spoil something then there is someone who will be responsible for the failure. The community will know about all details and can decide what to do next. When there is an anonymous team then nobody knows who is the leader or who is in control of the team. The source code can be open but it does not mean that the team does not ignore some proposals for improvements.

When the team is transparent then we know what is going on with the protocol. We know what the current problems are or what is not a problem. Which changes have been proposed and why it can be a good idea to agree with funding. The alternative to that is some web page where articles can appear from time to time. There might be more such pages and nobody will exactly know what is relevant and how to express disagreement or support the idea. We are talking about global networks and want to build new alternative economies on them. The “garage” approach with the anonymous team might seem cool but in reality, it is not.

When there is a team behind the protocol there is also accountability. A leader, or group of leaders, will be responsible for success and failures. If there will be a problem they will have to handle it somehow. When there is an anonymous team behind the protocol then they might not even admit that there is a problem. They might know about it but they can just ignore it because of the complexity or high cost of research. It is something that you do not want to see when your wealth depends on a given protocol.

Conclusion

Cardano is not a punk project. It does not mean that it cannot change the world. The opposite might be true. When Fortune 500 companies consider the usage of a protocol they need to talk with somebody and be sure about the future of the protocol. They might need to implement some features. Regulations can also be an important topic of discussion. It makes no sense to build a long-term business on protocols without a clear vision of the future. The IOHK team, together with Cardano Foundation and Emurgo are entities that can be contacted to discuss the future of the protocol.

A decentralized network is not a knife. One product serves all and needs the team that regularly maintains it. Thus, by the adoption of a network, we also adopt the team. People can either realize it or not. Only the team can positively influence the future of the protocol. When users can influence the development then decentralization is in place. If not then the future might be uncertain for a variety of reasons.