Closed knst closed 2 months ago
Code looks good but DNM imo - it's perfectly fine to break API in major versions.
it's perfectly fine to break API in major versions.
As I mentioned in PR description:
Even if this breaking changes reduces possible future conflicts with bitcoin, it's easy to avoid this breaking changes.
Especially, because both types are "bool" an user may even not notice that something wrong when he meant "load on startup" but got "descriptor wallet" which is not expected.
Happiness of thousands of users over-weight possible future backporting inconvenience.
So, firstly, type of these arguments are same (boolean), so, anyone who will call createwallet
without being aware of breaking changes - can get unexpected behavior of app and even not realize it but got not what he wants and spend significant time to figure our an issue. I consider happiness of users as a bigger priority than happiness of developer who is doing backports from bitcoin.
Secondly, this breaking changes (moving load_on_startup
same as bitcoin) doesn't give any benefits for users point of view, for developer point of view:
So, I would have this one merged
it's perfectly fine to break API in major versions. ... Secondly, this breaking changes (moving
load_on_startup
same as bitcoin) doesn't give any benefits for users point of view, for developer point of view:
- it doesn't improve API ...
- etc - no any benefits except possible minor conflicts when backporting.
well, it keeps API bitcoin-compatible which is definitely a benefit imo for cross-blockchain apps like multi-coin wallets etc.
well, it keeps API bitcoin-compatible which is definitely a benefit imo for cross-blockchain apps like multi-coin wallets etc.
it makes sense, I will agree that bitcoin-like compatibility of API is a good.
@PastaPastaPasta what do you think?
Given that bitcoin also has both descriptors and load_on_startup, I think it is more beneficial to match their api: https://github.com/bitcoin/bitcoin/blob/master/src/rpc/client.cpp#L301C1-L303C1
even re-ordering load_on_startup
is breaking changes, it stays as it is now for sack of better bitcoin-like compatibility.
So, bitcoin's docs and tutorials, multi-currency wallets, etc are matched with our RPC createwallet
and bitcoin's RPC as discussed.
Issue being fixed or feature implemented
PR with experimental support of descriptor wallets introduced breaking changes:
Even if this breaking changes reduces possible future conflicts with bitcoin, it's easy to avoid this breaking changes. Especially, because both types are "bool" an user may even not notice that something wrong when he meant "load on startup" but got "descriptor wallet" which is not expected.
Happiness of thousands of users over-weight possible future backporting inconvenience.
What was done?
Reversed arguments 5 and 6 for RPC
createwallet
: ... descriptors, load_on_startup -> ... load_on_startup, descriptorsHow Has This Been Tested?
Run unit/functional tests
Breaking Changes
It revers breaking changes from https://github.com/dashpay/dash/pull/5965 which has not been released yet.
Checklist: