tl,dr version
Genesis is a lean, mean, flexible and powerful framework for building WordPress websites – once you’ve mastered it – and unfortunately that takes a lot of time. However the abundance of elegant Genesis child themes available with a codebase that can be trusted gives you a great head start on new projects.
Slightly more long-winded version
About half a year ago I posted some of my thoughts on working with Genesis. Though my initial conclusion was to avoid using it, I couldn’t shake the feeling that I was doing it wrong, or at least not doing it the way “smart” people do. Many of the WordPress developers that I trust and admire are Genesis advocates, so if they’re passionate ambassadors of the framework I figured there must be something to it that I was missing.
So since that time I’ve built 5 websites utilizing Genesis, including my very own site which was recently refreshed. And let me tell you.
It wasn’t easy.
Especially at first, and even now it’s still not second nature. Coming from a background of working with starter themes like Underscores (_s) or Toolbox back in the day, I was used to editing my theme files directly and writing my code within the exact template file in which I wanted it to run. I’m not saying this is the “right” way or the “best” way to do things. In truth, it’s probably not, but that’s what I was used to and that’s what I was fast at.
Genesis was a rude awakening into the world of action hooks, filters, and writing custom functions. As someone approaching this from a front-end development perspective, it threw my brain for a bit of a loop. But I’m slowly getting over it and learning my way around all of the nooks and crannies of the Genesis framework.
It’s frustrating at times though. Simple edits like stripping out the author link from posts or adding featured thumbnails to the top of my post permalink pages required Google searches, writing code to my functions.php file, and a certain amount of trial and error. Things like this were trivial to me when I was building up my own themes from scratch using Underscores.
But I’m starting to see the advantages.
When I’m working with Genesis I’m finding myself spending a lot less time writing custom CSS, and a lot more time figuring out how to just make things “work.” I can see now that once I get over the hump I might actually be faster at developing themes with Genesis.
Probably the biggest advantage that I get straight out of the gate is the plethora of well-coded themes available that can be used as a project starting point.
In the past I’ve always steered my clients away from using a pre-developed theme, unless it was approved and listed in the WordPress theme directory. I’ve found that working with bloated, everything-but-the-kitchen-sink themes to be more of a burden and a liability than a time-saver. I never recommend those kind of themes to my clients.
But I know that the codebase of Genesis is solid. I respect the developers that put it together and I have personally confirmed that the child themes offered on StudioPress are top-notch (at least the 3 or 4 that I have worked with).
As a result I’m trying a new approach to some of my projects. Where applicable, I will choose a Genesis child theme that fits best with the wireframe of the project, and use it as a starting point for further modifications. This has worked out well for me on a number of cases.
However I’ve also had a number of projects in which I knew having complete control of every single line of code was going to be important, and for those I’ve opted to stick with Underscores. Perhaps that may change in the future, but it hasn’t just yet.
So in the end, Genesis isn’t a silver bullet to a quicker workflow, but I do believe it has earned its place in my toolbox. I will keep you updated with my evolving thoughts as I work with it more over the next several months. That alone should say something – that I plan to work with it more.
If you have any thoughts or comments on the issue I’d love to hear them!
Toby says
Ok, I just commented on your previous post on this and I guess I should’ve read this one first, lol. A question: what about performance? Does your code add another layer between WordPress and the browser or do you simply modify and/or replace the Genesis code when developing a new theme? When Genesis pushes an update, how do you handle testing your child theme – I am guessing your users can update the framework on their own?
Evan Scheingross says
Every Genesis site I create uses an un-touched version of Genesis as the parent theme. I NEVER make any modifications to the parent theme, which makes it easy to apply updates when a new version of Genesis comes out.
As far as testing is concerned, right now I’m just making a backup of all files and then applying the updates on the live web server. If I notice some kind of conflict, I can roll back to the previous version of Genesis and then port the site over to my localhost for further troubleshooting. Perhaps that’s putting too much trust in the Genesis developers, but one of the reasons I use Genesis is because of my trust in their talented staff to not screw up things like backwards compatibility.
In regards to my code adding “another layer” between WordPress and the browser… I guess that’s kind of debatable. To me that “other layer” would be the child theme itself, which is going to have a lot of functionality that customizes hooks, filters, etc… and alters the way Genesis works.
Whether or not the combination of Genesis plus a child theme affects performance and slows down the website I couldn’t say definitively, though I’m inclined to believe that if it does, it’s so little that it isn’t worth worrying about.
Personally, working with a single theme feels more natural for me than working with a parent/child theme. So for highly customized sites I’m going to be steering clear of Genesis so that way I don’t have to spend hours fighting/overriding the Genesis defaults.
Toby says
Thanks for the thorough reply! I’ll be waiting for the sequel “The Final and Conclusive Verdict on WordPress Genesis Revealed”. I’ll have a closer look at Genesis, too, while working with _s. Personal experience is what matters in the end – unfortunately it’s a lot of work getting it :).
Gregg says
This was pretty good. If you look at this article you can also see how vital security truly is.
Luis says
Im currently considering the opposite move. I’ve started a few months ago and picked Genesis as my starting framework. Im now considering using Underscores just for easing the integration of Timber into my workflow. I do love Genesis, and like you im learning that it has a long learning curve.
Unsure of what my decision will be at the end, but at this point I believe it’s important to know the available workflows.
Evan Scheingross says
Thanks for sharing Luis. It’s crazy how many frameworks exist out there! I’ve never even heard of Timber until your post. I’ll have to check it out.
To me, the decision ultimately comes down to two main criteria: what’s best for me, and what’s best for the future of the website.
If I was working with a team, another factor to consider would be “what’s best for the rest of the team,” but luckily I don’t have to consider that one very often in my work.
Dreb Bits says
Just in time that I’m considering the two themes for an upcoming project and I really enjoyed your process on weighing them. Do you have a follow up thoughts on this after another several months of exploring the Genesis Framework? I would like to point out one disadvantage of framework (or at least for most frameworks), there would be a bunch of features and scripts that are loaded but unused in the site. Do you think Genesis is one of those bloated frameworks?
Evan Scheingross says
Hey thanks for reading. I’ll try to work on another blog post on the subject soon.
As for Genesis being a “bloated” framework, I personally do not see much fat on it at all. That’s one of the reasons why I like it. I don’t have much experience with other theme frameworks as a point of reference, but when compared to other “everything but the kitchen sink” themes out there that have become popular it’s practically anorexic.
Erwin Schober says
Haha, I made pretty much the same experience. The Genesis learning process definitely takes time especially if you’re not that experienced with hooks and filters. Also what really pissed me off was that there’s no solid online documentation available. Having to collect your resources over the entire web is not what I would call “well documented”. But now that I’ve been working with Genesis for a year or so, I’m starting to love it more and more.. However, thanks for your article!
Lauren says
Evan: Loved both articles and can definitely relate to all you have written. Glad to hear I’m not alone!
Evan and Erwin: Also noticing that tutorials and documentation for Genesis can be a little tough to find. Any you recommend??
Evan Scheingross says
For genesis documentation, check out:
http://www.carriedils.com/category/genesis-framework/
The StuioPress website in general, and also http://www.studiopress.com/resources/
https://sridharkatakam.com/ (Not all content is free, but a ton of great info on there)
But mostly when I need to do something with Genesis I just Google it. That’s kind of the good thing and bad thing about Genesis if you ask me. There’s a lot of good information out there since so many people are using it, but often times it still takes me longer to develop something customized within the Genesis framework than it would have taken me to do it with Underscores because you need to do it the “Genesis way.”
Sunil Williams says
Hi Evan.
You wrote this article in 2014.
I’d love to know where you are at presently in terms of how you work with Genesis.
I’m particularly interested in your workflow when you start building.
What have you learnt in that time?
Thanks.
Evan Scheingross says
Hi Sunil thanks for reading! I think you offer up a great idea for a future post. It’s about time to give everyone an update as to where I stand with Genesis. I will create a full write-up as soon as I have the availability to do so.
But in a nutshell, I still use Genesis as my go-to for most of the websites that I develop these days. There are things I don’t love about it, and I wouldn’t recommend it for every project, but it’s a rock solid framework that can be quite handy once you learn it.
Sunbird says
I second the request for Genesis follow-up post. 🙂 Thanks.
Greg says
Hey man, thanks for this, I’ve been trying to find a developer’s perspective on Genesis for days. I’ve actually already purchased it but I’m having second thoughts. I can’t seem to figure out what it actually adds, if anything, that I would have difficulty putting in and maintaining myself. Are there some fancy functions it includes that I should be including in my sites? What features does it add that have nothing to do with the front end? I rarely do typical blog-layout sites anyway, so would it make life way harder? These are all things I’ve been trying to figure out but perhaps I’ll just have to try it. I just hate to spend all that time bothering to learn it if it’s just going to turn into a game of “How do I force this design into the Genesis framework?”
Do you experience that at all? Do you think that creating a personal starter child theme with everything unhooked and only the bare minimum CSS would be the best way to go when working with Genesis? Would that speed up the process for sites that are more unique and require more design freedom? Are there certain Genesis features that you really love besides the pre-written layout coding?
Thanks for the post!
Evan Scheingross says
Hi Greg. Thanks for reading and sorry for the belated response.
I’ve been working with Genesis for over 3 years now and I still run into the “how do I force this design into Genesis” problem on occasion.
Like everything on the web, working with Genesis is a compromise. On some projects the head start that the framework gives me makes it totally worth it, but on others having the freedom to start from scratch (using Underscores) makes things easier and eliminates headaches in the long run.
I’ve created my own Genesis child theme that contains a lot of pre-written code and functions that I find useful. That helps to speed things up a bit and it does provide a good degree of that “design freedom” that you’re looking for.
Unfortunately, I don’t think you’re going to know if Genesis is right for you unless you put in the time to try it out and kick the tires.
The reasons that I personally keep coming back to Genesis are:
* Secure, rock solid code base that’s future-proof and flexible.
* Lots of different child themes to choose from and customize, all while only having to be familiar with one single parent theme framework.
* Lots of good plugins built exclusively for Genesis that I often take advantage of
* It has a large community of users so most answers are just a Google search away (note: I said *most*)
Hope that helps some.
Come back here and share your thoughts with us after you’ve had a chance to try it out. I’m interested to hear your opinion.