[Theme: Suffusion] Dangerous Architecture here
Firstly, I salute the theme author for putting a lot of time and effort into this: clearly, this is a guy who cares about his work. It’s a clean layout with well thought-out features.
However… let me be blunt: this theme should be removed from the WordPress repository. It is not a theme: it is a plugin. And this “theme” breaks every possible rule of sensible architecture imaginable. What is going on here is that the controller and model layers of the application have been forced into the view layer. This is a gross perversion of MVC with dire consequences. You can’t disable portions of it like you can disable plugins, and because it weaves itself into the core application with stuff like custom post-types, it becomes nearly impossible to disable the theme to change your site’s skin.
I could go on, but the point is that this theme does things that would not be allowed in any sensible software project: WordPress already plays far too loosely with architecture, but this theme is trouble, and I would strongly advise people to avoid using any theme that abuses the view layer in this way: it will eventually cause your site to collapse from the inside-out. User beware.
It is not a theme: it is a plugin.
No, it is a framework. It lets you enable / disable a lot of its functionality either through the back-end options or through plain non-use.
it weaves itself into the core application with stuff like custom post-types
The theme is quite old and it pre-dates the existence of several plugins. This is one functionality that was written before any plugin existed for it. Be that as it may, you are in no way tied to using this functionality – you could use a custom post types plugin and be perfectly happy with both coexisting.
it will eventually cause your site to collapse from the inside-out
With over 600,000 downloads until this point and a user base in several millions, you would think sites must be collapsing willy-nilly.
Every time you pick a theme (even TwentyEleven) you make a conscious decision to accept theme choices and you even start tailoring your content around it. E.g. What happens if your theme offers special handling for a Gallery post format? My current theme might show me 4 thumbnails on the front page and might rely on the “more” tag to display content in this manner. When you change themes the new theme might not deal with galleries in this manner, so you might have to edit your content.
A theme you pick might offer specific templates to make things work, or widgets or shortcodes or SEO support. Every time you use any such feature, you make a decision to add a barrier to your migration process. Any time you use an action hook or filter hook defined by a theme in a child theme, you make a decision to add to your barrier. With any child theme you design the problem aggravates.
Far from being a “perversion”, this is a reality of how advanced themes operate. Try using something like Thesis, then switching to Headway or Catalyst. Or try switching from Hybrid to Thematic.
Anyway, FYI, I am a fairly conscientious developer and I do build functionality that can be severed easily. E.g. I believe apart from 1 shortcode provided with the theme, all others can be carved out into their own plugin. Ditto with widgets. And I do have plans to offer as plugins all bundled functionality that can be cleaved, so that users are not left out to dry upon moves.
I understand your response. If this is a plugin it should be downloaded as such: as a theme, it becomes virtually impossible to deactivate functionality.
WordPress does not follow MVC and it causes MASSIVE problems, but most PHP devs are oblivious to it — I don’t care if every single WP user out there flames me for it, the WP theme architecture is terrible and should not be used as a model for how to implement a theme. A theme should NEVER contain any loops or logical statements, so in my mind ALL WordPress themes are flawed because they put controllers and logic in them, but the Suffusion theme goes far beyond that. It’s my 2 cents there, but I think any senior developer would back me up on this.
If this is a plugin it should be downloaded as such: as a theme, it becomes virtually impossible to deactivate functionality
Firstly, and I repeat, this is not a plugin – it is a framework. Given that both themes and frameworks are released through the same channel, I don’t see why Suffusion should be excluded. If you are questioning the inclusion of frameworks in the themes repository, that is a different problem altogether.
Secondly, which functionality can you not deactivate? Bear in mind, what the back-end UI doesn’t let you explicitly deactivate, you can disable via removing the corresponding action from the appropriate hook.
Thirdly, I am yet to come across a situation where a user has desired to use a plugin and has failed to do so because the theme offers Hobson’s choice with respect to bundled functionality. There are plugins that will not work, but that is more due to scripting conflicts rather than an ideology conflict with respect to functionality.
but the Suffusion theme goes far beyond that
It goes no further than any framework. The difference is that a traditional non-UI framework makes you activate/deactivate/develop functionality via a child theme’s functions.php, and Suffusion lets you do most of it via the options panel. Being a framework it has most of the flourishes and blemishes that every framework has, and that includes plugin functionality.
My response here is not meant to challenge you. Rather if you can provide inputs on how you envision activation/deactivation happening, I will be glad to incorporate them assuming they are practical and architecturally sound. But one fact will remain – this is a theme framework, and it will continue being so. The day WP offers a capability to upload themes along with related plugins (or the day the WP theme manager can allow installing all associated plugins for a theme), this whole discussion will be moot.
It’s fair for you to challenge me (hey, this thread is challenging you). I’m not known for being politically correct. I do admire the hard work you’ve done here. I just feel it’s misguided.
The whole concept of a “theme framework” wrankles me intensely: there shouldn’t be such a thing in my opinion. If you ever have to debug your view layer, then something is fundamentally wrong with the architecture. WordPress themes are tolerable, but they are severely flawed because they incorporate logic. One key tenet MVC development is “keep logic out of the view”. Period. I’ve worked on enough projects where that rule was disobeyed to know how dangerously difficult they became to maintain. There is a reason that frameworks are popular (not “theme frameworks”, but standard MVC frameworks): Ruby on Rails, Django, Catalyst, CodeIgniter, Kohana, Zend, etc. all obey MVC rules and those are the tools that get used for serious sites. WordPress isn’t a great platform for following architectural rules, and I feel it’s done a disservice to the developer community by showing a bad example. Lots of devs think the WP architecture is somehow “normal” or “good”. It is neither, unfortunately.
I would recommend you release this as a plugin: you’ve put a lot of work into it, but its functionality is that of a plugin, so it’s misleading to label it as a theme if for no other reason that a developer isn’t going to look to the theme directory as the place where additional functionality gets introduced. You may want to spin off the theme components into a dynamic theme and let the 2 work together. That would make a lot more sense to an uneducated 3rd party, and I feel that would break fewer architectural rules.
there shouldn’t be such a thing in my opinion.
Tell that to Thesis, Thematic, Genesis – to name but a few. This is WordPress – not Joomla or Drupal or A.N.Other web publishing system – but WordPress. And frameworks have a definite place within the overall structure with a strong developer user market. Any suggestion that Suffusion should be released as a plugin is – I am sorry – quite laughable.
I’ll stick to my guns: it’s actually the WP template architecture that is quite laughable. It’s fundamentally wrong, and I don’t care if the entire WP community follows you off that cliff like a swarm of lemmings. Calling some of those things “themes” is a gross perversion. Polluting the view layer results in sites that are poorly coded and a pain to maintain. You can spend your time telling me why that approach is legitimate and I can tell you what the paycheck of a senior developer looks like: no real developer with an ounce of MVC experience would condone the way WP handles this.
it’s actually the WP template architecture that is quite laughable
Then get involved in the core development and press for some of the changes that you feel are important. Standing on the sidelines throwing insults about really isn’t going to change anything, is it?
I’ve devoted plenty of time supporting WordPress, thank you — profits of my book go to support it specifically. I have filed bugs; some of them were defended as “features” due to what I think is simple myopia and lack of experience. I’m not making noise here just to be a prick: I’m trying to change the course… perhaps ineffectively. I don’t believe I have thrown insults around; apologies if I have. However, I’m not going to smile and compliment the Emperor’s clothes either. I could patch bugs all day long in the core code but it wouldn’t change the fundamental flaw here: if you allow controller logic and plugin code in your view layer, then you end up slipping down that slope into an untenable mess.
In other words, you have to stop the flow of blood here and get rid of themes that allow for that kind of thing (Thesis, Thematic, Genesis, et al) before you will have any wiggle room to address the underlying causes. With so many of the new features of WordPress 3 moving in the exact opposite direction, I don’t have much hope that the architecture will change course.
This is really not the right forum to raise these issues. You are preaching to the wrong people. This is a support forum. And, in my personal opinion, it’s really not on to raise what appear to be long held opinions about fundamental core design by attacking a single theme/framework. From a purely English perspective, that really isn’t cricket, old boy.
If you really want to use the forums to relay your message to the core devs, I’d suggest posting something in Requests & Feedback. But, if you want to actually start to change things, you’d be far better off doing it from the inside. Donating profits is great. Filing potential issues in Trac is often useful. However, nothing – but nothing – is going to beat actually getting involved in core development.
Fair enough: this is probably the wrong place for this.
I’ve tried to get involved here — I’m halfway through my 2nd WP book and I have yet to have a single email or post answered by anyone on the core team in multiple forums, so I’ve pretty much given up on bending anyone’s ear. If you’ve got links to specific forums or a hotline to developers who can clarify specific architecture issues, I’d love to have them.
A theme should NEVER contain any loops or logical statements…
If you really want to have these discussions, and to air these complaints, I invite you to do so on the theme-reviewers mail-list. That’s the primary place where matters regarding what Themes should and should not do are discussed and decided.
From a purely English perspective, that really isn’t cricket, old boy.
For the cricket reference, I tip my non-existent hat 🙂
Feel free to email me directly if you want to have a lively and spirited debate about MVC and why I think it’s actually awful for most web projects. 🙂
Link to theme-reviewers email list? Link to someplace where core developers actually respond to discussions or emails? Thanks. I’ve been trying for over a year to have those types of discussions and my co-author or I never got a single response, so forgive me if my conclusion was that the captain had abandoned ship.
Link for theme-reviewers mail-list:
Core developers do, at times, contribute to discussions; but that’s not especially relevant. Regarding WordPress architecture: that ship sailed long ago, don’t you think?
- The topic ‘[Theme: Suffusion] Dangerous Architecture here’ is closed to new replies.