In Defense of Theme Frameworks

At the risk of sounding dismissive, I have to admit that I roll my eyes most of the time I see people pronounce the inferiority of WordPress theme frameworks. I’ve been hearing this argument since before Genesis was even a conversation, much less an actual product.

But if I’m honest, I can see why some people don’t care for them, or denounce them by proxy for a particular segment of the WordPress community — “the users” — as being more, not less, difficult to use than a traditional theme.

I remember the first time I used a WordPress theme. This was before the days of documentation abundance. You couldn’t really just do a search for a question and expect there to be 100 answers available.

I was lost. I gave up. It took a year for me to try again.

Believe it or not, WordPress theming didn’t “click” with me until I cracked open one of Brian Gardner’s themes and looked at the code. Now he’s my boss!

I know better than most how incredibly intuitive a WordPress theme’s structure is. Header stuff in header.php. Footer stuff in footer.php. The stuff in between was in template files, named logically.

It all made sense. The PHP didn’t seem overwhelming because it blended with the HTML. It was natural, intentionally simple.

FWIW, even traditional themes have moved beyond this simple HTML + PHP structure. Even the default themes use filters, custom functions, etc. So, making the case against frameworks by referencing modern themes seems like a reach. But I digress …

So, Why Build a Framework?

If I loved traditional themes so much, what made me decide to build a framework?

At the time, I was building themes full time. Every new theme felt tedious, like I was doing the same work over and over.

I tried building a “starter theme”, but I would inevitably find things that could be improved, and though the starter theme (and future themes built from it) would get the benefit of the improvements, all previous themes will live in perpetuity with flaws.

That bothered me. I figured a good framework, appropriately abstracted, could reduce development time, resulting in more themes for users, and standardize an optimized markup structure. So I started building.

Soon after, Brian approached me and it turned out that we had similar goals, so I came to work for StudioPress.

Turns out, building themes on a framework isn’t such a bad idea. Hundreds of thousands millions of people now use Genesis. I think that speaks for itself.

Other Benefits

After building, and continuing to build a framework for over 3 years, we realized that the benefits started to add up.

1. Change the look, not the code

Users are able to change the look of their site, while leaving their code in place. Their markup doesn’t change. Switching between one Genesis child themes is almost entirely CSS and images. This eliminates a good bit of the up front effort associated with switching themes. Also, search engines like the consistency.

And because theme settings remain the same between themes built on a framework, you don’t have to configure things more than once. That’s a time saver.

2. Updates

Also, because framework customizations exist separate from the framework itself, we (the developers of the framework) can push updates to users and fix bugs, add features, and improve their site with a simple upgrade process … something we made even better with the 1-click upgrade system in Genesis (the first commercial theme to offer this functionality).

3. Community

But perhaps the biggest benefit of using a framework like Genesis is the amazing developer community that a consistent and actively managed project cultivates. I’ll come back to this in a second.

But Frameworks Suck, because …

There are some valid complaints about using frameworks. And in a vacuum, comparing a framework to a traditional theme, frameworks do seem more complicated.

HTML doesn’t live directly in the template files. Output is abstracted and hooked. I don’t know what a function is, and a filter is something I use to make coffee. THIS DOESN’T MAKE SENSE!

I think we’ve done a good job at mitigating these effects, though.

For starters, we’ve tried to bring some of that discoverability into our framework. For instance, we have a folder in Genesis called /structure/. In this folder, we have files like header.php and footer.php that contain the code that outputs HTML to those locations. I’ve had numerous people tell me how much that helps when transitioning from traditional themes to Genesis.

But remember when I mentioned that developer community above? The standardization and active development of a single codebase (the central concept of a theme framework) has a lovely side effect: people can figure things out, share them with others via blog posts, and the information is essentially valuable for ever.

And these tutorials accumulate and multiply.

So, while it may be a little harder to figure things out as a newbie DIY blogger just by looking at the theme code, there is a wealth of information and resources out there that will walk you through just about any question you have.

And that’s not even considering the OFFICIAL support you’ll receive if you purchase a reputable theme framework.

The Users

At the end of the day, it’s all about users. What do they like? What do they want? Obviously, developers can do it all, traditional themes or frameworks.

But beginners fall into two categories: the turn key blogger who just wants to get his theme installed, flip a couple of switches, and start blogging, and the person in the temporary state of needing to move past turn key but isn’t yet at the point where you can call them a developer.

For this person, it certainly seems like a traditional theme is more accessible.

But considering the starter choices they have in the abundance of child themes, the numerous resources from which they can find help and tutorials for common tasks, and the wealth of benefits offered by a framework, it seems like a small concession to give up the only real benefit a traditional theme offers.

Conclusion

So, who should use a framework? In my opinion, it’s the best choice for almost everyone. I know that’ll be a controversial statement, but I believe it.

At this point in time, rolling your own theme just doesn’t make a lot of sense. We’ve put literally thousands of hours into developing Genesis. Do you have time to give your self-rolled WordPress theme that kind of time?

And if you’re relying on a 3rd party for your theme, do they have the ability to deliver updates to your themes if they find a bug? Without a framework, this is nearly impossible to do.

In the end, I’m convinced the long term benefits significantly outweigh the temporary drawbacks of using a framework. My recommendation? I think you can figure that one out.

Comments

  1. says

    Theme Frameworks are not for everyone. There will be a bit of learning curve to understand all the action hooks and filters. Users should be interested in learning it and at the same time resources should be available for the same.

    But once they learn it, it will be damn easy to create and maintain child themes. There is another option for those who just dont want to touch the code – Using Plugins. But not all frameworks are fortunate enough like Genesis to have a supportive community with contributing developers.

    So it actually depends on the framework that we choose to work on ;)

    1. says

      Yes, it really depends :-)

      I’ve tried a lot of other frameworks, that come with marketing lingo and also some features. For example, one framework from a German developer team: it has some nice concepts but the end result is a failure, as it is not documented inline, has no good child themes available and no ecosystem or community. Yes, I’d find a few tutorials and some docs in my native language but in the end it would lock me in.

      Also, considering “_s” and Twenty something themes as frameworks, you also have to crack their logic and that huge number of files. This could be overwhelming. Those concepts work, and they work good. But it also has its learning curve and they are not for everyone :-)

  2. Amba Junior says

    I used to think Genesis was hard to use, and got confused a to how they work. Indeed filters were hard to crack, but with the Genesis Visual Hook Guide, I was able to see sense.

    And the community- basically that’s the glue that keeps me there.

    Thanks for the Great Initiative. Frameworks are indeed the way forward to shortening development time.

  3. says

    Thanks so much, Nathan, for this statement of clarification.

    Yes, as commented above, every single reason you laid out, is one of the reasons I use Genesis for all my projects since summer of 2010, and, why I develop so much plugins for it.

    Genesis ended my tiring and frustrating search for themes/frameworks that I could use on a daily basis for my job.

    All others failed. I wouldn’t use any Twenty something theme for personal or client project, not even with a child theme. It’s just too complicated and doesn’t make sense. And, as you pointed out, they are on itself like frameworks with complex logic, also hidden in filters & hooks. So bashing of Genesis from that perspective is really lame. This on a side note.

    Thanks again, Nathan!

  4. says

    Thank you Nathan for your clear explanation. I also a big believers than framework help us a lot in web development.

    I am a Genesis user for so many years.

    At the beginning it was a bit hard to understand but due to the strong support and big and kind community, I always find the way to make my blog look like I wanted.

    I was just a user, now with Genesis I am confidence to start my web design business. Thank you all for creating such clean, fast and secured framework.

    You are not just making a great WordPress framework, you are making our lives better.

  5. Dissatisfied Customer says

    You guys at StudioPress talk the talk but you sure don’t deliver. StudioPress hasn’t delivered anything new in 6 months.

    1. says

      LOL :)

      What is better, to release new products every week or to make your core product better, faster, more secure, more lightweight, easier to use and so on and on?

      Developing and improving quality products takes time. Lots of time. Just one single reason for not releasing stuff.

      Don’t forget to have look at what Genesis developers around the world, deliver on child themes, plugins etc.

      (to clarfiy: I do not work for StudioPress/Copyblogger)

    2. says

      There’s very obvious reason for that — Genesis 2.0. Since we knew the entire markup structure was going to change for themes moving forward, we didn’t want to release new themes that we knew we’d have to update right away.

      With that said, we have a slew of themes in the waiting of the release of Genesis 2.0, and are confident you won’t be dissatisfied.

  6. says

    You nailed it, Nathan. That’s a whole lot of reasoning why I abandoned single themes and went 100% Genesis almost TWO years ago.

    Sure, it’s a learning curve and bad devs and inexperienced users can still screw it up beyond comprehension, but it works, is robust, and streamlines my project cycle like nothing else I’ve done.

  7. says

    I’ve been building websites for 15 years, huge ones, tiny ones, all the major CMS systems, proprietary systems, and have probably used most of the WordPress frameworks as well as handcrafting WP themes.

    I love the Genesis Framework and have been using it for years. It was admittedly a slow start, but once I got it, I loved. Our work is almost exclusively custom child themes for Genesis, most fairly complex, and there’s never been anything I can’t do and efficiently do boot. Everything is so high quality, I have confidence in the team behind it, and it just keeps getting better. It isn’t a testament to anyone’s ego or a fly by night operation.

    Sometimes I think “should you use a framework” is the wrong question. The better one might be who are you and what are you trying to do? Are you a hobbyist, a dabbler, or a professional shop that want to output a quality product efficiently for your clients? I learned WP theming from scratch, and then tested starter themes and frameworks until I found a good fit.

    The resources and knowledge that have developed around Genesis are also outstanding, and the community are just great people.

  8. says

    Great post Nathan, thank you.

    Tried Genesis for the first time over a year ago. Even for a dev, there’s a learning curve. But there is with anything. Tried a couple other frameworks & theme houses. It’s Genesis for me. The support cinched it.

    From my early days in software development the value of reuse of a sound design and a well coded module has been driven home. Why reinvent the wheel?
    Like anything, there are +/-.

    The + win, it’s Genesis for me.
    Can’t wait for WP 3.6 & G 2.0

  9. says

    For me, the real fruit of Genesis and other well established frameworks is the community. It would be difficult to make a case for frameworks having a major technical edge over individual themes, but the support and active improvements made by the developer community brings a ton of value.

    Thanks, Nathan.

  10. says

    Great post with some valid points, Nathan. I’m a big fan of Genesis and tend to use it on client sites as often as possible, because of the forward compatibility.

    On the other hand, on personal projects I find it more fun get my hands dirty with the full set of code; usually starting with the Underscores started theme.

    I must say, though, that from project start-to-finish, Genesis saves me an enormous amount of time over a blank starter theme; which is a huge win by itself.

  11. says

    I have never used anything for a WordPress site other than Genesis; it just seems so intuitive to me. I love the selection of themes available; the ease of customizing, and the community; I’ve never considered using anything but Genesis.

  12. says

    Thank you for this, Nathan, so well put! So many reasons why I, like many others, work exclusively with Genesis. It took me a little bit to get to that point but once it clicks, you never want to look at another ThemeForest theme again. My efficiency and confidence in what I can offer my clients right now is through the roof and all thanks to Genesis, StudioPress and the awesome community we are so lucky to have.

  13. says

    Very well stated Nathan. When I started to learn WordPress, I used WooThemes Canvas and, I spent days and days fixing css issues with the child theme. Then when migrating to a different WooThemes theme, the process started all over again. It was a huge time waste.

    In disgust, I decided to find a framework that worked. After a month or so of research, I selected Genesis. I purchased the framework and a child theme. After installation the only glitches were in the responsive mobile area which were quickly corrected.

    The objective differences between WooThemes and Genesis were pronounced. After a few weeks with Genesis, I purchased the Pro package and never looked back.

    Now, I can change themes in a matter of minutes and, the process is pretty much the same each time I change child themes:

    a.) adjust the Widgets
    b.) adjust the Menu(s)
    c.) copy / paste my custom CSS and functions.php to the new child theme

    Done. No muss, no fuss.

    Thank you for a GREAT framework and, it’s a great time to be part of the Genesis community.

  14. says

    Hello There. I found your blog using msn. This is a really well
    written article. I will be sure to bookmark it
    and come back to read more of your useful info. Thanks for
    the post. I’ll definitely comeback.

  15. says

    I truly love your website.. Very nice colors & theme. Did you
    build this website yourself? Please reply back as I’m planning to create my own site and would love to know where you got this from or what the theme is named. Appreciate it!

  16. says

    I’m a Headway Themes fan, but I like the way you approach this argument. I definitely think frameworks are the future, and I even get just a little frustrated when people would rather go with turn-key themes. I want to shout “it’s about flexibility!” but it’s hard to put into objective words. Great post.