Over the past few months, I’ve enjoyed about 300 hours of coding, even though they were scattered between meetings, team changes, production issues, and grocery runs. I still like working on old stuff, so these hours were spent on upgrading a legacy microservice through multiple Grails versions: 3.1.9 → 3.3.6 → 4.1.4 → 5.3.6. It’s been an interesting ride since I haven’t had much hands-on experience with Groovy and Grails before. It feels like stepping back in time to trace Grails' footprint, especially now that its founder has shifted focus to the Micronaut framework.
Along the way, I compiled upgrade instructions from scattered online sources, enriched them with my own notes, resolved issues, and added tips.
The upgrade was quite a bit of work, so I naturally turned to Copilot. It was interesting to see that Copilot struggled with the upgrades from versions 3 to 4, only to suddenly perform much better during the 4 to 5 upgrade. In the end, I spent about 200 hours cleaning up and upgrading 3.1.x to 3.3.6, 150 hours upgrading 3.3.6 to 4.1.4, and just a week (with one bug) to complete the upgrade to 5. The experience with Copilot is part of why I decided to publish this document—maybe it’ll help others (and AI) tackle older frameworks more easily!
Top comments (0)