In an ideal world, yes – we should write perfect software that perfectly addresses every last facet of every single problem, no matter how small. But that’s also not how software engineering works in practice. Your suggestion that we have a culture of “mission accomplished” and “good enough” feels like a gross misinterpretation of the facts on the ground. The culture we are building is one that prioritizes decentralization.
This is not news to you, but I’ll say this here anyway because not everyone reading this writes software for a living. As with most large-scale multi-stakeholder software projects, there are more things to be done than we have person-hours to do them in. So, we make design trade-offs and prioritize features in order to make the most of the resources we have, and accept that there’s no feasible way to make everyone 100% happy. Complicating matters, we’re building a blockchain, where the act of shipping breaking changes is inherently costly because we have to convince the vast majority of users, miners, exchanges, and wallets to upgrade before they can take effect. We do our best to give every issue due consideration, but that is not a guarantee of implementation.
You might not know this, but most of the person-hours available for blockchain work are being spent on hyperchains. The reason for this is because adding the ability to handle a sudden unbounded volume of transactions (which could hit at any time) is considered to be a far more important thing to do now than improving the stacking UX. You might not know this either, but the person-hours being spent on Stacks 2.1 are aimed at fixing a host of other issues that are also more considered more important, such as unblocking bridges, unblocking oracles, unblocking mining pools, fixing the UX of stacking and transferring STX via the Bitcoin chain, fixing the mining window calculation (which affects profitability), removing the PoX sunset, and adding the requisite support for multiple versions of Clarity. There is some time allocated to improving stacking through the means I have described, but not nearly enough to do what you propose.
You may disagree with this prioritization, but you are not being asked to accept this state of affairs either. As with all open-source projects, the fastest way to get your preferred features shipped is to do it yourself. In fact, you may recall that in some of the advice I give for addressing your issues, I end it with something like “you can do this today” or “no breaking change is required.” That is meant to empower you. I’m telling you that you can do something about it without going through a costly chain upgrade, or even submitting a PR. For example, you do not need to get anyone’s permission or buy-in to add “stack/unstack” functionality if you follow my implementation advice on it above.
I can’t help but think that this is a euphemism for “you all should drop everything you’re doing and work on my preferred UX issues right now!”
No one opposes improving UX in principle. And as you acknowledge, we are making some progress on it in Stacks 2.1. We will make more progress on them in 2.2 as we learn how well (or not well) the improvements in 2.1 are received.
However, the inescapable facts of the matter are that while the issues you raise are important, (1) there are other issues that may be more important, and (2) you do not get to decide what is and is not important when it comes to breaking changes (none of us individually do). To speak to that latter point, the community as a whole decides what breaking changes take effect when they choose whether or not to upgrade their nodes (and the SIP process is designed to help this go smoothly).
These facts should not be confused with opposition, nor with a culture of “good enough; mission accomplished!” nor with a political “vetocracy” as you have suggested elsewhere. The community runs the nodes, and in doing so, the community decides what issues are important enough to warrant a breaking change, and the community decides whether or not a breaking change happens. That is, I believe, the essence of a culture that prioritizes decentralization. The SIP process is merely a tool to help the community make these decisions in an open, public, verifiable manner, and it is not the only such tool.
All that said, I am glad that you took the time to bring this issue and others to the community’s attention on the forum. Now, if you would like to get them shipped sooner rather than later, there are some concrete steps you can take today:
-
You can start coming to the weekly blockchain engineering call. We do network status updates, issue triage and PR discussion. It’s every Monday at 11am ET (you can get the link on discord).
-
You can start coming to the bi-monthly blockchain architecture meeting. It’s every other Friday at 2pm ET. This one is better for discussing breaking changes. The link is also available on discord.
-
You can start coming to the weekly SIPs call that we’re in the process of setting up at the Foundation.
-
You can start coming to the bi-monthly governance call. You can get the link from discord.
-
For non-breaking changes, you can implement a prototype. You can spin it up on the public testnet, or even mainnet if you want. You can invite people to try it out. You can submit a PR to the blockchain reference implementation if you think the code belongs there. Or turn it into its own product or service instead if you feel like that’s more appropriate.
-
For breaking changes, you can take the time to write up a SIP. You can inform the community of the nature and scope of the problem, and motivate its severity with supporting data. You can argue that your proposed solution is the best solution out of all alternatives. You can implement your preferred solution and release it as its own testnet. You can put your SIP through peer review to get it to Recommended status, at which point it can be prioritized for inclusion in the next breaking change release. You can submit a reference implementation PR to the blockchain once it’s ready to be activated.
-
You can keep the community posted on the forum as to the progress you’re making.