The Design of a CMS aka What Drupal 7 should be

dkulchenko - February 11, 2009 - 03:21

I've only used Drupal for 2 months, but I've found my way around, read through the entire API, the docs, and can (with some exaggeration) say that I can do most of the things that Drupal has to offer. I'm new to Drupal, but I've had much experience with other CMSes such as Wordpress, SilverStripe, and ModXCms before. Before I start, this isn't another one of those "I hate Drupal" posts. In fact, I love Drupal, I think that it is awesome. But it definitely has room for improvement, and I will attempt to cover my specific points here. Basically, I'll try to cover the way I think Drupal should be.

Important Fundamentals

These are my key points, the changes I feel that are the most important.

  • Backend. Starting off with the fundamentals, I'll cover the Drupal backend, the stuff you see when administering the installation. I'm not sure if this was a major core decision from the start, but in Drupal, unlike most CMSes, there is a thin line between the backend and the frontend. Of course, some people hate this, but I'd have to say I'm neutral on this. Of course, what I really like in other CMSes is that there is an actual administration interface. It's kind of hard to explain, but I guess a central admin dashboard which allows you to accomplish a few fundamental actions (but not nearly as comprehensive as the Administer screen) straight from there. Look at the Wordpress dashboard. (This has been discussed at http://groups.drupal.org/node/9570). AFAIK, Drupal has had the same backend sine 1.0.
    My suggested action: a redesign of the administration backend, possibly adding a central dashboard (to make it look (slightly) more like Wordpress).
  • Backwards Compatibility. That's right. Here we go again. It's been said before, and I'll say it now. As most of the people involved with open source software well know, there are a few open source best practices. Work with the community when designing. Have a mailing list/discussion area for questions and answers. Have a dedicated issue tracking system. Drupal follows all of these except one. Backwards compatibility. I understand that at Drupal's creation, Dries decided that Drupal would sacrifice backwards compatibility in exchange for better, cutting-edge code, among other things. It's not worth it. It just isn't. I'd much rather have slightly less features, than not have the opportunity to upgrade without worrying whether my data is safe, without having to download new versions of all my modules and themes. I want a clear upgrade path. I want the opportunity to do a WordPress like update. Download archive, upload files, go to upgrade.php, you're done. Now Wordpress even has a built in upgrade option. (You might notice I'm referring to WordPress a lot, but that's simply pointing out the good points of WordPress that apply here. I am not affiliated in any way with WordPress, just an avid user.) Discussed: http://drupal.org/node/229163#comment-754958. I think AusValue makes some very good points there. I have to install an old version of Drupal because the issues module is not updated to Drupal 6. That is not the way it's supposed to be. Backwards incompatibility is making it harder for me to use Drupal. Each day I wonder: what will happen when Drupal 5 becomes unsupported? Will I have to risk everything, lose some of my site's functionality and switch to the next version?
    My suggested action: Add backwards compatibility. Please. At least add some. I might be too late in the game, but I think that there should be a rewrite of Drupal. WordPress got rewritten at 2.5, with huge improvements, then again at 2.7, which turned it into something amazing. (By the way, they redid the backend each time).
  • Simplicity. Drupal is very powerful. I've understood that since the first time I saw it. And that's the problem. One of the only things I don't like about Drupal is the complexity of the system. I guess this ties in to the Backend part, but whenever I use Drupal, even to create a simple page on my website, I am overwhelmed with options. Page or Story? Full HTML or Filtered HTML? In the menu or not? Alias X or Alias Y? Coffee or tea? Paper or Plastic? You get the idea. I guess I only use half of those options. I mean they should be available, but they shouldn't take up most of the screen, they shouldn't jump into my eyes. Again, look at WordPress. It makes use of a separate backend theme, and spreads out the options into the sidebar, and makes them unobtrusive and easy on the eyes. I can create a page without worrying or even having to notice those options.
    I'll give you another example. The navigation is a mess. I put it in the sidebar, and the ugly mash of links becomes extremely visible. Why do the users need to see a Create Content button? If they want to post a forum topic, they'll go to the forum, and do it there. If they want to create a project issue, they'll go to the project page and do it there. Why add additional burden on the user by providing them with a link that does not make much sense? I'm forced to limiting the navigation only to administrators (namely me), and showing the users a custom hand-coded navigation box that is not as obtrusive to the eyes.
    Simplicity is key. It lures huge amounts of users, it makes it easier for existing users to work in the system. It makes creating web sites fun. But now, I dread each time I need to update my site. I'm spending much more time working on my site than I should be. Drupal should be made easier to use. I guess at least reorganizing the navigation would be a start. I find that the more complex a CMS, the harder it is to use, but I know that that does not have to apply.
    My suggested action: Make Drupal easier to use. (I've covered specifics above.)

Convenient Additions

These are the features that have a place in Drupal, but I feel are not as important as the ones above.

  • Module Control and One-Click Upgrading. WordPress has a very convenient core feature (has had it from the start), where on the Module page, you can activate and deactivate modules. It also notifies you if there is an updated version of a module available (same with core). And it also allows you to one-click install modules straight from your WP install. All these features would greatly benefit Drupal.
  • Complete Wiki Module. There should be a (single) module that provides all the features of a wiki and allows you to create a separate wiki section on your site. You can currently do that be installing 5+ modules, and doing 30+ minutes of configuration, but it should be combined into a separate wiki module, with a separate content type, like the forum module.

That's all I can think of right now, but if I think of something else, I'll add it to the post. But now, I want to hear your opinion. Where do you agree with me, where was I wrong? Maybe I don't understand something somewhere, so please tell me, and I'll make the necessary corrections. Hopefully, we can turn this into a central document for wanted future features.

Daniil K, the 13 year old

=-=

VM - February 11, 2009 - 03:33

The admin area could use some work, certainly. What we have is workable and it takes someone with the same desire and some time to spend doing the task you ask for.

backwards compatibility = I highly doubt it will happen. The philosophy is the apis can break so long as your data doesn't. backward compatibility is baggage that no CMS needs. Personally I think other CMS's should follow drupals path and not carry around all kinds of code to allow for backward compatibility. Beyond that. Most highly used scripts are rewriting to only use PHP5 and MYSQL5 to push technology forward. PHP is dropping support for PHP4 so this argument IMO is out the window based on technology drupal requires to work with.

Drupal gains users with each new major release. the numbers double every year.

there is a module being worked on that is already in contrib that does what you ask with modules.

I disagree with the wiki idea you have there. Drupal is getting away from specific content types and your idea is putting it back in a position to pigeon hole itself. Buidling whatever content type you want is the path drupal is on and will provide a tremendous amount of flexibilty.

I'd love to have a single

dkulchenko - February 11, 2009 - 03:56

I'd love to have a single content type. That would be great.

IMHO, backwards compatibility is (very) important. I might just not understand what "baggage" you are talking about, but higher amounts of backwards compatibility will increase adoptability greatly. That's been proven on numerous FOSS projects. See http://ianmurdock.com/2007/01/14/on-the-importance-of-backward-compatibi... if you're not convinced. I understand completely that the number of Drupal users is growing. I just feel that it could grow faster if it would be easier to switch between versions.

Why do you think Office 2007 can open Office 97 documents? Why do Windows 95 programs still run on Windows 7?

I don't think backwards

aitala - February 11, 2009 - 05:08

I don't think backwards compatibility is a needed feature. I would rather Drupal be able to go back and fix mistakes, make improvements, and progress rather than stumbling along with unneeded baggage, legacy code and APIs, etc...

Backwards file compatibility is one thing, but systems/programming is another matter.

Eric
__________

Eric Aitala - f1m@f1m.com
The Formula 1 Modeling Website
www.f1m.com

Backward Compatibility is Critical

jcipriani - May 28, 2009 - 20:12

Backward compatibility absolutely is critical. Moving to Drupal 6 too soon threatened 4 client relationships — and ultimately my business. I've since changed to an enterprise mash-up of Wordpress.

Last fall, mission-critical modules, like Groups, Panels and others, were not keeping up with version 6 API changes. Version 6 had been out for over a year (I think), and well over half the modules I needed were not compatible. Upgrading to 7 was out of the question. Modules are important enough that they become the bottleneck in adopting future versions.

Drupal can either be backward-compatible or support older API versions for many more years than is necessary.

I think Drupal is also mismanaging their API. The product improvements are nowhere near significant enough for to warrant scrapping modules. From a product development perspective, Drupal's changes have been academic since version 5. It basically works and acts the same from my clients' perspective. Way too much risk for too little reward.

In that time, Wordpress has grown from small blog platform to elegantly-designed full-blown CMS with all the features, add-ons, and plugins a client could ask for. Edit-in-place, ecommerce, opt-in email, micro-formats, web 2.0 integration, etc. If Apple were a CMS...

Ciao, Drupal.

I read a comment on a blog

dkulchenko - February 11, 2009 - 04:03

I read a comment on a blog post about Mambo vs. Drupal that summed up my Simplicity paragraph:

Drupal seemed the most promising but I just couldn’t get my head around it. The learning curve was too steep. In my experience greater flexibility goes hand in hand with a more complicated user interface. Ultimately I think Drupal’s flexibility could be its downfall.

I completely agree.

could be it's downfall?

styro - February 11, 2009 - 05:05

Have you paid attention to what has happened in the years since Drupal and Mambo were regarded as competitors? And when Mambo was far more popular than Drupal.

Hint: it isn't Drupal that has suffered anything resembling a downfall. It is vastly more popular (and more flexible) now than it was back then.

If you need a simpler CMS, use a simpler CMS. If you want a flexible CMS, use a flexible CMS. There is room in the market for all kinds of approaches.

It would be hard to argue that Drupal's approach has not been staggeringly successful. It is quite likely that it would not be the case if Drupal had taken a different approach to flexibility or backwards compatibility.

In my opinion it is the huge amount of development resource that Drupal has attracted over the years that shows how successful Drupal has been as an open source project. And that will be the key to future success for Drupal - you can't do the kinds of things Drupal is doing now without it. But I doubt that development resource would've have been attracted to Drupal in the first place if it didn't have its approach to flexibility and backward compatibility.

Drupal wouldn't be what it is today if it had taken a different approach.

--
Anton

I guess my main point is

dkulchenko - February 11, 2009 - 04:40

My main point is that I feel uneasy, almost scared to update my website. Are there any modules, changes, themes, whatever that might make my life easier? Make administering Drupal, creating content, whatever easier?

Thanks in advance.

=-=

VM - February 11, 2009 - 16:31

My high school football coach had a saying that comes into play here. "If you're scared, get a dog!".

Knowledge is power. Consider knowledge your dog.
The more you learn, the less "afraid" you will become.

Consider following best practices a leash for your dog.

best practices in this case would be ALWAYS make BACKUPS. Whether you are upgrading core, upgrading a module, tweaking part of the script or writing your own module ALWAYS make BACKUPS.

Then make backups on regular occasions.
Test those backups after making them to insure they work in a "worst case scenario".

play with upgrading before actually doing an upgrade. Export your live DB to a new DB and do the upgrade there. If something breaks, no sweat. you report the bug and your site isn't broken. Haste makes waste. Taking shortcuts runs the risk of getting lost and the trip taking far longer than it should have.

...

zirvap - February 11, 2009 - 19:33

My main point is that I feel uneasy, almost scared to update my website. Are there any modules, changes, themes, whatever that might make my life easier? Make administering Drupal, creating content, whatever easier?

I definitively second what VeryMisunderstood said about backups. (Especially the testing part. The first time I made a site, I took backups, but didn't test them. And when the site went bust (because I did my experimenting on the live site, not on a test site), I realised that backing up the files wasn't worth much without a database backup :-o )

Another suggestion to make things less scary: Do you use the first user you created for day-to-day work on the site? User 1 has permission to do everything, and that can be quite distracting. I suggest creating a new user, create a role for it, and give that role just the permissions you need for the most usual tasks. The options you don't have permission for will disappear from the menus and admin screens. (Not using user1 for day-to-day tasks is also recommended in http://drupal.org/best-practices)
http://drupal.org/project/rootcandy might also be useful (haven't tried it myself, but I've read good things about it.

Thorough usability feedback like yours is very valuable, but commenting on several different issues in a forum thread isn't the best way to get things done. I suggest you join http://groups.drupal.org/usability for general discussions, and use the usability issue queue for specific suggestions. (Remember to search in case your issue is already under discussion.) The issue queue is the work area of Drupal. That's where change happens.

Some of your suggestions are already being worked on:

Backend: #79023: Get an administration theme into core and http://drupal.org/project/admin_dashboard

Simplicity - create a page: http://groups.drupal.org/taxonomy/term/6737 (For your own site, you can simplify things for your users by removing some permissions. If they only have one input format they won't have to choose, if they don't have permission to change alias they won't see that option, and so on.)

Navigation: What you describe is what I do as well. From what I hear, it's the usual way of doing things. There's work going on at #273137: Split Navigation to User and Administration menu which might make it more useful.

Wiki: What you're describing would be better implemented as an installation profile (also called distribution profile). Installation profiles seemed really promising when they arrived, but there hasn't been much talk about them recently, I don't know why. Take a look at http://drupal.org/project/drupal_wiki. It seems abandoned, if you're interested in taking over, see Developing installation profiles and Dealing with abandoned projects.

Great dare I say fantastical

espirates - September 20, 2009 - 09:38

Great dare I say fantastical post.

I said it before and recommend all Drupal developers install the latest Wordpress alongside Drupal and go back and forth to each Admin interface and notice the difference. It's painfully obvious where each CMS excels and fails.

Wordpress does it simple, better and faster, sorry to say, whiles Drupal has all the power. What good is all that power if its a chore to work it, site administration should be simple and fun, Wordpress did it, why not Drupal.

Upgrading Wordpress, happens in a blink of an eye, super fast. Upgrading a plugin, light speed.
Fast and simple is what Drupal needs now, it has enough power already.

Making Drupal easy to use and more simpler than even Wordpress is definitely possible, the sad fact is the Drupal team doesn't seem to want it to go in that direction. They like it complicated and advanced.

Another thing is everyday users and web hosts should not have to modify their systems just to cater to Drupals special requirements and/or resource intensive needs. Why is it that a Wordpress database can do as much as Drupal but in half the time, scary when you think of it. The WP code might not be as advanced as Drupal but it sure does flow like water on the user end.

I think for the most part, making things easier is only a matter of cosmetics and theme modifications. It shouldn't be too difficult for Drupal experts. If they can lay off the code and focus more on a simple user interface, it should be easy to accomplish this in no time. Also making Drupal less resource intensive would help too. Drupal needs to go on a serious diet, this is intervention time.

I like the idea of an Admin User Interface (block) rather than a full theme, something that doesn't get in your way and can blend with any theme. Wordpress has the right idea, let's hope Drupal can learn from it.

I like the fact that Drupal doesn't use a backend Admin, a block is all you need to administer a site. The Admin dashboard proposed for D7 looks good although I like the top section more so than an entire theme. Like I said, all you need is an Admin Dashboard (block) that sits up the very top.

Recap: There's two things that need to be considered (dashboard, theming) and (less resource intensive), and it needs to be finished yesterday. :))

 
 

Drupal is a registered trademark of Dries Buytaert.