skip to Main Content
The Road To V3.9.1: An Epic Tale Of Challenges, Woe, Teamwork, And Victory

The Road to v3.9.1: An Epic Tale of Challenges, Woe, Teamwork, and Victory

“Holy SHIZZLE! We’re Fubar’d!!!”

Except I didn’t say, “SHIZZLE,” and I certainly didn’t type, “Fubar’d”

That’s how we ended 2016, or as I like to think of it, how we started 2017.

It was at WordCamp US, Philadelphia, December, 2016 during the State of the Word Address that these words were used in a message to Jennifer Cloake, who was at home that weekend receiving updates from me throughout the WordCamp. Those of you who know me, know that for me to use expletives of any sort is unusual. Those who have bothered to ask, know that when I do, I’m either repeating a punchline of a joke in which it’s necessary, or I cannot think of anything more creative to use due to the gravity of the situation.

You’re probably wondering, dear reader, what had me so wound up during what was otherwise a seemingly typical, “State of the Word,” Matt Mullenweg’s annual report on WordPress things that have been and WordPress things to come. It was the “things to come” part that caused me to drop that bomb that starts with “F”, or, in this case, PH. Matt had just announced that effective immediately, would have, emblazoned for all to see, the words, “WordPress recommends PHP 7.”

2016 had been a banner year for us. We were rocking with DesktopServer, the flagship product of our company. Our new architecture which allowed for extensibility through plugins made updating DesktopServer’s functionality easier and it was proving to be successful. WPSiteSync, our new product, was starting to gain traction and we had big plans for it. Revenue was up and our team was tighter than ever. We worked hard and our customer base couldn’t have been happier. Sure, we had our headaches throughout the year, as any business does, but overall, things were good.

And then Matt said, “PHP 7” and I knew the honeymoon was over.

We had known for some time that PHP 7 was going to need to be addressed in a core release of DesktopServer. DesktopServer is built upon Xampp, which means that we were limited by its ability to adapt to the latest code. Including PHP 7 in a build meant either waiting for Xampp to update, or us to rebuild from scratch. It was a solution we had been discussing and working on for quite a while. With every core update, the question was always, “Is it time to build PHP 7 into DesktopServer?” Time and time again, we tabled it because we knew that upgrading the core code to include PHP 7 would be a tremendous undertaking, many plugins were not even compatible with it, webhosts were not using it as a standard, and, generally, our updates needed to be pushed out to address something more pressing at the time. DesktopServer was running PHP 5.5 which was the stack that almost all of the main WordPress webhosts ran (or older), so we weren’t out of date. Building our software around the mean has always been our operating philosophy because it means our software will work for the highest percentage of customers in a higher percentage of situations. Building software that “just works” has always been our goal, as it should be for any developer.

But when Matt said, “PHP 7” at the State of the Word, we knew the ticking clock had started. Phone calls were made. Discussions were had. How soon could we get PHP 7 into a core release? How hard would it be? How long would it be before “recommended” became “required”? Within a period of less than an hour, ServerPress had gone from being a proactive company to one of reaction. And 2017 had not even begun…

January, 2017

In January of 2017, we released version 3.8.3. This had been in the works and was needed to  address a few important issues that we knew would become problematic if they were not handled ahead of time. We had talked about holding off on 3.8.3 in order to include PHP 7, but after long discussions, we concluded that it was more important to get a new release out than it was to include the update. Including an updated PHP stack, especially one as significant as this one, was going to take some time. After all, PHP 7 was still only “recommended.” We did get the occasional request for the update from our customers, but were able to explain that it was on the roadmap for a soon to come future release. With the release of 3.8.3, PHP 7 had made it as our number one priority.

The year we knew as 2017 had different plans for us, though. Not only was upgrading the PHP stack going to be a challenge, but there would be several other incidents which occurred that would have made a group with less cohesiveness and fortitude throw in the towel. No company wants to spend all of its time being reactive to the market and its changes; or the technology as it shifts.

The Perfect Storm

In 2017, both Apple and Microsoft released several updates to their operating systems, many of which affected the functionality of DesktopServer. All in all, there were 28 updates from Apple and Microsoft’s number exceeded that. When these updates occurred, the Team would collectively hold their breath and ask, “what do we have to fix now?” On the occasions where we were impacted, production would have to stop and we’d have to retool to make up for it. There were times when all it took was an update to a plugin and others when we had to update Core. Other times, it was as simple as a documentation change (those were our favorites).

Reaction after reaction, we watched the clock tick and we watched the year get away from us. Steve worked tirelessly to make sure that our software continued to “just work” while Dave helped rewrite our Design-Time plugins to work in the changing environments.

As early as April of 2017, Steve had the first Mac working version of DesktopServer with PHP 7, but Windows was proving to be problematic. Once it started, it would work fine, but due to some timing issues and other things (which only he could explain so that it made sense), we ran into issues where Windows would continually ask for permission in order to run. This also impacted DesktopServer every time a restart of web and database services was required (so, basically, every time you created a new website).

Throughout the year, our conversations in every production meeting were about how to get DesktopServer done. It felt like every day we would have something new thrown our way to halt production. Many candles were burned at both ends and we could feel the frustration build with some of our customers.

Our sales were starting to slow and our cashflow was taking a hit. We have always been a profitable company, and knew that this was not at stake, but while profitability is the heartbeat of a company, cashflow is its blood and the arteries were a bit clogged.

In August, I decided to make a trek to California where I could pitch in when necessary. This included everything from literally babysitting (kids, not adults) to sitting in coffee shops for hours strategizing and testing. Being in the same time zone as my three partners would make a difference. My goal was to stay in California until we had released a version of DesktopServer which contained PHP 7. On the drive out, we had several conversations about how to best deal with the fact that more and more plugins were recommending PHP 7, maintaining our customer base and keeping them happy, and continue with production when we were constantly reacting to real-world changes that impacted our software. We were all feeling a bit discouraged, letting our customers and our community down was something we had never done before and was not an option. The challenge was real, and the biggest one we had faced.

When Steve produced a version of the software at the beginning of September, we were starting to get excited. We tested in earnest and found few bugs. The Windows issue which required several restarts of DesktopServer was improving but still there. We were finally on our way. . .

Then Google Chrome decided to start forcing SSL. Not only that, but they had decided that it was time to claim the .dev extension for their own, meaning that any sites created in DesktopServer (or just about any other local development platform) would no longer work. Instead of looking to your local system, it would look for the site on the internet, returning an error as a result. Steve, once again, had to stop production and write a script which would convert local sites from .dev to, a domain that is owned by ServerPress and one which we gave to the Community at large to use.

Customer support was at an all time high. To be honest, I don’t even know how Gregg managed to get through it. Customer sites were broken and they needed PHP 7. Where typically, we might have given two to three refunds a month, we were now giving that per week. Our customers, always the best, were apologetic. They *wanted* to give us the business, but at the same time (and most importantly) they needed to protect theirs. While DesktopServer still worked for the vast majority of designers and developers, the group for which it was no longer a useful workflow tool was growing.

Our goal has always been simply to see to it that people had a workflow that worked for them. While we firmly believe that DesktopServer is the right tool for the vast majority of WordPress users, we know that it’s not perfect for everyone. We understood their pain and worked to do what we could to alleviate it.

January, 2018

2018 arrived and  we released v3.8.4 right away. This release required a lot of refactoring, but still contained PHP5.x, as we needed to produce something which, out of the box, dealt with the forced SSL/.dev issue and ran faster (especially for Windows users). The script to convert all .dev sites was built into the installer and this feature alone cut our customer service issues down by about 30%. It also included a few perks like a higher resolution display and updates to a couple of Design-Time plugins which we had up on github, but not in the installer.

February saw the release of v3.8.5. This was a minor release to deal with a couple of bugs which showed up in v3.8.4. This proved itself to be a stable release and for the first time in over a year, we finally felt as though we were on top of all the issues that had been thrown our way in 2017. . . So, back to PHP 7.

By this time, SSL had also become something that we had to contend with. We needed to figure out a way to include SSL in local development. Steve had been working on some ideas but his main focus was on getting PHP 7 built into core. The plan was to release v3.9 with PHP 7 and then v3.9.1 would come out with SSL.

And Then There Was Josh

While Steve was busy banging away at v3.9, our good friend Joshua Knapp of An Honest Host (a local boutique webhost) decided he’d take a crack at SSL by building a Design-Time plugin for DesktopServer. When Steve created the idea of plugins for DesktopServer, the thought behind it was to allow for others to be able to contribute to the project in order to improve its core capabilities. As a fan of DesktopServer and our Direct Deploy feature, Josh volunteered to step up to the plate and proceeded to knock it out of the park. (Thanks, Josh!)

In April, we thought we’d experiment with putting out a release candidate of v3.9. This proved to be useful for our customers who required PHP 7 and we saw an immediate case drop in our customer support inbox. Rather than telling people that PHP 7 was not available (and many times refunding their money), we were able to point them to the release candidate. Our customers were happy to test the software for us and give us valuable feedback, and we started to see an upward tic in our sales numbers.

Meanwhile, Josh plugged away at the SSL capability and, as a team, we decided that with SSL ready and PHP 7 ready, we’d skip v3.9 and go straight to 3.9.1.

On May 21, 2018, we released v3.9.1 with SSL and PHP 7. This has resulted in what we’ve all agreed to be the fastest, most versatile and stable release ever. This, of course, leads to much happier customers and a very relieved team. With almost everything under the hood being brand new code, v3.9.1 brings new functionality and a wide open road for us to take it to the future.

My Takeaways

  1. A company is only as strong as its leadership team. I am constantly reminded of how lucky I am to be partnered up with Dave, Gregg, and Steve. “If you want to go fast, go alone. If you want to go far, go together.” -African Proverb (but stolen from Cory Miller)
  2. If you take really good care of your customers when things are going well, they will take care of you when the going gets tough.
  3. You can only control what you can control. Sometimes you’re going to get hit from all sides and the best you can do is put one foot in front of the other (even if it feels like you’re taking three steps back).
  4. Transparency is everything. When people ask, don’t be afraid to answer. If you don’t, they’ll make up their own answers (and I promise you won’t like them).
  5. Don’t give up. Cliché as it sounds, I think about where we’d be if we had given up. I think about where we’d have left our customers. It was not an option, and I’m glad that it wasn’t.
  6. Community matters, but it’s a two-way street. Always put into it more than you expect to get out of it. You might be surprised.