The news is out and about, so I figure I should talk about it a little. Mozilla is no longer running PHP internally for Sync, and we won’t be doing further development on the main sync server (if some horrible security hole comes up for the minimal server, I’ll try and update it, but that too is ultimately deprecated).
The reasons for this had nothing to do with the language, and any attempt to turn it into a my-language-is-superior talking point is misguided. PHP was chosen initially because we were low on internal ops resources and it was the fastest thing I could stand up at the time, not as a way of making a language statement. It served us well for years, was reasonably easy to work with, had libraries for everything we needed and continued to perform acceptably even as we grow our userbase quite substantially. It had its quirks (encoding handling is… interesting) though I have yet to find a language that lacks them. On the whole, I’m pretty happy with the original choice and would consider using PHP again in the future.
So why switch? Ultimately, it came down to the network effect. Almost all other server initiatives at Mozilla (such as SUMO and AMO) are in python, leaving sync as a one-off. That meant we couldn’t leverage a whole lot of fantastically talented webdevs when we ran into problems or needed ideas on how to approach new requirements. Our rockstar operational team was happy to work in multiple languages with multiple deployment methods, but there was no compelling technical reason to put them through the hassle. From a dev perspective, python was just another language to learn, and we got some very talented developers on board to help those of us who needed to get up to speed (and python isn’t exactly miles from php, even if some of my early attempts now look a bit cringeworthy).
So yeah, we’re all python now. Congrats to Tarek for doing the heavy lifting to make this happen and to Pete for a last-minute deep-network-voodoo save that Tarek talks about in his blog. In our datacenters, things are humming along nicely.
We’re working to get the python server to be as easy to install as possible for everyone who wants to host their own data. We’re discovering that on most systems, it’s fantastically easy, and for the others, come ask for help on #sync (irc.mozilla.org) and we’ll try to add your system to that list!