Within a long-term distributed systems project we repeatedly stumbled across the well-known yet difficult question to either implement from scratch or comprehend and adapt existing software. Having tried both ways allows us to retrospectively compare the effectiveness of "from scratch" implementation versus software evolution. By using the code bases of GNU GCC and Linux for the adaptation approach we gained valuable experiences with the comprehension and adaptation of large but sparsely documented code bases. In most cases, the adaptation of existing software proved to be by far more effective than implementing from scratch. Surprisingly, the effort needed to comprehend the existing voluminous source codes repeatedly proved to be less than expected. In this paper we discuss our positive and negative experiences and the various factors influencing success and failure. Albeit collected in an academic setting, the observations described in this paper might well be transferable...