EECI 2010 speaker and prominent early member of the EE community, Mark Huot, was one of the first real extension contributors to the EE community. With the release of ExpressionEngine 2, we’ve invited Mark to answer some questions about the earlier days and what he’s looking forward to most.
1. How long ago did you start developing add-ons and what prompted you to? What drew you to ExpressionEngine vs. another option?
I started developing add-ons in 2006 out of necessity. We were facing a particularly aggressive timeline and our original CMS vendor pulled out part way through the definition. By this point our requirements were pretty much set (and signed for) so we needed a system that would be flexible enough to bend to our needs (custom fields were pretty much the primary selling point). We were fortunate enough to talk to Leslie on the phone and bounce some ideas off him before diving in. He put us in touch with Mitchell (of Solspace) and through that partnership I built my first extension (the Multi-select Drop-down) under Mitchell’s care.
2. What challenges, when you initially approached development were slowly erased over time? Are any of those re-created with the new beta?
I’m a “code” learner, not a “documentation” learner, so the biggest challenge for me was getting accustomed to the EE coding style and architecture. It’s not particularly complicated or unique, but it still took some time. Luckily with EE2 built on CodeIgniter, I can leverage (yea, I said leverage) my existing background with the framework to dive right in.
Beyond that, and contrary to my learning style, I’ve always wished for some better documentation around the “public” functions. EL has done some of them (here’s one), but never got to the Localization class.
3. How do you approach building an add-on? What are you first-steps? How do you plan the development cycle?
My first step is diving right in. I’ll write out as much of the code as I can without ever testing or loading it in a browser. I get a basic abstract class definition created, some sample methods and even some theoretical XHTML down in code. Then I go back and just make it work. It’s sloppy and bug ridden, but in a few minutes I can see, at face value, whether the idea has legs. If it does, I start over. I take what I like and drop what I don’t. This is when I get anal over line lengths, code wrapping and whitespace. But the key is that I’m not exploring any more. I have the idea down, I know the approach to take, all I’m doing is performance tuning and finessing.
4. What aspiration do you have for EE2? What does CodeIgniter as a base do for you as a developer or aid you?
Phew, a lot. When I was first getting started with EE I fell in love with the drop dead simple templating language. It was easy to learn and even easier to implement. Now, though, as my coding skills improve, and more importantly, my database skills, I find myself wishing I had more control over the templating language. So as a developer, I’m excited, and hopeful, to see CI views on the front-end (not just in the control panel).
[far too technical moment: I’m also hoping that EE2 optimizes some of it’s template meta work to the filesystem and out of the DB as it has been in the past]
5. What is the biggest piece added to EE2 that helps you? What is the biggest piece missing from 2.0?
The biggest addition I’m looking forward to is the structured development platform. Separating Modules out into models, views and controllers will streamline my development process and allow me to reuse a lot more of my code than I have in the past. I see a library of views cropping up that can be re-used as needed. For example a “list” view, an “options” view, a “summary” view, etc… Oh, that and a reusable “exp_weblog_titles” model .
The biggest piece missing may have been alluded to in my last answer, but from my very early peaks I haven’t seen font-end views implemented as I would have hoped. It seems that views are kept in the CP so it may take a little bit of work to get them truly working on the front-end as first class citizens.
6. Do you have any intention to use accessories with your add-on? If so, what for?
I do, and I hope others do as well. Accessories are great ways to provide your users with an omni present UI. Say you were building a file manager. Integrate an accessory with your file manager and suddenly your users can browse their files from anywhere. Give Accessories some time to mature and I think we’ll start to see all sorts of cross-talking accessories accessible from anywhere in the CP.
7. Overall, as an EE user what has pleased you and disappointed you most with the ExpressionEngine 2 beta?
Personally, I was very pleased with the beta. The support staff was reachable throughout and as far as I could tell, quite attentive to any testers needs.
8. Do you have any plans to build extensions now? A lot of your extensions are getting on the old side, and were developed for client work?
I do have plans to get back into add-on development. Probably slower than I did originally, since the support quickly outweighed the development though. I’ve got some interesting clients on the horizon with some interesting problems to solve. As you can see from my previous answers, I’m really looking forward to diving into EE2’s `views` and see what sort of awesomeness lurks in the dark corners.