Hi Pelle, you indeed disagreed with this claim in your review. Another reviewer disagreed with your argument, which I then forwarded to you. This was yesterday, the day before I had planned to put out the article. Possibly I should have taken more time to study both sides of the argument (and postponed publication), but when I read both sides yesterday, the other reviewers’ point struck me as more likely to be accurate. For completeness let me reproduce the main parts of the feedback here below:
Your main counterargument (correct me if I needed to quote a larger part): “By the way upgrading solidity will not affect existing contracts at all. I’m not sure who came up with that. You may need to upgrade existing source code to make it compatible with future versions, but existing contracts on the blockchain are immutable and will never be affected. (…) Basically solidity is a compiled language, so after deployment it is really no longer important. Solidit 0.4 introduces some very good features to make it harder for naive developers to write insecure code. This breaks compilation of old solidity code, but in no way affects interaction with older deployed code.”
The other reviewer’s response: “…those criticisms are clearly wrong; if you have a bunch of code written in the language, and the compiler changes the behavior on you, sure, you’re going to get different bytecode and different results in the compiled version. The comment from the transcript, in this context, appears to be about maintenance of the code written in the solidity language. Your response should be — while it might be the case that some contracts are compiled only once, there are others that are probably compiled multiple times. Source code is still important even after deployment because users are going to reuse it. If ethereum people are arguing that solidity is merely a translation layer to create contract code once — “write and forget” — then that’s a very interesting claim that deserves elaboration in its own right.”
Your response to that argument (in your message to me):
“what this just means is that it’s a very young ecosystem. All of these things are improving. See the Changelog for why these changes were made, but also note that they have now included a pragma statement to avoid such issues in the future. https://github.com/ethereum/solidity/blob/develop/Changelog.md#040-2016-09-0808 …. These are things that typically happen in any language early on, while they are defining core features. There are several things that are still needed for making solidity a mature development environment but we’re getting there. There still isn’t a decent package manager, but then again it took 15 years for JS to get one and 10 years for Ruby. But great tools are appearing such as http://truffleframework.com which introduces proper testing frameworks as well as migration tools for updating code. Also remember none of these things have anything directly to do with Ethereum or the EVM, it’s just Solidity.”