Mitchell Kimbrough, better known by his company’s name Solspace, was one of the first EE developers on the scene. We asked him questions regarding his current add-ons and the release of ExpressionEngine 2.0 to determine what has come before, and what we can expect in the future.
1. How long ago did you start developing add-ons and what prompted you to? What drew you to ExpressionEngine vs. another option? If you could, recap Solspace’s release history, with some highlights of challenges with the EE builds at that time?
I began writing add-ons for EE back in early 2004, but I can’t prove it. The earliest evidence of an EE add-on is from the Rating module from early 2005. I remember that a client wanted rating capability on his website. It occurred to me that I could take the Comment module and use it as a base for a rating module.
I was drawn to EE because I was already committed to its predecessor pMachine Pro. I had used pMachine Pro as a CMS successfully on a few sites. I initially chose it because the code looked clean and crafted, though I didn’t know a thing about PHP or MySQL at the time. Choosing pM Pro and later EE was the critical business move I made that got word of mouth to spread. Few people in my area of the country were using a blogging tool as a CMS yet. I resisted EE initially because of how it used templates, but I quickly changed my mind when I saw how it could allow me to accept incoming clients with ever expanding needs.
The history of the early Solspace is really all about responding to client need. I saw a market for add-on software for EE every time a client asked if EE could do a certain thing that it could not in fact do. I just started saying yes to everything and figuring out how to build it later. Those were painful years; many floggings from Paul.
The most notable EE challenge in the early days in my view was the fact that you could not initially publish to a blog from a front-end page. That’s why I wrote Freeform. I needed to accept user submissions to a contact form. I wanted to have them submit to a blog, but there was no capability for that. So I saw the need and opportunity for a flexible form submission tool. I was sure that Freeform would be obsolete once the SAEF came about. I was so wrong. That’s one of my favorite lessons. I employ it to this day. I call it, “I don’t know!” I don’t really know what the market wants. Only the market knows. So I have to find a way to write software, release it and see if it floats. I’m almost always surprised by the market.
2. What challenges, when you initially approached development were slowly erased over time? Are any of those re-created with the new beta?
Legitimacy was one of the big challenges that was slowly erased over time in EE. When I first started I was one of a handful of developers using the tool seriously. It had to be a unique client who had the stomach to risk their project on a really cheap, practically free, CMS tool. EE was not legitimate in the old days; mainly because it was not reassuringly expensive.
As more people came online to use the tool, there at the same time seemed to be more clients coming online who were comfortable taking more of an open source type approach to web development. I don’t think EE really did anything in particular to remedy the legitimacy problem. We developers did. EE definitely supported us and improved its stability and security over time. Rick, Paul and Les were stable influences who created bedrock that a community could build and reach stability upon.
3. How do you approach building an add-on? What are you first-steps? How do you plan the development cycle?
When I build an add-on I first ask if I can get it out the door and into people’s hands on a timeline or for a price that is manageable. I try and follow the maxim that, “I don’t know.” I don’t know what’s going to get traction in the market. I try to choose projects that can get their wheels on the ground quickly in order to get market feedback.
My development cycle is almost wholly dependent on a representative of the market, usually a client, telling me what they need from a given add-on. The Friends module was developed in this way. A client needed to create a local version of Facebook on their site. Facebook Connect hadn’t been released yet, but they wanted that functionality; friends, groups, messaging, etc. I coded the module for them and pushed it to meet their needs.
When I was done with the first version of Friends I looked at all of the work and I looked at the end result and I was disappointed. It took so much time to get the thing running on a site I thought that people would eventually reject it. There was sufficient demand for it from the market that Kelsey and I decided to power through and finish it. We solved the problem of installation complexity by developing Code Packs. Code Packs are like a just-add-water starter kit for an add-on or mash-up of add-ons. You click a button and immediately have a fully functioning Friends site up and running.
We’ve all heard that necessity is the mother of invention. Well problems are opportunities in my view. The Friends / Code Packs combo is an example of that. It’s a good example of our development process. Find yourself faced with a challenge in EE. Turn that into an opportunity through some clever software solution. Develop it in a way that you can share it / sell it to others.
4. What aspiration do you have for EE2? What does CodeIgniter as a base do for you as a developer or aid you?
My aspiration for EE2 is that it be recognized as a development platform for web applications. For years Solspace has used EE less as a CMS and more as a web development platform. We can use it to create almost anything for a client. In my view, EE2 is a response to and validation of that fact. When I look at EE2 being built on CI, I think that EllisLab has acknowledged that its future is not in blogging, not in CMS’ing, but in serving as a platform for collaborative web developers. I embrace this and think it wise and prudent.
5. What is the biggest piece added to EE2 that helps you? What is the biggest piece missing from 2.0?
At this very moment I am not thinking a lot about what pieces have been added to EE2 versus what’s missing. If I was running EL I would have done exactly what they did. Once the decision was made to run EE on top of CI, I would have set the first goal as to simply port all of EE 1.x to EE 2.x. Get that new rascal stable and secure. THEN and only THEN, go full blast on building out the possibilities of the new platform.
6. Do you have any intention to use accessories with your add-on? If so, what for?
I will definitely make accessories available in Solspace add-ons. I think people will turn a lot of them off, but they should be made available. They’re easy to write and they are nice at-a-glance tools. I like that feature of EE2.
7. Any new things to look forward to in 2010? Can we expect more entries in the performance series?
We are almost done with the performance suite, which includes Template Morsels, Static Page Caching, Super Search and Preparse. It’s funny, the performance suite is essential to us and our clients, but when I see feedback on the add-ons that make it up, people are always asking for cool new features rather than faster performance. We’re either ahead of the curve with the performance issue or EE performs perfectly well for most people out there.
The performance suite makes the case for where I want Solspace to go. I want Solspace to be one of the pillars of the EE community. I want our products to be essential equipment for serious EE developers. If we can quietly become an essential part of your toolkit, if we can serve you as you serve your clients, I will be very pleased.
As for 2010 releases, we have some killer gear coming out. But to be frank, most of our time in the first part of the year will be spent converting our library to support EE2. We will continue to support EE1 for years to come by the way. We think it still has a nice long life left in it.
8. Overall, as an EE user what has pleased you and disappointed you most with the ExpressionEngine 2 beta?
The EE2 beta disappointed me with the lack of extension hooks. But I will be honest and blunt. It’s a relief. We were very busy. If the beta had come out and been completely ready to support all of our add-ons, we would have been hard pressed to convert quickly. There really is a lot of work to do. And by the way, I would have done what EL did with its beta release. I would have kept it as simple as possible and gradually built into releasing the full monty.
9. We are now looking at the EE2 public beta, what challenges are you facing in EE2’s current iteration with your released Solspace add-ons?
As above, some add-ons can’t even be touched yet. The necessary extension hooks do not exist in EE2. I think there are some architecture ideas still floating around EE2 that are being resolved and finalized. As you code and develop you encounter opportunities along the way. Sometimes a block of code, written differently, explodes the opportunities exponentially. I think that some of that is happening with EE2. We’re patient and have plenty to occupy us in the mean time.