When you have a large codebase with dozens of packages and thousands of classes, sooner or later comes that moment, when you have to create a newer version of something: subproject, package, class, function, etc. But you can't just remove the previous version, you must support both for some period of time. And that time is not the best time of your life, trust me.
But misfortune never comes alone. Here unexpectedly comes one of the two hardest things in computer science — naming things. And in my experience, most of developers choose the dark side — suffix
2 or similar) for new thing.
I'll try to explain, why using
old for old thing is many times better.