Tom J Nowell published a great post today on theme composition vs frameworks. He points out a problem with theme frameworks: what you need or want to do doesn’t always fit the way the framework is laid out.
The problem here is that what you want to build doesn’t always fit the foundations provided. You have to kludge your theme to fit into the frameworks way of doing things, and make do with the trade-offs and design decisions that the framework made, trade-offs that were made for the generic case, not yours.
Tom then explores the concept of instead picking and choosing various packages and libraries, rather than being tied down to one specific theme framework.
The alternative, is composition. Instead of building on top of something, take parts that already exist, and assemble them lego style. This way you write the glue that binds them together, rather than creating pieces to fit into predefined slots, and you can assemble them however you like.
I’m a pretty heavy user of theme frameworks, and I strongly identify with the pains that Tom presents here. There have been many projects where I’ve wanted to just use certain parts of the framework, but not be stuck with the rest of it.
I’m intrigued by Tom’s post and would love to read more on this concept. Are any of you using the methods he outlines here?
Thanks for bringing attention to this post, Brian. I would be interested to know if there are any modular theme frameworks out there. I know you can always take a framework apart, but it would be cool if there was one that was designed specifically to be modular so that the pieces come apart more readily. Maybe there is one like that and I don’t know about it?
Actually, I published this one ;-).
I don’t know of a framework that’s designed to be modular, but that is certainly an interesting concept. I’m hoping more discussion around this concept will expose projects that are crafted with these principles in mind. If you learn of any, please share!
LOL ooops sorry Travis!… I know I’ve been called Jeff on a few occasions. 😉
Hybrid core is one option. It’s very modular.
I think that it’s the best theme framawork for wp, I believe lots of theme devs agree with me 🙂
As David said, Hybrid Core is extremely modular. Many of its parts are self-contained scripts. The problem right now is that only a few of them are separate from the framework itself. So, you still have to download the entire framework to get them. If/when I’m able to separate all the parts into their own repositories, it’d be a lot easier just getting those individual parts into your theme project.
In terms of bloat, I like the current system because you can simply load the modules that you want. There’s no bloat on page load. The bloat would be having the unused files within your theme package. Some folks don’t like that, so I’m hoping one day that we’ll be able to allow devs to go either route.
It’s a great point, but then if you are going for a more modular setup and you’re piling in a bunch of libraries you still end up with a lot of bloat regardless. Nowadays it seems every theme starts with Twitter bootstrap or Foundation and then I start to wonder if it’s just there as a crutch. These frameworks really start to shape the end result and that’s a shame. It’s funny you can kind of tell when a site is using Bootstrap, much like you could tell Artisteer themes, or some of the more popular theme frameworks in the past.
What I do like about mixins that preprocessors utilize is that you can have a bunch of common functionality that you can load into your project with precision, but the stuff that you don’t use doesn’t need to make it in the compiled css. I think that kind of modular process is pretty elegant.
I agree with your thinking that any use of pre-prepared libraries or packages is going to introduce some kind of bloat; it’s definitely a matter of tradeoffs.
I do think that, to some extent, there’s confirmation bias involved in the (commonly held) idea that you can tell when a site uses Bootstrap/Foundation/etc. The ones that do use Bootstrap et al. and aren’t “obvious” aren’t, well, obvious :-).
@Travis
Yes it is true that confirmation bias comes in to play there. But the fact that there are sites that really look unique/original doesn’t discount the fact that there a thousands of sites out there that have this similar looking pattern to them, so it becomes apparent if you are watching the space. The conclusion that you can draw is that a lot of designers/developers are using a particular framework and consequently are having the tool they picked shape their work.