NOTE: This post describes my initial experience with Genesis. I’ve written a newer post which describes my thoughts on Genesis after using it on several projects throughout the course of 6 months.
I’ve spent around 4 hours of the last 24 in my life reevaluating my WordPress development workflow.
Previously, I had been developing all of my WordPress themes using the Underscores starter theme. I do not have any problems with it and I still believe it’s the greatest starter theme available for WordPress to date.
However I had been hearing an awful lot about the Genesis theme framework, and I was starting to wonder if I was missing something by not using it. Could I be developing my websites more quickly and efficiently using a theme framework like Genesis? Would I have more recyclable code that I can apply to new projects as they come up? Are there other benefits that I may not even know about?
So I bought a copy of Genesis ($60). The first thing I tried to do was to create a simple child theme using Genesis. I had never worked with a theme framework before, and it gave me a rude awakening into the world of how they’re constructed. With Genesis (as in other theme frameworks), you become reliant on framework-specific hooks in order to add/remove content blocks or customize your child theme. Rather than edit theme files directly, I am required to make modifications to my child theme’s functions.php to either add in or strip out the functionality that I desire. In many instances I found that in order to make a website look the way I wanted, I needed to remove some of the framework’s default functionality before I could even begin to add in the customizations of my own.
This isn’t a bad way to develop themes at all, and I know that many prefer it. But to me it added another layer of abstraction and complication between the code I’m writing and WordPress itself. Instead of just my own custom theme and the WordPress core files, there’s suddenly a middle-man of the Genesis framework which I need to pass through in order get stuff done. This wouldn’t be a problem if Genesis added some significant benefits to the themes that I create, but quite frankly after giving it a couple of hours of time I didn’t find anything truly worth noting.
The websites that I create are almost always based off of custom designs, and coding those designs into a WordPress theme makes more sense to me as a starter theme. I don’t see a true need or benefit for me to implement a framework like Genesis for the type of websites that I develop. Though I could become efficient at building Genesis-based child themes, I don’t think my development process would be inherently better (or any faster), and the end product that my clients use would not be improved in any perceivable way. And as for Genesis’s built in SEO capabilities, I personally prefer to use the most-excellent WordPress SEO plugin by Yoast.
The one item about Genesis that does appeal to me is the fact that it allows me to constantly keep the codebase of my theme updated. Because the Genesis framework will always be implemented using a child theme, I will be able to apply updates to my parent theme framework immediately as they become available (and Genesis is good at staying up to date with WordPress best-practices).
With Underscores, I do not have a parent theme. When I download a new instance of Underscores to use as a starter theme, I’m getting a snapshot of where Underscores development is at at that very moment. Once I start making my own customizations, it becomes exceptionally difficult to implement any changes that are made to the Underscores theme itself. This is the one drawback with Underscores (or any starter theme) that I have thought long and hard about. Fortunately, I found this blog post from the creators of Underscores which basically says not to worry about it. I trust their word on this because the developers of Underscores work for Automattic (the parent company of WordPress) and heavily contribute to the core files and general trajectory of WordPress itself.
Sure, there may be a time several years down the road in which I’ll need to update some of my old themes based off of Underscores to implement new WordPress features as they become available since my themes do not have an updatable codebase. But I do not think doing so will present a major challenge for me personally, and the benefit of having complete control over my code in the “here and now” trumps the “what if” that may not even happen down the road.
I did some additional research and found an awesome WP Watercooler video debating the merits between using a theme framework and a starter theme, and also a presentation on Underscores from WordCamp LA 2013 by Steve Zehngut. While there is obviously much room for debate, these discussions and presentations highlight the benefits of using Underscores that is keeping me sold on it for the time being.
One cool tip I picked up was to create my own custom plugin which includes all of the code that is normally added to the functions.php file of my new copy of Underscores. Not only will it make it easier to switch themes or redevelop the website in the future, but it will also speed up the initial development time (once I actually get the plugin created, that is!).
Perhaps I need to give Genesis some more time to grow on me, but for the time being I’m going to stick with Underscores.
If you have any questions or you feel differently, please let me know in the comments below.
Alicia says
Hi Evan. Just wanted to say that this post was really helpful! I found it through a google search on genesis vs. underscores. I have the same questions and development cycle as you, and perhaps you’ve saved me the time of investigating genesis, at least for now!
Andrei barbuta says
Thank you for the article it was really helpful. For couple of months I was really debating using Genesis but i found it a bit hard to understand and the biggest issue I had was with the fact i couldn’t use Foundation or Bootstrap to have a complete control of the layout. It my be possible but I didn’t find any tutorial on how to do this.
Thank you again. For now I’ll use _underscores.
Mark says
Thanks Evan, I’ve just spent half a day or so looking into both Genesis and Thesis as frameworks for as a base for my WordPress development… I’ve come to the same conclusion as you. For experienced developers these frameworks offer more complexity than benefit! Really helpful to know that I’m not alone in thinking this way. Never used underscore before so will definitely check it out too.
Steve says
Thanks for this article. I’m curious, when you said:
“With Underscores, I do not have a parent theme. When I download a new instance of Underscores to use as a starter theme, Iām getting a snapshot of where Underscores development is at at that very moment. Once I start making my own customizations, it becomes exceptionally difficult to implement any changes that are made to the Underscores theme itself. This is the one drawback with Underscores (or any starter theme) that I have thought long and hard about. ”
Why don’t you just use Underscores as a parent theme and create a child theme as you would with Genesis?
evan says
Hi Steve.
Thanks for taking the time to comment. As for your question… there a two reasons why I do not use Underscores as a parent theme:
1.) The developers of Underscores state on the theme’s homepage: “I’m a theme meant for hacking so don’t use me as a Parent Theme. Instead try turning me into the next, most awesome, WordPress theme out there. That’s what I’m here for.” (See http://underscores.me/)
2.) For me it really just comes down to personal preference. When I can, I prefer not to use a child theme. When I can avoid a child theme, I eliminate a lot of CSS inheritance issues that I often wind up fighting through, and the whole process just feels cleaner and faster to me. But again, that’s just personal preference.
raulvelasco says
With this post and this answer, I don’t need anything else. Underscores, there we go! š
Toby says
Thank you for a very well written and balanced post. I’m currently trying to understand what all the fuzz is about and the only reasonable conclusion is “good marketing”. Genesis is now so well known that even many end users think that their theme will be “better” if it’s based on that framework. There are like a zillion “reviews” and “comparisons” out there that recommend using Genesis – and they are all affiliates, too. My guess is that an experienced developer would be better of with _s and I will soon be putting that theory to the test. I have previous experience with Thesis so it will be a nice comparison. With Thesis most of the work is in overriding “hooks” and even replacing code which acutally makes for quite a messy solution with divided responsibilty for functionality. I’m guessing Genesis is the same. Thanks again.
Evan Scheingross says
Hey Toby,
Thanks for the kind words on my post! Though I do not have any experience with Thesis, what you mention about overriding “hooks” is pretty much exactly what I have experienced with Genesis.
It appears you’ve also read my more recent post which describes my evolving thoughts on Genesis as I’ve had a chance to spend more time with it, but the Cliff Notes version would be: Genesis is good for sites that don’t need a crazy amount of customization, but for sites that do I am sticking with _s… at least for the time being.
Methew says
Nice post! Thanks for sharing this cool post! Well, genesis is an excellent theme generator and has awesome featuring. Personally, I’m using TemplateToaster. This one is also great. Have an idea here, http://templatetoaster.com/
Dave says
Hi Evan,
I think both of those approaches to development are great. I like Genesis and tend to use it, although I’ve used loads of themes and frameworks.
Just to clarify one thing about Genesis, you can definitely hack templates directly; you just copy them from the parent theme into a child theme. There are Genesis users who use that approach, but they are in the minority, I’d say. In fact, someone could do that until they got the hooks down pat.
When answering questions on the Genesis forum, now and then we get someone like you who uses Underscores, Twenty Twelve, etc. who is wondering what all the fuss is about. Unlike the knee-jerk fanboys, I try to give pro’s and con’s of each. 9 times out of 10 the template hacking enthusiast says they don’t like the hook learning curve and just prefer to see the templates “right there”.
And I will psychically guess what your next question will be: “if you’re just hacking templates in Genesis anyway, why buy it?” Good point. I do like the hooks, which are easy to figure out – there’s even a plugin that will make them obvious while you’re logged into admin, for instance. So my child themes are very tight, just consisting of style.css and a small functions file or two. Once you know the hooks, doing that makes banging out custom themes very fast.
But it is also tempting to have all your theming in one place instead of parent and child, which is pretty much the Underscores approach, I gather. Like you, I also use a plugin for all my favorite WP functions, so I can carry them to any theme.
Looking over a period of years, now that Genesis is HTML5, the updates are coming out very sporadically. So maybe there’s less advantage in always using it. Whereas Underscores, if I’m not mistaken, is constantly being updated by super coders. So as long as they handle so many contributors smoothly, there’s a possible advantage for them!
Thanks, Dave
Jyoti Chauhan says
Hi Evan,
I love Genesis themes, I am using Genesis from two years, I never faced a single issue. There are lots of feature which make Genesis is better than other like page loading time, simple and well optimized etc.
This is really helpful article for newbies. Thanks to take time and share this stuff with us.
Thanks
Jyoti
Maika says
Thanks Evan, Nice post.
Santanu says
I am using Genesis Framework for last few years and found this as one of the best WP themes. Although I have changed my site’s theme couple of times, but now back to genesis again. Anyway thanks for sharing this comparison.
Zariyai Tari says
I understand to read this post, that is excellent post. This is helpful for me. Thank you so much for this post.
Loukmane ABOUDOU says
Thank you so much for this post Evan. It is really helpful. I wanted to start custom a wordpress theme and I learnt that I need a framework to go fast. Then I found this post.
Alex says
The content which was shared by you is really informative and useful, I was really looking like these suggestions. Thanks for sharing the valuable information.
Buzut says
I agree 100% with you. Frameworks aren’t made for development from scratch in my opinion. I was also comparing the two major starter themes out there: Sage & Underscores. And I ended up a bit frustrated.
On one hand, sage is built around a whole ecosystem, comes with a templating engine and a lot of tools that need to be learnt, and the other hand, _s is almost too simple.
I mean, I’m a JS developer, I don’t want to get involved with Composer nor want to spend time learning Blade template syntax. Yet, I want to take advantage of modern tooling. Especially frontend related.
I want to use ES6, Less or Sass and ship compiled and minified code to the end users. That’s why I created a blank theme of my own.
It’s almost as simple as _s, but it includes npm scripts, it allows the use of npm modules, compiles and ships ES module, as well classic script for legacy browsers.
In addition to that, it minifies and pre-compress (gzip, brotli) the JS and CSS assets. To me that’s what quality means.
It’s called Steroids, is BSD licenced and is waiting for you on Github. https://github.com/Buzut/steroids
Ranjeet Sharma says
Hi,
Great stuff buddy.
I have read many reviews here I got very useful information. This is a very useful article for online review readers. Keep it up such a nice posting like this.
Thank You.
Ankita says
Hi!!
Love your post. It’s really amazing & helpful too. I was very confuse between Underscores & Genesis by sharing your amazing thoughts on this you solved our problem. Keep sharing
Thank You & Regards
Ankita
Fort McMurray Jobs says
Thank you so much for this post Evan. It is really helpful. I wanted to start custom a wordpress theme and I learnt that I need a framework to go fast. Then I found this post. keep it up
Robbi says
Thanks so much for this post and the replies to some of the comments – it has been very helpful. I was getting exhausted with repeatedly stripping CSS from Underscores when starting new projects, but better the devil you know! I almost never use the Underscores menu, so need to remove that and the relevant JS/CSS. I wish that when it comes to silly things like basic colours, Underscores would move to root variables instead of expressing the HEX value.
It is a great starter theme though and kudos to the team for developing it (and keeping it free). I love it, but woke up on the wrong side of the bed this morning :’D