Should we decouple Drupal with a client-side framework?
buytaert.net
buytaert.net
Just a look at Google Trend for Drupal [2] shows you that it's been declining steadily since 2009. Comparing it to Wordpress [3] shows you the extent of the gap with the leader.
Drupal has always been stuck trying to address an odd user; not exactly a developer, but somebody technical enough to leverage the insane amount of configuration interfaces that allow you to compose a Drupal website.
Personally, I think most CMS have it wrong: coupling content management and front-end generation is a sure way to end up spreading yourself thin and not properly addressing either problem. I think content API (e.g. Prismic.io or Contentful) are good examples of what a better approach could be.
Have a content management system that has great editorial tools and exposes the content through an API and let developers do what they do, integrating the content from the API.
[1]: http://teddy.fr/2013/01/25/dropping-the-drop/
[2]: https://www.google.com/trends/explore#q=drupal
[3]: https://www.google.com/trends/explore#q=drupal%2C%20wordpres...
I wrote about this in a blogpost a couple of months ago called 'the perfect CMS' [1]. I think Contentful is pretty spot-on in terms of features, but i would really love to see an open source project (like WordPress or Drupal) taking this same approach.
German CMSes used to be dominated by Typo3 (if you're not from Germany or Denmark you likely never heard of it before): https://www.google.com/trends/explore#cmpt=q&q=drupal,+wordp...
Drupal started gaining traction in Germany around 2008 but was rapidly displaced by Wordpress. Even though Wordpress now dominates the German market like everywhere else, Typo3 is still stronger than Drupal.
Things get even more interesting if we add Joomla: https://www.google.com/trends/explore#cmpt=q&q=drupal,+wordp...
Compare that to the US: https://www.google.com/trends/explore#cmpt=q&q=drupal,+wordp...
So what set of needs exists for which Drupal is the perfect answer? That set of needs is getting smaller all the time, as other options get better. "Easy to configure CMS" is still the best bet for Drupal. That is what it was originally known for. That was what let it win the competition with ExpressionEngine and Joomla.
If Drupal focused on stability, they could claim to be the stablest answer for configurable CMSs. That is probably a niche it could hang on to for another 5 years. Beyond that... its tough to see where it goes after that, but at least that is something to hang on to.
1) You can buy enterprise software support from Acquia.
2) It's relatively easy to find Drupal coding talent.
3) The community cares a lot about security.
Talented developers will find custom solutions more enjoyable and efficient to create and operate. But a custom content application loses to Drupal on all 3 of the above points.
http://www.indeed.com/jobtrends?q=drupal%2C+node%2C+rails&l=
There is a lot of custom work in the Enterprise. It dwarfs any one CMS.
Also, about #2 in particular, do you think it is hard to find Node talent or Rails talent? They both seem fairly abundant to me.
Regarding #1, I'm sure you can recognize this as a double-edged sword:
"You can buy enterprise software support from Acquia."
That is the problem, the Enterprise support is associated with a single company. Unlike, say, Rails development, or especially Java development, where there are a zillion companies selling to the Enterprise.
The problem for Drupal is in trying to find that space between "too big for off-the-shelf" and "too small for customized solution". It's a very narrow space.
It's more a matter of being better fit for a particular purpose, than some inherent superiority of technology. For building software products in general, including in-house enterprise products, Node, Rails, and others will still be winners. But for managing web content, Drupal comes with enough functionality, security, and developer support out of the box that it will beat custom solutions a lot of the time.
Sure, there will be plenty of legacy Drupal sites to maintain, but I have a hard time imagining developers even in very corporate context using it when they can address these points with more modern approaches.
For example using a content API like Contentful or equivalent and building simple front-ends that scale and are secure: no need for 4 layers of caching when you're basically serving static assets. As long as your API is secure, you're good to go. And finding folks who can write JS, HTML and CSS is a lot easier than finding Drupal "experts".
Companies are already building sites this way with Drupal--the Tonight Show with Jimmy Fallon is a pretty high-profile example. You would have no idea from the front-end code that Drupal is managing the content on that server, but it is.
My idea of a blog is what blogger/blogspot provides. Your common WordPress config today has 5+ pages, maybe a store, maybe directory of employees (who don't even know what WP is), maybe manage subscription memberships, maybe running a flash arcade (so 2006, but you get the idea)...
Yeah, WP has a core function of making a post, but it's evolved into 100x that, and that was the goal (probably in like 2008 they set out? I don't know). Did they accomplish it? I'd say so.
We found a module the other day that had a Delete TAB, not a button, not a link but a TAB. Honestly. Who does that?
Sometimes the save button is at the bottom, sometimes the top, sometimes it saves via AJAX...
What they should do is like the module HOOK system, do the same for the user experience/GUI front end.
And Drupal is so slow. So painfully slow. Install a few modules and e-commerce and wow. Slow. Slow. Slow.
And as soon as you start debugging it, nearly all the code ends up being along the lines of:
$function($args);
due to the HOOKs. When you're five or six levels deep and the call stack is just full of $function() calls... what then?So Drupal 8 core may be out, but for 99% of Drupal developers we're all waiting for the modules to catch up.
I hate to see its evolution as never-quite-there toward a never-quite-decided future.
Whatever they do, the years-long release cycle needs to die, allow whatever improvements you'd like on head without worrying much about BC, occasionally cut off a LTS release that never gets anything new without 100% BC. Maintain these long enough that it's economically feasible for people to base projects on (Whatever the benefit of the project is * years that benefit is durable > cost of development). Focus on data migration for when people re-build sites on newer platform instead of continuous upgrades -- nobody does these unless they're painless, they will never be painless.
There's too much coupling between presentation, client-side behavior, server-side behavior and data model for me to see this particular change going anywhere good.
You can't truly decouple client and server while still letting non-developers build web apps unless you build a UI-configurable framework for consuming an API generically and building client-side presentation and behavior. Even then, unless you also go so far as to infer things about my data from its API, it's still twice as much work to describe both my server-side domain model and its presentation instead of letting one be implied by the other.
But in typical Drupal fashion, they probably don't mean "decouple" when they say that word, so it's really just rewriting the current hodge-podgy fully-coupled client-side behaviors in a more structured but still coupled way using a client-side framework -- absorbing it the way they did Symfony for the server, not the best move but definitely with value and very achievable.
I think some backwards compatibility breaks are needed in Drupal 9 to just simplify things.
In practice, this means that if you are going to build a Drupal site, it may take several months to a year after the official release before everything's stable enough to build out a new site.
Drupal 8 should simplify things a lot, compared to Drupal 6/7, in that they are actively developing Drupal for developers who aren't Drupal developers. The question is whether that's enough to make Drupal a viable CMS/application platform going forward.
Literally nothing between 7 to 8 works. You are starting over. This is not acceptable in the markets Acquia is going after (enterprise).
Is that really strange? Isn't that standard semver "major releases break backwards compatibility/api"?
I like Drupal but as time goes on, it seems that most of the contributors are focused on their businesses and no longer Drupal itself. Acquia and others, maybe it's private interests that are fogging the judgements of people.
I've been working on it for 4 years for our developers and I want to get some feedback. I feel it's the new drupal, in many ways.
What do you mean so little care? It took months to write all that documentation and record the tutorials for how to get started and all the architecture diagrams etc.
Building the Drupal module frontend as React Components seems like it would be easy to add on as a toggleable layer. You push state into the global Drupal root and mimic the module tree in the state store, and then reduce based upon a dispatch from individual modules somewhere in the document tree.
It's a very clean fit into Drupal's legacy architecture and easy for a Drupal developer to wrap their head around, as it's all one-way.
If the Drupal project gets solidly behind Angular, React, Ember, or something else, and Drupal 9 modules support client-side as well as server-side rendering, this could be a very interesting development.
I've used this pattern on a couple projects now and it's an enjoyable Devon experience. And the client gets the benefit of a nice admin interface.