With the recent announcement from ABC for their plan to split the coinbase reward as a fee for using their node software, I found it is quite a debatable approach that needs further discussion and exploration.
Maintaining a node software is not a simple task, it requires a lot of work for coding, testing and quality assurance to ensure smooth and reliable mining operations. Anyone who works in financial sector know how critical it is for developing software for financial institutions. Here the miners use the software to earn million dollars everyday. A glitch in the software can cause huge lost in revenue and a big crash in the market price as well. And this is just part of the story. With Bitcoin Cash and its roadmap, the developers are in constant stress to adhere to the deadline to upgrade every 6 months. While I do not quite like that aggressive roadmap, I do understand how much pressure for the developers to keep up with the timeline.
Having said that, there are many ways of getting funded for the cost. It can be from the fund raising programs with proposal and marketing effort, to privately funded via some affiliate contracts, or can be via holding and trading the coin itself... These have been what the developers in crypto currencies have been doing so far and I think they are viable options. In fact, these approaches have been working very well for the open source world for decades.
However, with the invention of Bitcoin and the crypto currency world, we now have a revolutionary way for financing stakeholders with direct and instant payment. That what crypto currency is meant to be. Take miners' reward for example, that is quite revolutionary, isn't?
So thinking of the node software implementation cost needs to pay back to the developers someway or another, why not makes it obvious and transparent? The miners who keep the network secured and proceed the transactions got the coinbase reward and transaction fees directly on chain. What about the developers who developed the software to keep the network secured and help the miners proceed the transactions and find block reward? Why they cannot be paid directly on chain?
Now, let's look into ABC's plan. They propose to redirect x% of coinbase reward to developer's address. While I am not saying it is fair, it is what the developers deemed fair to them for anyone to use their software. So let's respect it. However, I don't think it is a conflicting change either with other developers who doesn't want to pose a fee. There is no additional coins generated for the fee, it is just part of the coinbase reward. Previously the miners can determine to redirect the coinbase to what ever addresses they want, and now part of the coinbase will go into developer's wallet. Yes it may cause a network effect and make the coinbase reward less attractive and hence less network secure. However, that is how the whole eco system works, oneway or another, the cost of node implementation will have to be absorbed, either by direct or indirect payments from miners, users, privately funded or any other goodwills.
Let's look into the big picture instead. The plan is one way to make the payment more direct and transparent, taking advantage of Bitcoin as "a currency". And this will also make the node software development more competitive. By having an option for splitting the reward to developers, it opens up a whole new opportunity for anyone who wants to join the implementation. On one hand, we have some amateur developers just want to work for fun, they can contribute to an open node software without a pay. We also have some developers who are well funded, and willing to compete for free. On another hand, we have other developers who has a plan and commitment to compete commercially by asking for a fee. Implemented well, there shouldn't be any conflict. At the end of the day, there is always only that many coins generated per block. How the reward is split doesn't matter. Developers who don't want to collect a fee can allow the miners to redirect all the coinbase reward to the miners themselves. Others can charge a smaller fee, others may ask for higher, a premium. In the end, it is the miners who choose which software to mine, as long as it satisfies their requirements, it can be of cost, quality or reliability, or just simply they like a specific developer's software... And the developers can play to their advantages: some have free time can contribute freely to learn and to get credits, some are well funded and have good marketing can compete for market share, some have good branding and reputation can charge for premium. The miners themselves can also fund their own development team to avoid the fee.
While it is not entirely the same, in some ways, this mimics the competition between open source and proprietary software, Linux vs Windows, Libre Office vs MS Office, etc... In the end, the users will win with superior software and a rich options to choose from, whether pay for or free software. It is a win-win-win solution for miners, users and developers. This also eliminates the middle man of the previous IFP, the money will go directly to the developers as "pay as you go", quite simple, without a centralised entity. Of course this will leave non-node software developers from adequately funded, however once the whole system has a a strong and stable infrastructure with health competition and cooperation, it will actually benefits and encourages other developers to develop apps and utilities for the system. Leaving this unsolved will lead to split again in the future, regardless of whether ABC still stay with BCH (or another way around). There eventually will be another ABC, from our past experience, whether they were Bitcoin Core, SV.... Unstable and unhealthy systems will not be attractive to developers and users.
So, let's the power of money drives the system development and stability instead of causing conflicts, uncertainty and instability. The BCH world is big enough to house everyone. Anyone can contribute to the BCH eco system, whether amateur, freelance developers, privately funded ones or well established developers. All should have a place to compete fairly for the stability and scalability of the system. Miners and users can come and go, there is little cost for them to switch systems. Losing a single developer will cause a lot of damage! If we have fair rules to keep developers stay within the system and compete fairly, altogether for the end goals, eventually miners, users and more developers will come. It will be a win-win-win!
(Edit) This is not to fund for a centralised funding governance, but rather a direct payment to the node software developers themselves for the use of the software. The node software may hard code the fee so that portion of the coinbase reward will go to the developers, so any miners who wish to use the node software will have to pay (or split the reward). It would be possible for the miners to modify the software to avoid the fee, however they will risk of any quality issues related to modifying the code and recompiling it. In software development, the effort for modifying code is usually small compare to effort for testing and verification. They will have to spend a lot of time to test and verify it. There maybe other developers will fork the software and make it free, but will miners trust those forked versions? Also, when the miners run a modified version of node software, they are essentially opt out for future updates for fixes and patches, which may cause damage to their business.
The point is that the fee is just a part of agreement between the developers and miners, not at protocol level. The miners choose a node implementation for which they can afford for, in exchange for the quality assurance and support services.
Summary: People is asking whether or not to have a fee built in on chain or not. Why can't we have both?
There is no conflicts between developers who want to charge for a fee and developers who want to contribute freely
The coinbase reward will have an option for developers to ask for a fee, it can be from zero to an agreeable maximum ratio (e.g. 10%)
Developers can compete fairly depending on their own goal (money, market or simply just credits). Some may do for free, some may ask for a small fee, some can ask for a premium
A fair and healthy system will encourage all developers to remain and compete for the end goal to keep up with the roadmap for scalability and most importantly for stability, including avoiding split
This is not another IFP, the fee will go directly to the developers for using the node software without a whitelist or a IFP governance. The fee will be completely of developers' control for the expenditure in software development and maintenance.
Nice writeup but ultimately not very constructive for the following reasons:
In an open source project, enforcing a fee is hard (it can just be removed from the source code before compilation)
Your proposal of an optional contribution to some nodes goes completely against a core idea of all versions of the IFP: miners could already do volunatry contributions to one node but they would have a competitive disadvantage over those who don't. So the IFP proposes that everybody has to pay the fee, resulting in the difficulty getting lowered. All miners would basically earn the same amount of BCH per hashpower.
Bitcoin ABC will never implement an optional fee. They know that nobody would pay a Bitcoin ABC fee if they can get basically the same software for free elsewhere.