Generally I try to stay out of community drama and I know another "here's my thoughts on the funding proposal" article is really pushing it, but I will weigh in anyway. The point here is to mostly point out what seem to be serious misconceptions in the community about how software development works.
Developers must submit an itemized list of things they intend to work on and the number of hours it will take to complete each item.
By and large this isn't how software development works. It seems like many people are under the impression that software is just "write once and forget". Software is rarely ever "done" in any meaningful sense. Instead it requires continual, on-going maintenance to keep functioning. For a large, complex codebase like full node software this includes bug triage and fixing, refactoring, optimizations, improving test coverage, paying down technical debt, backporting, code review, and documentation. Code review usually being the biggest bottleneck. Especially in a codebase where if you fat finger one line of code you can blow up the whole system.
This generally isn't the type of work you create an itemized list and bill for. For example, bugs come up all the time that are unexpected and not planned for. Libraries you are using publish new versions that require updating, often necessitating changes to the code to conform to a new interface. If you set out to improve test coverage you may end up finding that several modules need to be refactored before you can even begin to write more tests, etc, etc etc.
In a thread on Reddit one user wrote that for every $1 in development a company usually spends $4 in maintenance. Not sure how accurate that is, but you get the general point.
When discussing funding development people seem to be under the impression that the money will go to adding new features which you can track progress towards. While this will account for part of it, most likely 80-90% will just go to general maintenance. People saying that developers asking for money for this are asking for a "slush fund" or viewing the need for code maintenance with extreme skepticism as if we're just making this up to get free money, is actually borderline offensive.
This isn't to say development teams are under no obligation to say what the funds will be put towards. Last year I published the BCHD 2019 feature roadmap primarily so that people who are contributing donations or development time would know what to expect. Note that we only completed 4/9 items on the roadmap due to lack of time. But even there, most of our time was spent on just maintenance of the codebase, not features.
Scaling the software requires more developers
Bitcoin Core has something 12-15 full time equivalent developers (this is just a rough guess by eyeballing github). By backporting commits from Core, a codebase like ABC can effectively get another 12-15 full time developers for free. Or at least almost free as the commits still need to be rigorously reviewed and merge conflicts dealt with.
But this is clearly not a viable long term strategy if we want to scale the network as Core has no plans on making the changes to their software necessary to scale. At some point the software needs to diverge substantially from Core, but that can't happen as long as ABC only has like 3-4 devs working on it. The more the codebase diverges, the less code can be backported and we lose many hours of free development.
To be able to scale the software without worrying about diverging too much from Core requires creating a team of developers that would rival Core's in terms of numbers and quality.
Last Year's Fundraiser
I'm hearing a lot of people asking what was wrong with last year's fundraiser. Or more specifically, what is wrong with voluntary donations? Don't get me wrong, I'm personally grateful to everyone who contributed, but there are limits to how much you can expect to get from a fundraiser.
For example, few people might remember but the fundraiser was initially pitched as just a "down payment" with the idea that we might need to do these type of fundraisers more frequently. The 800 BCH goal would likely only be enough to pay two full time developers for a year. Maybe even less than two.
If that fundraiser were run quarterly I think we would maybe get close to the ballpark of what is needed, but my impression is we likely got everything we were going to get from the community at that point and turning around and starting another fundraiser right as this one ended likely would not have been well received. And personally, I think it's unreasonable to ask average redditors to cough up hundreds of dollars per quarter to keep the lights on.
This also says nothing of the uncertainty developers experience wondering if the fundraiser is going to be enough for them to pay their bills or if they are going to have to dip into their retirement savings to pay rent. Or if they should start looking for a another job. Remember many people who work on these projects often make much less than they would working in Silicon Valley for some large tech company. They do it because they believe in Bitcoin Cash's mission and genuinely want to see it succeed.
Very unhealthy dynamics with Bitcoin Unlimited
A long time ago, well before the Cash-Core split, Bitcoin Unlimited received a large anonymous donation to help Bitcoin Unlimited win the scaling battle on BTC. That battle was obviously not won and we had to fork off.
But in the intervening years the Bitcoin price has increased dramatically and they now sit on a war chest of something like $6M. Combine this with a very low burn rate and this creates an incentive to oppose and try to block attempts to fund other development teams as they would be lone group remaining if everyone else packed up and left.
Bootstrapping the network
Imagine if Satoshi released Bitcoin without a miner subsidy. After several years of operation it became clear that not enough people were transacting on the network and the transaction fees that were supposed to be used to secure the network were woefully inadequate. Further imagine that some people proposed creating coins out of this air and using them to pay miners to secure the network in the early days until transaction volume was large enough to sustain the network exclusively with fees. What do you think the reaction of the community would be?
Judging by the reaction of many people in the BCH community I would expect a number of people to freak out, rage quit, and/or threaten to fork the network.
We didn't have to go through this because Satoshi had the foresight to include this subsidy from the beginning. But it's pretty clear that Satoshi didn't have a similar plan for financing development during the bootstrap phase. Did he plan to stay around as lead maintainer forever? Did he plan on using his 1M coins to partially finance development? Did he assume the early developers would get rich enough from early participation that developers could self finance themselves? It's not clear but, of course, none of that happened.
Using part of the miner reward to finance development while the network is bootstapping seems like a reasonable extension of the original concept. The subsidy should not be permanent as at some point one would expect that if the network gets big enough there will be enough large businesses making donations that development would be adequately funded. In fact the current proposal limits it to only six months.
People rightfully have concerns about who is holding the money and how it is to be distributed. Some of the proposals to ameliorate the problem have been pretty decent. But the general opposition, if not outright hostility, to developer financing seems very misguided to me.
Show me an alternative financing proposal that has an equally realistic chance of success and I'll seriously consider it. But I haven't seen anything other general hostility and suspicion of the developers.
Thank you for standing up for the developers in BCH. I don't even understand where you guys make your money, I honestly don't get how you guys can afford to do anything at all with the lack of regular income.