One of the unsolved problems in computer science is how to evolve software without it getting ugly over time.