Why another theme framework?

I’ve been getting a lot of questions about Essence. I’m going to try to do a series of posts answering the most common ones. I’m going to use the Genesis Framework by StudioPress as an example throughout. Please understand that I’m not picking on it, I’m using it as an example because I think it’s currently the best option out there.

There are several reasons for this, but I’d like to expand on two of them. First of all I don’t think anyone has quite got it right. Some of them, like Genesis, are quite good but still not right. They tend to put a ton of features into the theme, including many that I will never use, making it too big and complex. Essence follow the same 80/20 rule of thumb that WordPress does, meaning new functionality should be useful to 80% of users or it shouldn’t go in. Instead it should become a plugin. Essence will have a host of plugins, some developed along with the theme by the same people and some that are by existing plugin developers, which will add whatever functionality you want/need while keeping Essence itself compact, efficient, and easy to use.

However, the second is the most important. I do not think that it is in my best interest (or the best interest of any other developer) to rely too heavily on a product that is controlled by another company. The Genesis Framework will change based on what is most beneficial to StudioPress. Don’t get me wrong, the theme belongs to StudioPress so I think that’s as it should be, but what happens if what’s best for my company isn’t what’s best for theirs? What happens if StudioPress is some day ran by someone who’s not as community-minded as Brian Gardner? I was worried that this could happen last year when they merged into Copyblogger Media, LLC. It didn’t, but the fact remains that they could take the product in a direction that is beneficial to no one but them. Since Genesis is licensed under the GPL you could continue to use the code you already have, but you’ve lost the benefits of a regularly updating framework.

So what makes Essence different? Well, Essence will be guided by a team of lead developers much like WordPress. There will be no bottom line to answer for, and no one person complete control. My business relies on WordPress and that doesn’t worry me at all because WordPress isn’t a competitor and therefore there’s no conflict of interest. This is exactly how I want Essence to be positioned.

If you want to get involved, contact us.

This entry was posted in Essence and tagged . Bookmark the permalink.

11 thoughts on “Why another theme framework?

  1. All right, my first question is simple — where will the discussion take place? :) Will there be an Esssence forum (hopefully linked to the main blog) with a voting feature?

    I’m not familiar with any “paid” theme framework. Having evaluated a lot of the “free” theme frameworks, I settled on Carrington by Alex King. The major reason is that Carrington does one neat trick very well: you can add template files for different categories, authors, tags, and so forth. For complex sites this is far easier (even to maintain) than having complex code on the header to load the appropriate files, or, even worse, to have a lot of conditional code on each template file to check which category is current and spew out the appropriate HTML. While some things like sidebars and widgets that change depending on author/category/tag/language can be done with the wonderful Dynamic Widgets plugin, the Carrington framework pretty much allows everything to be completely changed simply by using separate files for each (e.g. even headers, footers, comment sections, and so forth). It also separates the many components of a WordPress site into more fine-grained detail, so you can avoid replicating a lot of code all over the place (if your page is rendered pretty much in the same way as your posts, then you just need to include the template file for the post — very simple!). Carrington is not perfect, though; there is still some code that needs to be replicated here and there, and it has some difficulties figuring out when it should use “excerpts” and when it should use the whole content, etc., but, in general, it’s a step in the right direction.

    This is the kind of thing I’d love to see in Essence as well, and would be glad to vote on it ;)

    On the other hand, Alex King is so busy with his billions fo projects that he hardly updates the Carrington framework — once in a year at most. For example, the template files for creating sidebars are not properly dealt with to allow for different sidebars per category; also, Alex King assumes that everybody just has one set of sidebars all in the same place. Modern themes have sidebars all over the place which needs to be included in different ways, and having just a single place for all of them is sometimes not possible (specially when the HTML for the theme is not very clean and very dependent on the order the div’s are loaded). There have been a few fixes around for this limitation, posted on their forums, but Alex hasn’t had time to review and incorporate them.

    So the second question. Will Essence be mostly “a theme” — in the sense of something upon which others can extend here and there — or “a framework”, providing a set of tools and templates which can be combined together to create a WordPress theme? After much tweaking of other people’s themes (which claimed to be “theme frameworks”), another reason for settling on Carrington was because it truly is a framework. There is a “core” set of functions (which can be updated separately) and a specific set of files representing components of a WordPress site. Theme developers assemble a complete theme by juggling all those pieces together. Of course, Alex King is aware that few people have the ability to do all that by scratch and so he provides a few themes using the framework as a starting point. This falls neatly in the 80/20 rule: 80% will be more than happy to use a ready-made theme and just add styling and a few tweaks, while 20% will require the full functionality of the framework.

    I’d really appreciate your thoughts about the overall principles behind Essence — beyond the suggested supported features (which are great and definitely a starting point!).

    • aaroncampbell says:

      I’m going to try to answer/respond to everything in your comment, so if I miss something make sure you point it out!

      Discussion will happen pretty regularly once we get a team in place to work on development. I’m not sure what all those methods will be (forums, IRC meetings, P2 blog, etc) but it will all be announced here on the main site.

      I too have used Carrington and actually have several projects that I work on regularly that use it as well. However, things like the ability to reuse code by loading a specific file is actually built into WordPress core. We have `get_template_part()` which does that very thing. If you used that INSTEAD of the Carrington functions your code would be more portable.

      Lastly, I definitely plan on making everything modular. I want the core of Essence to be lean, fast, and extensible. Then I want there to be plugins available to extend it to do whatever you want. I don’t even want these to be packaged with the theme (I want to keep the package size down), but I DO want them to be easily found/installed from a simple “recommended solutions” page (or something similar).

      • Thank you for your thorough reply! By mere coincidence, I was “forced” today to look up how to do different templates for post articles, as a reply to a request from a customer, and wanted to do it “officially”. So I read up about get_template_part() (which I was not aware of; there are hundreds, if not thousands, of neat little functions that I’m completely ignorant about!) and was replying by email when I remembered that Essence most definitely had “Formats” enabled. So I looked it up and recommended that the customer would use Essence for their needs (I don’t know if they’re using that recommendation, of course).

        You have, once more, given me ample reasons to give Essence a try for my next project (which I still don’t know what it might be, but could be my own blog, which definitely needs a redesign hehe).

        Thanks again.

  2. All right! Now that Essence 0.0.5 seems to have fixed some nasty CSS bugs I had with SharePress and some sliders/rotators, I think that I’m ready to try out a first “serious” project using Essence as a framework.

    The first thing I did was to take a look at the overall structure. It seems that a lot of support has been built-in for several plugins, and I’m assuming there is a list of “recommended” plugins, since you clearly favour a few, enough to make sure there is some support for them. Is that list published somewhere?

    The next thing is to figure out how to actually extend Essence on a specific project without messing up the “core” code. I’m assuming that (unlike other frameworks) the correct way to do it is to do a child theme; then I can just upgrade Essence by itself without messing up with the “core” functionality. Am I correct in assuming that’s the correct way? (I humbly admit I’m not very good with child themes, I tend to mess things seriously up that way :) )

    Then I suppose that we need a place somewhere to do some documentation. At the very least, a small graph explaining the modified loop (assuming it’s a modified one!) as used by Essence. For example, I see the very useful split of loop.php into loop-post, loop-page, loop-attachment and so forth.

    So, where do we start documenting Essence? :)

    • aaroncampbell says:

      Yes, I think the best approach is to create a child theme. The minimum code to do that is a theme directory with a style.css that has the following:

      /**
       * Theme Name:    Your Theme Name
       * Theme URI:     http ://essencetheme.com/?your-theme-url
       * Description:   Your Child Theme Description
       * Author:        Your Name
       * Author URI:    http ://essencetheme.com/?your-url
       * Template:      essence
       * Version:       0.0.1-your-version
       */
      

      edit: There shouldn’t be spaced int he URLs, but they’re getting turned into clickable links and then the source of the entire link is being displayed.

      You can then drop styles in that file and it will override or add to any styles in the theme.

      I have a project that I should be finishing soon that uses it (personal project). As soon as I do I’ll be writing a (probably very long) post that has all my code, etc.

      • Thanks :)

        Oh BTW… I know this might be asking too much, but… is there a good reason why Essence, being such a brand new theme (and hopefully having a long, long life ahead of it!), is still HTML4 and not HTML5?

        I was thinking of rewriting all the code into HTML5 (it’s a good exercise for me) and possibly having a forked project for that (assuming I’m able to do that on GitHub — I took years to “upgrade” to Subversion and now that I’ve finally mastered it, it seems everybody is moving to GitHub hehe), but there might be several good reasons not to do that. I guess the main reason is that the majority of plugins which inject HTML into themes will use HTML4 and this might break everything?

        • aaroncampbell says:

          First, forking a repo on GitHub is really easy (http://help.github.com/fork-a-repo/).

          As for HTML5, I’d love to move to HTML5 but we would need backwards compatibility for browsers that don’t fully support it. I want to support IE8+, the latest Chrome, and then probably one version back on Firefox, Safari, and Chrome.

          There ARE some HTML5.js files that should help (there’s one packaged with Essence already). If you convert Essence over to HTML5, I’d definitely work it into the official release.

  3. It’s been quite some time since I last take a look at Essence. With WP 3.4 around the corner and a lot of new goodies that themes are supposed to support, I wonder if Essence will get an upgrade?

    There is a new site I have to do for a non-profit organisation, and I’m feeling a bit lazy to use a way-too-complex theme/framework, mostly because I *already* have a non-WP-compliant HTML design. Complex frameworks tend to impose CSS class names and so forth. Essence is lightweight and to the best of my knowledge doesn’t impose specific styles… so I might give it a try (again).

Leave a Reply

Your email address will not be published. Required fields are marked *

Note: If you are replying to another commenter, click the "Reply to {NAME} ↵" button under their comment!