Gregory Maxwell [ARCHIVE] on Nostr: 📅 Original date posted:2011-07-12 🗒️ Summary of this message: A discussion ...
📅 Original date posted:2011-07-12
🗒️ Summary of this message: A discussion about coding style and reusability in software development, with a suggestion to reimplement parts as libraries and focus on blockchain validation logic.
📝 Original message:On Tue, Jul 12, 2011 at 5:47 PM, Michael Offel <michael.offel at web.de> wrote:
> We seem to have very different opinions on that, but let's try to be
> objective. I belive that every class should be able to stand on its
> own. That way it can be reused in other projects or situations in the
> same project. And it is much more easy to catch and extend class
Objectively, your believes have only the weight of the electrons they are
printed on, so long as you're talking and not coding.
I don't mean that as an insult— I'm sure many people value your ideas
but when you disagree with someone who is actually coding you'll
eventually lose every time. Talk is cheap.
(And I'm guilty of this too— but aware of my lacking commits I'm
certainly not going to expect anyone to listen to _coding style_ advice.
I try to keep my comments to crap I can measure and speculate about.)
[snip]
> In terms of source
> control it even gives some kind of easier to read history and fewer
> merge conflicts. When you start writing a class for exactly one
> propose in one specific situation used by one other class you should
Certainly no modern SCM has major issues with merge conflicts due to
shared files.
Bitcoin is a _tiny_ piece of software... on the order of 20kloc. It's a
a scale where someone competent can read it in a day and have a basic
overall understanding of it in a few.
This fact makes the aesthetics talk seem like pointless shed-painting
especially coming from people who are yet doing substantial work.
The proposal about reimplementing parts as libraries and the switching
to them after validating them is a fine one. I suggest you do it.
Having multiple work on such projects would not be wasted effort,
as we'd all learn from the competition in designs/APIs/and targets for
comparative testing.
The interesting logic, however, is not net.cpp... because nothing too
awful happens if peers get confused and drop their connections here
and there. The critical logic is the blockchain validation logic. Which
must make absolutely identical decisions on all nodes and which has a
lot of corner cases which are difficult to test and might expose
behavioral differences.
There is also a lot of neat functionality in the scripts which is
currently disabled because of a lack of confidence about the
security of that code.
So not only are new, clean, secondary implementations of this logic
needed, but good automatic testing shims which can find
inconsistencies between implementations.
(Testing rigs are often an excellent area of work for people new to
a project.)
Published at
2023-06-07 02:04:53Event JSON
{
"id": "28e8e987f70a18f4883f13a4722759e7bfdd38f8dda2a765a3f68f9c94d0348b",
"pubkey": "4aa6cf9aa5c8e98f401dac603c6a10207509b6a07317676e9d6615f3d7103d73",
"created_at": 1686103493,
"kind": 1,
"tags": [
[
"e",
"4eaf1439aa67825cabdea581be3956c38ea4a62226b60d5367bace64dca7945b",
"",
"root"
],
[
"e",
"10bad963f09cf0056ea073e08b23300838c515f50748b2098d7652a496f12b80",
"",
"reply"
],
[
"p",
"4a8239700cd41727170819f472a0378d295f559c9e333f7e73433b91f0a53f6c"
]
],
"content": "📅 Original date posted:2011-07-12\n🗒️ Summary of this message: A discussion about coding style and reusability in software development, with a suggestion to reimplement parts as libraries and focus on blockchain validation logic.\n📝 Original message:On Tue, Jul 12, 2011 at 5:47 PM, Michael Offel \u003cmichael.offel at web.de\u003e wrote:\n\u003e We seem to have very different opinions on that, but let's try to be\n\u003e objective. I belive that every class should be able to stand on its\n\u003e own. That way it can be reused in other projects or situations in the\n\u003e same project. And it is much more easy to catch and extend class\n\nObjectively, your believes have only the weight of the electrons they are\nprinted on, so long as you're talking and not coding.\n\nI don't mean that as an insult— I'm sure many people value your ideas\nbut when you disagree with someone who is actually coding you'll\neventually lose every time. Talk is cheap.\n\n(And I'm guilty of this too— but aware of my lacking commits I'm\ncertainly not going to expect anyone to listen to _coding style_ advice.\n I try to keep my comments to crap I can measure and speculate about.)\n\n[snip]\n\u003e In terms of source\n\u003e control it even gives some kind of easier to read history and fewer\n\u003e merge conflicts. When you start writing a class for exactly one\n\u003e propose in one specific situation used by one other class you should\n\nCertainly no modern SCM has major issues with merge conflicts due to\nshared files.\n\nBitcoin is a _tiny_ piece of software... on the order of 20kloc. It's a\na scale where someone competent can read it in a day and have a basic\noverall understanding of it in a few.\n\nThis fact makes the aesthetics talk seem like pointless shed-painting\nespecially coming from people who are yet doing substantial work.\n\nThe proposal about reimplementing parts as libraries and the switching\nto them after validating them is a fine one. I suggest you do it.\nHaving multiple work on such projects would not be wasted effort,\nas we'd all learn from the competition in designs/APIs/and targets for\ncomparative testing.\n\nThe interesting logic, however, is not net.cpp... because nothing too\nawful happens if peers get confused and drop their connections here\nand there. The critical logic is the blockchain validation logic. Which\nmust make absolutely identical decisions on all nodes and which has a\nlot of corner cases which are difficult to test and might expose\nbehavioral differences.\n\nThere is also a lot of neat functionality in the scripts which is\ncurrently disabled because of a lack of confidence about the\nsecurity of that code.\n\nSo not only are new, clean, secondary implementations of this logic\nneeded, but good automatic testing shims which can find\ninconsistencies between implementations.\n\n(Testing rigs are often an excellent area of work for people new to\na project.)",
"sig": "511515f1df14d58d78014b0761e45bb97dad85fa315d30d67ee11271950bb41cdc7ea6c8e34150a3e63d42e5cd10fe6c3050417b18d8c4b057adaf082c4b8ca7"
}