I'm absolutely positive that software complexity can decrease and in so far my post was not entirely serious. I have multiple instances at my hand where re-writing existing libraries with a better focus on simplicity, patterns better suited for the job, more stringent APIs and so on all contribute to produce new versions of software that are ~about as capable as the old version but internally much simpler. However I feel that when I just go on building on and on without tearing down entire edifices of code once in a while, software tends to become inscrutable, hard to maintain and hard to extend.