Recent EvalScript() changes mean CHECKLOCKTIMEVERIFY can't be merged



Summary:

In this email conversation, Jeff Garzik and Cory Fields discuss the challenges of code movement and refactoring in Bitcoin's modularization process. While it was done in separate logical chunks to make review easier, it resulted in a blizzard of new files and data structures, making review difficult and breaking out-of-tree patches. Jeff suggests that if the majority of code movement is done up front, followed by simplifications and data structure work, further patches are easier to review and apply with less impact on unrelated code. However, Cory argues that at the micro level, minor code changes are usually needed to accommodate useful code movement, which makes it hard to justify code movement for the sake of it. He gives an example of a pull request that unchains Bitcoin's openssl wrapper so that key operations can be performed by the consensus lib without dragging in bitcoind's structures. The first commit severs the dependencies while the second commit does the code movement from the now-freed wrapper. Cory finds it hard to come up with a workflow that would handle these two changes as separate events while making review easier. In practice, he believes that it would be a massive headache, with lots in flux and seemingly no benefits until some later date. PRs can't depend on each other because they don't fix issues in a linear fashion, which means that other developers can't depend on them either.


Updated on: 2023-06-09T14:50:47.551742+00:00