Mike Hearn [ARCHIVE] on Nostr: 📅 Original date posted:2011-08-11 🗒️ Summary of this message: Open source ...
đź“… Original date posted:2011-08-11
🗒️ Summary of this message: Open source maintainers often say "no" more than "yes". Ideas that receive "maybe" or "yes but later" are requests for more work. Some proposals address problems, but may not be the best solution.
đź“ť Original message:I don't think Gavin misunderstands how open source works at all. It's
completely normal for project maintainers to say "no" more often than
they say "yes". When I worked on open source for a living this was
part of the natural flow of things.
It's important to understand that ideas which receive "maybe" or "yes
but later" or "no unless you convince me" or "perhaps in a different
way" are not being shot down. These answers are requests for more work
to be done. You *cannot* get emotional about open source contributions
and any veteran will tell you this. Open source maintainers cannot and
do not say yes to every patch or idea that is proposed. I would be
very worried if Gavin did.
Now let's review these ideas:
> Don't believe me? Â Here's a list of ideas
>
> Â - Extra bits in the service field of the version message to allow nodes
> Â to indicate if they are mining; if they are willing to be seed nodes;
> Â if they relay transactions; if they want relayed transactions.
I think the concept is reasonable but service flags might not be the
best way to do it, for instance, asking for a filtered transaction
feed is useful for lightweight clients so you'd want more precision
that can be fit into service bits.
> Â - getblocks in reverse chronological order so clients can start up quicker
> Â while downloading the blocks in the backround. Â Ironically I was told
> Â "patches welcome" by someone who didn't reject this one instantly.
I already told you this won't help startup time because you have to
connect blocks together in sequence. You can't build up the block
chain backwards unless you don't care about validation at all.
> Â - Query miners for pending transactions
Or just have them send an inv containing them after connect. I don't
remember this one being "shot down".
> Â - Application version separate from client version
You mean separate from protocol version, right?
> Â - A way of requesting block bodies without headers (saving a lot of traffic
> Â for a thin client upgrading)
The cost/benefit ratio of this one isn't obvious at all. The resource
requirements for running a full node are large enough that
re-downloading 80 bytes per block is the least of your worries if
you're upgrading.
> Â - Double SHA-256 for a packet checksum? Â Seriously?
Feel free to submit a patch to disable checksum validation and see if
Gavin accepts it. It needs to still be calculated at send time for
other implementations.
> Â - Sequence number as part of TxIn instead of part of the whole transaction
Sequence numbers are already part of the tx inputs. Or do you mean
they should be part of the whole transaction? If the latter then this
is indeed an idea that will be shot down, it's deliberate that seqnums
are part of the txinputs and it needs to be that way for contracts. It
can't be changed without forking the protocol anyway.
> Every single one of those has been shot down by one or more of the main
> developers. Â I'm not a genius, and not arrogant enough to assume that
> everything I say is right, but _nothing_? Â Really? Â There is no problem that
> one of the above addresses?
Some of your proposals address problems that need to be solved, but
it's not clear that way is the right way to solve them. Others reflect
either lack of understanding of the system or the fact that you don't
value backwards compatibility whereas other people do.
Published at
2023-06-07 02:14:39Event JSON
{
"id": "dbabdc986c819673dc3725cedc245941936a9ee4eb1d662c4a161b3052c617ca",
"pubkey": "f2c95df3766562e3b96b79a0254881c59e8639f23987846961cf55412a77f6f2",
"created_at": 1686104079,
"kind": 1,
"tags": [
[
"e",
"fe8ae56772ad6135ef8f3cc5e223de1011f21616a51d5302085d2b9ebf339345",
"",
"root"
],
[
"e",
"08a3bd64b40cf77aee0ae20e455cf33c8d5eda7a51e01a1759409408732f3cfb",
"",
"reply"
],
[
"p",
"99bec497728c848e65549d1a5257d08de97621edcb4b77073269a45dac708d59"
]
],
"content": "📅 Original date posted:2011-08-11\n🗒️ Summary of this message: Open source maintainers often say \"no\" more than \"yes\". Ideas that receive \"maybe\" or \"yes but later\" are requests for more work. Some proposals address problems, but may not be the best solution.\n📝 Original message:I don't think Gavin misunderstands how open source works at all. It's\ncompletely normal for project maintainers to say \"no\" more often than\nthey say \"yes\". When I worked on open source for a living this was\npart of the natural flow of things.\n\nIt's important to understand that ideas which receive \"maybe\" or \"yes\nbut later\" or \"no unless you convince me\" or \"perhaps in a different\nway\" are not being shot down. These answers are requests for more work\nto be done. You *cannot* get emotional about open source contributions\nand any veteran will tell you this. Open source maintainers cannot and\ndo not say yes to every patch or idea that is proposed. I would be\nvery worried if Gavin did.\n\nNow let's review these ideas:\n\n\u003e Don't believe me?  Here's a list of ideas\n\u003e\n\u003e  - Extra bits in the service field of the version message to allow nodes\n\u003e  to indicate if they are mining; if they are willing to be seed nodes;\n\u003e  if they relay transactions; if they want relayed transactions.\n\nI think the concept is reasonable but service flags might not be the\nbest way to do it, for instance, asking for a filtered transaction\nfeed is useful for lightweight clients so you'd want more precision\nthat can be fit into service bits.\n\n\u003e  - getblocks in reverse chronological order so clients can start up quicker\n\u003e  while downloading the blocks in the backround.  Ironically I was told\n\u003e  \"patches welcome\" by someone who didn't reject this one instantly.\n\nI already told you this won't help startup time because you have to\nconnect blocks together in sequence. You can't build up the block\nchain backwards unless you don't care about validation at all.\n\n\u003e  - Query miners for pending transactions\n\nOr just have them send an inv containing them after connect. I don't\nremember this one being \"shot down\".\n\n\u003e  - Application version separate from client version\n\nYou mean separate from protocol version, right?\n\n\u003e  - A way of requesting block bodies without headers (saving a lot of traffic\n\u003e  for a thin client upgrading)\n\nThe cost/benefit ratio of this one isn't obvious at all. The resource\nrequirements for running a full node are large enough that\nre-downloading 80 bytes per block is the least of your worries if\nyou're upgrading.\n\n\u003e  - Double SHA-256 for a packet checksum?  Seriously?\n\nFeel free to submit a patch to disable checksum validation and see if\nGavin accepts it. It needs to still be calculated at send time for\nother implementations.\n\n\u003e  - Sequence number as part of TxIn instead of part of the whole transaction\n\nSequence numbers are already part of the tx inputs. Or do you mean\nthey should be part of the whole transaction? If the latter then this\nis indeed an idea that will be shot down, it's deliberate that seqnums\nare part of the txinputs and it needs to be that way for contracts. It\ncan't be changed without forking the protocol anyway.\n\n\u003e Every single one of those has been shot down by one or more of the main\n\u003e developers.  I'm not a genius, and not arrogant enough to assume that\n\u003e everything I say is right, but _nothing_?  Really?  There is no problem that\n\u003e one of the above addresses?\n\nSome of your proposals address problems that need to be solved, but\nit's not clear that way is the right way to solve them. Others reflect\neither lack of understanding of the system or the fact that you don't\nvalue backwards compatibility whereas other people do.",
"sig": "540415988fb4e131ac298c1dfb6fd34c502d771b74efa62b87f65aa7b459f7be82342ce750711297afe976b856727ec3a85c06a3883e3c2e1ba1e4fc3a5b4dbd"
}