Stephen Carnham has been a good friend for many years now. I first met him when a few of us down here in San Diego were wanting to start Advanced WordPress. Having come from a long and extensive career in Software Engineering, he helped bring a new level of code understanding and complexity to an already advanced bunch of guys.
Stephen first started DesktopServer out of his home after many years in the WordPress world. His company ServerPress is not only expanding to three-plus, but is seriously disrupting local WordPress development across the board, and simplifying the lives of many in the process.
There have already been a bunch of really great articles and tutorials about DesktopServer, but I figured since I already know the guy I would just sit him down for an interview to talk about the past, present, and future of both his product and company.
Also, I couldn’t miss the opportunity to ask some of the more technical questions that I, personally, would love to know—and that I know many of you would find interesting as well.
So here goes…
Me: When did you first get into WordPress and why?
I got started in WordPress in 2005. (This was my second exposure to OSS development; my first was releasing JSRS for Perl, the precursor to AJAX in 2000). A client had approached me that needed a website to maintain posts for financial reports, and to keep a user list with various access rights. WordPress fit the requirement nicely, and I’ve been hooked ever since.
That’s cool; I started with Perl as well. Sounds a lot like my own story of getting into WordPress in 2009 when a client asked for me to do something about his site while I was working on his local servers.
When did you first start coming up with the idea of desktop server? What was your inspiration for building it?
After the success of delivering a solution based on WordPress and doing my own personal blog, I decided to venture into contracting more and more WordPress based gigs. This meant a lot of trial and error testing WordPress configurations, and OSS code. I needed a faster way to spin up sites, replicate and test locally. DesktopServer started as an internal project of various scripts, but caught the eye of associates that were in the same boat. Based on feedback after attending local WordPress meetups, I decided to code a cross platform solution and released the first version in October of 2011.
That’s very cool; I remember when we first met a few years back and you mentioned Desktop Server to me over chat—at the time you were still putting the finishing touches on it. How long did the project take you to complete and are there any particular things you wished you’d focused more on early in the development stage?
First, I wish I had read up on the various OSS licenses and embraced them sooner. My ignorance in that arena inhibited how I went about it. At first, I wrote code designed to use a local company’s PHP and Apache emulation layer written entirely in Java. In some ways it was faster and actually worked quite well.
But I had grossly underestimated how fast the OSS community can evolve. I spent too much time tracking down compatibility issues before finally reaching the conclusion that embracing and extending OSS was the right thing to do. It brought a level of de facto standards and allowed DesktopServer to behave consistently, and more in line with real hosts.
Now DesktopServer doesn’t just run WordPress, the next version is built on top of WordPress. While it’s probably not the first hosting control panel built using WordPress, it might be the first localhost one. This means it’ll even be more cross-platform (finally including Linux) and it can be extended and updated just like WordPress itself.
Very interesting. So I originally remember DesktopServer being somewhat of a fork of XAMPP. You’re now saying that you’ve done a complete rewrite? Are you using any external tools like WP-CLI to help simplify the site builds and configuration stuff in the command line behind the scenes or is your entire system now custom from scratch?
DesktopServer is built on XAMPP, before it was released to the public it was based on a proprietary server. While the next version is still based on XAMPP, we’re hoping to make it more server agnostic. When config files are written, they throw new WP actions and filters. This could allow all sorts of expansion.
The bootstrap is now done in nodejs, WP-CLI is also included to drive many of the common operations with a few bits and pieces still running native, platform specific code. We’ve found a sweet spot to balance scripts and speed.
If I were to do it all over again, I would have written the GUI front end as a web app. But nodewebkit didn’t exist at the time and the speed of native code was nice. Our next iteration is going to be a win-win. Because the UI is actually WordPress.
Node-webkit is our new UI. It looks just like the our current DesktopServer. Only instead of banging my head against the wall trying to figure out how to add a new GUI component, it’s just HTML markup driven by WP itself.
Very nice. Obviously you probably know what my next question is going to be… Seeing as you have an out-of-the-box deployable utility once you have Linux support, have you guys given any thought to using this same build to enter the production server business, say competing with ISPConfig or CPanel? What about performance, have you seen an uptake or downward progression with the new rebuild?
There is slight hit. Because the UI is no longer “native code,” there is a slight lag at startup. We’ve augmented that by making it an optional, in-memory daemon that the user can access from their system tray (windows) or menulet (mac). Ubuntu’s Unity interface doesn’t behave like Gnome but we’re looking at options for that.
The control panel hosting provider is a different kind of animal. It’s for *runtime*, mission critical, a.k.a. real hosting. Our idea is the polar opposite. If anything, we see that the WordPress developer community is completely missing what I call the “design time paradigm.” There are boatloads of developer plugins that are neat, and help devs create sites. But in reality such plugins really shouldn’t exist on at *runtime*. *Design time* is our main focus and plugins for DesktopServer is where we’ve headed.
For instance, you see a lot of cool plugins that help you generate CPT, or theme styles or perform data transformations. Many of them result in extra hits to MySQL. The benefits are flexibility but the runtime code is costly. As a localhost, we don’t have the security constraint and can actually generate code for the developer—such as stylesheets, frameworks, etc. Proprietary control panels may make theme customizations easy but aren’t as lean as a theme from scratch. We’re going to change that to have the best of both worlds.
It sounds like your focus is more on open standards now and making sure that the project as a whole can grow and move forward with a much smaller code foot print on your end. On the license front you mentioned that you’ll be using many sources, how do you handle bundling so many possible licenses such as GPL or others into your development process?
I know you’re a big open source license defender so I’d just like to hear your thoughts on implementing it into your own software…
Well, for starters we can only use GPL compatible licenses. Some old school developers misunderstand and feel that’s disruptive, but for applications such as ours it’s essential. It’s a given. A few of our new features are going to be service based.
Not because we need to preserve a revenue model (and we do), but because they actually need to be services by nature. The value of services, whether by providing trusted updates, data, or by acting as a staging proxy shouldn’t be underestimated. The internet is all about services and OSS fits into that beautifully.
So can I understand by your last comment on services that ServerPress will also be providing the deployment and or backup services (like ManageWP and others) associated with pulling stuff off and putting stuff up on servers?
That does seem like it just goes hand in hand with having and maintaining a local development environment that matches a production one, or in setting up a development for a new client that just has a production site and has been cowboy coding.
Can’t comment about that quite yet. I’ll go as far as to say that the services are unique. I’ll talk more about the “design time paradigm needs” in the coming new year. I can say that our current features will not overlap Infinite, ManageWP, or similar control panels. Also, their focus is really for runtime management and in my opinion, don’t address design time needs at all.
Got it. You’re filling what has been a very neglected niche in the WordPress space in a way that really does save people time and energy, as a Linux user who awaits, credit card in hand, for the next release, any word on when we can expect to start throwing money at you for the new version?
We really hoped to have things wrapped up before the end of the year but it’s looking more like a New Year celebration.
Okay, so, last question I promise, after the next release comes out, what do you see as the future of ServerPress? Where do you see your company going and seeing as WordPress development is the problem you’re trying to solve, where do you see WordPress development headed?
Our goal is to make WordPress development easier. That means automation, saving time, and providing more services to our users. Right now, DesktopServer’s tagline is “Design, Develop and Deploy.” We know this process is their bread and butter. And we want to make it as easy as possible. In the very new future it’ll be about “Create, Connect, and Collaborate” to help devs tackle bigger goals with more grace and refinement one step at a time.
Very cool brother, thanks for answering some of the more technical questions. And as I mentioned before, I stand credit card in hand waiting for the Linux release so I can finally do away with my silly bash scripts. Any last words?
I think that’s it, but more surprises are still to come.
If you’re interested in learning more about DesktopServer, visit ServerPress.com and sign up today, or if you’re a Linux developer like myself, you may have to wait until after New Years to sign up but it will be worth it…
Self & School taught C++, Java, PHP, Perl and Ruby Open Source Developer working as a Software Engineer for SPAWAR Research (G2 Software Systems) with a BSCS degree. Started using and developing on WordPress in 2009 and started the AdvancedWP.org community in 2011 which now has over 1,400 members world wide across 3 social networks. Has spoken at over half a dozen or more WordCamps on a range of advanced topics. Message him on Twitter @bastosmichael.