Having a successful upgrade implies not only upgrading the code itself, but also identifying the different tasks that will be part of the Upgrade Plan. Making a good plan for an upgrade requires identifying the current status of the application. A good plan is based upon clear, well-defined, and easily understood objectives.
After years of experience with CakeDC making upgrades, migrating applications from CakePHP 1 to CakePHP 4 in all possible combinations, we have noticed there are a set of elements or characteristics that are useful to evaluate and identify before starting the upgrade. Having a clear understanding of these elements will be helpful to define the different tasks that will be included in the Upgrade Plan, and reduce any risk while upgrading and delivering.
Imagine that you want to run a marathon - but before starting any of the thousands of plans you can find on the internet about “How to run a Marathon”, you must know where you are. You could ask yourself: How many miles per week are you currently running? What is the base training needed to start this program? What is the distance of your longest run in the past 3 weeks? How many days per week do you have available to exercise?, etc. This will help you to choose the plan that better fits you.
It’s important to identify where you are, where you want to get and how to get where you want.
Wondering how to evaluate where you are for the Upgrade? Evaluate the status of your application. You could consider the following points as reference:
What is your current CakePHP version?
Identify the weaknesses and the strength of the current code by making a code review.
Identify the versions of the packages, plugins, libraries that your application is using.
If you are using CakePHP Third Party plugins, figure out if those plugins have already been upgraded.
Identify any third party integration and how the upgrade could affect it.
What is the unit test coverage, if any?
Is there any existing documentation?
Is there any custom change in the CakePHP core? (I hope there is not!)
The complexity, time, cost, and resources required to upgrade your application will depend on the status of your application.
Once you know where you are, it’s the time to plan how to get where you want. Let’s talk about this in a future article.
In case you are looking for some guidance on preparing your Upgrade Plan, don’t hesitate to contact us, we could help you to identify your current status, define the plan and execute the whole plan for you. We can also work together with your team on the upgrade, helping them understand the upgraded codebase so you can maintain the project with your own team as you did before.