In this post to his site, Justin Carmony shares some of his experience in working with a legacy code base and shares some of the steps he's taking in his own work to modernize it.
There is [still] one big piece written in a less than ideal system. Its still PHP, but much more hacked together. It is our backend CMS system for controlling the website. It is painful to use, and we get many complaints all the time about it. [...] on Twitter, I saw a link for a talk Paul M. Jones gave at the Nashville PHP Usergroup. It was entitled: “It Was Like That When I Got Here: Steps Toward Modernizing a Legacy Codebase.” I couldn’t think of a better title for that talk, nor a better talk to listen to at this very moment.
He mentions the steps he taking to further advance his own project towards a better, non-legacy state including an audit of the current functionality and getting input from users as to which features give them the most pain.
Using these lists to decide what to refactor, we can get the biggest gains for the least amount of work. If we were to rebuild, we would get the smallest gains (if any) of barely having something functional with the greatest effort.