Home » Software Development

Category: Software Development

Start Planning to Migrate from the MySQL Extension Now (For Real this Time)

So you have a medium to large PHP codebase that is…  well let’s just say it’s not a spring chicken anymore. Not that there’s anything wrong with that. It does what it needs to do and it does that well.

So, everything is awesome! Except…

Well except that your code still uses the old deprecated MySQL Extension.

But that’s not really a big deal, is it? People have been going on about this for years. It’s not that you aren’t aware of the reasons you should upgrade. It’s just that you never got around to actually doing it. Anyway, your system is doing just fine as it is, right? Right?

Well, that may have been true up till recently, but the situation is becoming a bit more urgent. This is not something you can afford to put off much longer.  Let me explain why…

 

FACT:  The MySQL Extension was still available for PHP 5 but has been removed from PHP 7 onward.

This means that if your codebase still uses the MySQL extension, your system will not work on PHP 7. Having any code that uses the old extension rather than one of the alternatives is effectively keeping you stuck on PHP 5 by preventing you from upgrading to PHP 7.

This version lock-in situation has probably not been too big a deal for you up till now. You have things running just fine in PHP 5. Sure PHP 7 looks awesome, but your system doesn’t really need the new features and you couldn’t justify the upgrade effort. Sure, you were probably even able to maintain a decent level of security with the old MySQL extension if you did things like escaping your queries properly. Unfortunately, this is not a viable position anymore, because…

 

FACT:  Security Support for the last version of PHP 5 will stop by the end of 2018.

This means, that starting 2019 there will be no more security updates and patches for PHP 5. So any system or site running on PHP 5 will become inherently insecure.

In addition, PHP 5 has already started to disappear from OS package managers, hosting services and other sources. As a result, it will become increasingly difficult to set up or find a place to host your PHP 5 system when you need to move it.

All of which means that if your codebase is still locked into PHP 5 by its dependence on the MySQL extension, come 2019, you are in going to be in for a rough ride.

All of this means that you should seriously start working a migration strategy for codebase now.

It’s important to know that the process of converting your code could take a significant amount of time. How long exactly depends on a number of factors such as the size and complexity of your codebase, which technology you choose to replace the old API and the resources available to you.

Time is ticking.  Start looking at your code and researching your options. Then come up with a plan and start converting. The longer you wait the harder this is going to get.

I’ll be posting a series of practical articles and resources to help you with the choices, planning and the actual migration process. Subscribe below if you don’t want to miss them.


Did this help you?

Sign up for my newsletter and I will send you regular articles and other goodies.

Sign Me Up!

You can unsubscribe at any time


Share this:

Q: I’m a beginner stepping into a massive and old PHP codebase, what should I expect?

There is no point in trying to sugar-coat this.

What you can probably expect, unless you are really lucky,  is a giant smelly hairy mEsS. You will probably find yourself dumped into the middle of a tangle of unreadable, untestable and unstable code wedged dangerously between at least two outdated PHP frameworks, half a dozen or so JavaScript frameworks and an abandoned half-baked experimental framework. It will seem like the only thing keeping the whole contraption from collapsing is some deeply sinister black magic of which no mere mortal can conceive.

You can also expect your first reaction to this abomination to be utter disgust and recoil. This will be probably be followed, shortly after by an overwhelming and determined desire to jump in and fix the whole bloody thing, to chop it down at the roots and rebuild it from the ground up.  Every piece of code you see will be festering with ugliness and wrongness and every other kind of technical unholiness.

You will also start to notice that for every rusted nail you suddenly seem to have a ready hammer. Every technique,  pattern, tool and framework you have in your mental toolkit will suddenly find a hole to plug, much like the tortured metaphors in this post.

The best you can do when this starts happening is to stop. Stop and feel the urges, feel them writhing in your gut. Then by any means necessary make sure that you DO NOT ACT on them. Drop your hammer and your sword and your axe. This is not a time for heroics.

It’s important to remember that you did not only inherit a code-base. You also very likely inherited a user base. Even if you don’t currently have any active users, you hopefully plan on having some very soon, right? In either case, your Users should be a primary driving force in any decision you make.

You need to focus on what your Users need. Specifically, you need to focus on what they need right now.

The thing your Users need right now is almost never a shiny new framework or perfectly clean code or a rapidly cascading refactoring effort. They need you to fix the most pressing bugs and implement the most overdue features. They need you to do this as quickly as possible and in a way that minimises disruption.

Safely making big sweeping changes to any complicated system requires a fairly thorough understanding of that system. When starting on a project like this you are not going to have a sufficient level of understanding and gaining it usually takes time. Your users, unfortunately, don’t have time to wait for you to figure out the system while they need things to get done. They also are not going to wait around if you prematurely make big drastic changes and things go wrong because there are important things you missed or did not understand.

Your best option, therefore, is to jump in, start working and work with what you have. As you make your changes write good, clean code, but importantly keep it localised, sensible and coherent within the context of the existing code that surrounds it.

What this all implies is that you need to prepare yourself for a difficult choice. Soon you are going to find yourself surrounded by the Complexity and Chaos that is your code base. You are going to have to choose to stay, stand there immersed in the Chaos and start working with it rather than against it.

Start preparing yourself for this choice now.

Choosing to work in the Chaos does not mean that you are turning your back on Order. You will not have to live in this place forever. You do not have to forget your weapons and your tools, they will all prove useful in time. Every day that you labour in the belly of the beast, you are gradually and carefully getting to know it, discovering every nook and cranny, every seam and smell. You are slowly building up a mental model and drawing a detailed map of its twisted insides. Then, in time, as you start to see it more clearly and completely, you will start hatching a plan…

The strategy you develop may be to launch a savage attack and slay the monster.  It may be to gradually make her over into a graceful princess. The point is that this is not an undertaking you should make from a position of ignorance.

This choice, to focus on the what is necessary rather than what is interesting, sexy and exiting is not an easy one. It is also a choice you will have to make constantly, every time you stare at a piece of code and wonder what next to do. But in the long run, it’s the right decision, for you and your Users.

If you ever need something to help you stay on the path, a simple reason to keep you making the right choice, remember this one thing:

Your code-base is such a mess, in the first place, because everyone before you chose to do differently.


Did this help you?

Sign up for my newsletter and I will send you regular articles and other goodies.

Sign Me Up!

You can unsubscribe at any time


Share this: