I have been thinking about PHP modernization, and modernization of legacy code in general, for a while now. I’m taking the next steps to really get into this process. In this blog post series I will document my journey. I don’t know how many posts will be in the series or how long it will take to complete, so it will just continue to evolve as I go. This post is a brief introduction to the series and my plans.

UPDATE 2016-08-14: After doing some more research on the GitHub project, timschofield/webERP, I found that it is actively being maintained on SourceForge. I have chosen an old and unmaintained (e.g. last commit on June 10,2013) version of this project on GitHub for the purpose of this experiment. What I find or comment on during this process in no way represents the current state of the project in its active location and is not intended to be a review or evaluation of the active project or its maintainers.

Ever since the book Modernizing Legacy Applications in PHP by Paul M. Jones came out, I’ve wanted to go through the process from beginning to end in order to gain experience in refactoring. Well, I’ve finally decided to do it. For the foreseeable future, most of my posts here will be a chronicle of the steps I take to modernize a legacy PHP application.

Since I don’t have a personal project, and projects from work are not candidates, I scoured GitHub for an old PHP project that has a good representation of legacy code characteristics. I decided on timschofield/webERP. It is a fairly large project and has all the characteristics that a modernization effort needs to be challenging. By going through this process with an old and unfamiliar code base, getting started will be a little more challenging than if it were my own. The first order of business will be to get the current code installed and running. Testing will definitely be a challenge since I’m not familiar with the application design or functionality. But, I think this experiment will be beneficial to me and hopefully make me a better PHP developer.

To set the stage for my experiment, here is my planned development environment.

  • Workstation: Windows
  • PHP Versions: 7.0.9 - Windows
  • Other Development Tools/Environment: Cygwin (e.g. bash, vim, vim plugins)

As I go through the process, I will write about what I do and what I learn. I’m excited to get started and to share it with you. Please share your own experiences in the comments section.

Share this on: