My boss implemented a bunch of "enhancements" in Sugar 3.5.x. I now own the project and have the task of migrating our installation to 4.x and beyond.

I may re-do some of his "features" as modules, but some of the other stuff he did is down in the core, e.g. he hacked the source.

Are there any best practices for managing this type of customization? I am sort of assuming that diff, patch and zealous note taking will become my mantra here. I really don't want to redo all this work when Sugar 5.x comes out.