Redesign Notes
Nov 20, 2007
Re-writing vs. Modifying Software
You may have noticed that the open source release we posted last month was a complete re-write of the code based we published last year. Not a single line of code was unchanged. This change wasn’t just due to the change from C++ to Java, but was a result of a decision to completely re-architect, re-design and re-write the Dispersed Storage software.
I’ve spoken a few times with Joe Jablonski of Acumence and others about the merits of re-writing software vs. enhancing an existing code base and Joe and I agree that software development organizations too often make the mistake of continuing to enhance weakening code base vs. re-writing from scratch.
I think this misjudgment comes from a fundamental misunderstanding of the nature of modern software development. Modern software development tools in the hands of capable developers can quickly produce complex software. (We are using SCRUM as our development methodology, by the way, and have been quite pleased with the results.) But software development does not just mean the act of writing software. And the time required to write complex software is not just the time required to type the code. Completing a complex software development project requires dynamic coordination of requirements definition, architecture, design, development, testing, validation, tuning, and enhancement. If done correctly, the act of writing code is only a portion of the time and effort required for software development, especially for complex software and especially for a new type of complex software.
Our goal in the initial production release of Dispersed Storage software is to create an outstanding software foundation on which we and others can build Dispersed Storage solutions. The work we did in 2005 and 2006 provided many insights in how to build a Dispersed Storage system and that know-how enabled us around the beginning of this year to know that we needed to re-write our software. That know-how also included knowing how to proceed toward an outstanding initial production release.
Whether we realize that goal will ultimately be determined by market acceptance of our software and specifically whether it provides the reliability, security, performance, scalability, longevity and cost-effectiveness benefits we envision. But the preliminary results we are seeing now from our re-write over the past year so far exceed last year’s results that we know that re-writing was a necessary step.
Chris


