Taking a more focused approach to Drupal 8 development

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
zfactor's picture

Last night, as I read through the conversation that is happening on the "Make core maintainable" issue (http://drupal.org/node/1255674), I couldn't help but feel that while this conversation is important, it may be the wrong conversation to be having at this time. I am glad this conversation has continued coming out of DrupalCon London, but I feel like we haven't answered the fundamental question of "what is Drupal?", which may help steer the conversation in a direction that will help us select the features that really need to be in core. I posed the question to Dries at the conference, and was surprised when he stated Drupal is "a product, a framework, and a community." I mean this as no critique of Dries' vision of the platform, but I felt like that answer was really vague and needs further definition given the maturity of the project, and, looking a the open source CMS landscape, the competitive disadvantage we are in due to our lack of positioning.

The current debate about whether to remove some of the core modules (Aggregator, Blog, Book, Color, Contact, Dashboard, Forum, Overlay, PHP Filter, Profile, Shortcut, Statistics, Toolbar, Tracker, Trigger, and Poll), seems to stem from the question of whether Drupal is a framework or a content management system. The argument can be made that it is both, and there are valid reasons why we might want it to remain that way. There is something to be said about having a platform that is flexible and extensible, and will evolve as the content management needs of the user evolve. Many proprietary systems don't offer this level of extensibility. BUT, being flexible and extensible can mean many things depending on who we are targeting as our primary user audience/demographic.

Let's use Wordpress as an example. Wordpress is a full featured content management system that offers an amazing assortment of full featured plugins that meet the use cases of end users. Wordpress.org states:

WordPress started as just a blogging system, but has evolved to be used as full content management system and so much more through the thousands of plugins, widgets, and themes, WordPress is limited only by your imagination. (And tech chops.)

The Wordpress community has set the expectation for a person who is looking to download the software that they are going to get a system that has primarily been used for blogging, but is a full featured content management system out of the box which can be used for more. So, I know when I download and install this system, I will be getting a full featured content management system.

Let's look at Drupal in contrast:

Drupal is a free software package that allows you to easily organize, manage and publish your content, with an endless variety of customization.

We do not clearly state what Drupal is. The above description could be a document management system, a CMS, a social CMS, an online community platform, a blogging tool, or what have you. We also set false expectations that it allows you to "easily organize, manage, and publish" because Drupal doesn't exactly do this out of the box.

The Wordpress project has done a good job at staying focused on what they are trying to be and what features they are trying to offer. The platform is quickly evolving into a full featured content management system that is easy to use for people managing websites. Their target audience for the platform is the website manager. While designers and developers probably make up the bulk of their community, the software is designed with a specific user demographic in mind.

I would argue that to date, Drupal's primary user demographic has been developers. While people can download the software and create websites themselves, the system has really been a base platform for building more robust solutions, providing a lot of the core features a developer building content management solutions needs (a UI, content administration, user management, content categorization, menu system, etc.). With things such as the D7UX initiative, we seem to desire moving in the direction of making website managers our primary user audience, but we are putting lipstick on a pig. Instead of providing the features website managers need to run websites, we but a new user interface on a system who's target user audience is still developers.

Rather than debate which modules go into core, I think we need to seriously step back and determine a clear direction for the project. There are some great proposals out there, but by continuing to develop the platform while figuring out what it is, we are building a house in a hurricane. We will continue to have these debates and frustrations, and, quite frankly, we will continue to waste precious, donated time on developing platform features which are not adding any real value to the platform.

Secondly, we need to make a distinction between features which create an experience for end users of the website being built and features which are needed by the website developer or website administrator. This is important, because if we are truly seeking to build a content management system which is feature rich or a framework for building content management solutions, we will find that modules such as blog, forum, and poll, really don't add much value to either developers or website managers. The experience I get when I install Wordpress or Joomla is what I would expect from a content management system. When installing Drupal, my expectations are not really met because there is a mix match of features targeted at the website manager/developer and at the end user. Depending on my needs, I most likely will never use the features targeted at creating an end user experience. These are things that are specific to each project, and are better left to the strategist/designer/developer to determine. We should just seek to empower them with the tools they need to create that experience.

The value that Joomla and Wordpress provide to website developers and website managers is not that they come out of the box ready to run a website. They don't. They provide some tools that make it easier to build a website (i.e. Wordpress comes with some themes out of the box that create a blog experience for the end user). Just like Drupal, there is still a level of configuration that needs to be done with these other systems. The value that these platforms add is that they have identified the core features they feel their target user audience, not the end users of websites, need and have continually developed those core features, only adding news ones as the needs of their target user audience evolve.

Looking at the modules which we are currently discussing removing from core, these can be separated based on the experience which they add to:

Provide End User Experience:

  • Blog
  • Book
  • Contact
  • Forum
  • Profile
  • Poll

Provide Website Manager Experience:

  • Aggregator
  • Color
  • Dashboard
  • Overlay
  • Shortcut
  • Statistics
  • Toolbar

Provide Developer Experience:

  • PHP Filter
  • Tracker
  • Trigger

There is overlap, as some of the modules that primarily provide and end user experience also provide an an experience for website managers, such as forum module. We will find in some cases overlap is needed. But we should focus on providing an experience for our primary user audience, and only provide that secondary experience as needed. In example, we need to create a primary experience which allows website managers to manage users, but secondarily provide a way for end users to register on the website.

So, the question I pose to you all is: who is our primary user audience/demographic for Drupal? If we approach this through the lens of our primary user audience being website administrators, we aren't focusing on building the right set of features for the platform.

When you install Wordpress, Joomla, Expression Engine, or other comparable open source content management systems, you don't have a bunch of front end features crammed into the system, such as community forums, multi-user blogs, etc. You get robust backend administration tools that get website managers started, and just the necessary tools they need build the end user experience. They put the onus on the website builder to create the end user experience they want. That is the way things should be.

Rather than make assumptions about the needs of our primary user audience, we should perform a formal assessment to see what the core features are that they look for in a content management system; perform a competitive analysis to see what other open source content management systems are offering and how; and then perform a gap analysis to determine what is missing from core that we need to include in order to make it possible for our user audience to effectively use the platform in the way they intend to.

Let's also make a distinction between features for front end users and the features that empower website managers or developers. Dries' comment on the "Make core maintainable" issue (http://drupal.org/node/1255674#comment-4917848) recommended some of these - etter media/asset management tools, WYSIWYG, mobile support, more UX improvement and content staging. I think these were made through the lens that our target user audience is website managers, which may be fine if that is who we are in fact target.

Looking at Dries' recommendation, you can see the distinction between features that provide tools for website managers to be able to effectively create and manage content, versus features that provide front facing functionality for end users. I would argue that a module that provides an experience for an end user should never make it into core. Again, the line can get blurry because each of the end user-focused modules (such as blog and forum) provide some website administration functionality, but the primary user audience is end users. We need to stay focused on providing features for our primary user audience.

To sum up my thoughts:

  1. We need a better definition of what Drupal is (i.e. "Drupal is a framework for building content management solutions" or "Drupal is a flexible, full featured content management system that allows people to manage a website out of the box").
  2. We need to define who our target user audience/demographic is. Are we targeting developers who are building robust content management solutions for clients? Or are we targeting non-technical people who need something they can easily install to run their website and possibly extend with some plugins to add full-featured functionality? We cannot be all things to all people. It dilutes our product and brand.
  3. We need to really understand what the needs are of the primary user audience/demographic we are trying to reach. This will define what is needed in the core. Much of the conversation currently happening around what modules need to go into core are based on opinions or people's experiences building Drupal websites, which can be rather narrow depending on who they service or their personal motivations. We will be targeting a very large group of people who we want to use Drupal and join the community, which requires that we first provide them with the tools we know they need, not the one's we think they want or that we individually think are useful.
  4. Once we have that clearer definition/vision of the n state for Drupal, we should start developing a roadmap to take us from where we are towards that vision. As an example, we may not need a WYSIWYG in core if we are driving Drupal to be more of a framework with a series of install profiles people can download to meet their specific use cases

Having that vision will help prevent diminish the current frustrations in the community. While I don't think this process will solve all our problems, and I don't think it will prevent future frustrations and disappointments, it will at least give people a consistent lens through which we look at the project when we have conversations about the direction Drupal is going in and provide a framework by which we evaluate and prioritize core development.

I hope people do not take offense to any of this, as it is not meant to be a critique or slap in the face to anyone. These are my thoughts which I hope others appreciate and/or agree with, and help to possibly change the way we approach planning for the Drupal project.

Comments

blog posts

catch's picture

Sorry to just spam with blog posts for now, it's getting late, however:

Larry wrote a very good one on audience priorities a few months ago - http://www.garfieldtech.com/blog/drupal-priorities

I wrote one on "what Drupal is" - http://ca.tchpole.net/node/4. The main point of that blog post was to define the different things Drupal actually is, so that people can look at that and decide which bits they think are important - while I have my own opinions my main purpose in posting that was to come up with some common terminology that's a bit more meaningful than framework vs. product (which mean different things to different people). effulgentsia's comments on that post were really useful as well.

@Catch Thanks for pointing

zfactor's picture

@Catch Thanks for pointing these post out to me. I did read Larry Garfield's post last year. He makes some very valid points about our audience essentially being Drupal shops and called out some things we need to address as far as how we make architectural decisions related to Drupal, but he very much analyzed this through the lens of a developer. What I am trying to state is that we cannot do that. It's a hinderance to us, because at the end of the day we may not be building a platform for developers. We need to think bigger picture than that.

I also don't hope this doesn't turn into a game of semantics either, focusing on whether we call Drupal a platform, software package, CMS, framework, etc. The nomenclature we use should be dictated by the vision of what we want the system to be, not a vocabulary exercise. Until we define what Drupal is and who we are targeting, we cannot really select the correct language to use in talking about it.

Lastly, I wrote this to put forth a recommendation on how we actually tackle the issue, which I haven't seen in any post on the issue. This conversation has happened repeatedly, but I personally haven't seen many inroads made to address it. It may be because people don't see it as an issue. I gathered that it is given recent conversations though.

What I would like to know if how do we get an initiative like this moving?

group of people interacting with a site

donquixote's picture

Some thoughts on this.

I would argue that to date, Drupal's primary user demographic has been developers. [..] With things such as the D7UX initiative, we seem to desire moving in the direction of making website managers our primary user audience, but we are putting lipstick on a pig.

I think we are missing something in this discussion about our "primary user audience". The user is usually not a single person, but a team, or rather, a group of people which somehow depend on each other for interacting with the site. There are designers (photoshop or html/css), there are more technical people ("site builder", developer), there are content writers, there might be community members and (hopefully) some site visitors.

In my experience I have seen these two scenarios:

  1. (Complex) site built by professionals for a client.
    The client is typically an organization or business, which does have its own staff for content writing, and maybe some other staff that take the role of "intranet community members". The staff have other things to do than trying to learn the technical aspects of Drupal, so they need professionals from outside.

This organization does pay one or more external individuals or a shop, to deliver photoshop drafts, to build and maintain the site, some consulting and assistance for the content writing staff, etc. If these experts do their job with plain click-click or with code, does not matter. (I have yet to see the successful professional Drupal site builder who does not do some code from time to time.)

The typical site of this category will often evolve into a hybrid of different aspects: Publishing platform, online shop, community/intranet, some custom programmed functionality. The strength of Drupal is to allow all of these to play together nicely.

  1. Small or low-budget site built by "amateurs".
    An individual with little technical or Drupal experience, no budget, but a lot of (volunteer or not well-paid) time, uses Drupal to set up a site for the own little organization, or just for some personal interest.
    The reason to choose Drupal is not the nice look, or an easy setup process, but the desire to have some structure in the content, beyond just blog posts + taxonomy (that's easier to do with Wordpress, I guess).
    Maybe there is also some technical curiosity behind the choice of platform.

It can happen that a site of category 2 evolves to a site of category 1, if suddenly there is a budget. Or, a person who started as an amateur does evolve into an expert site builder / developer.

There are of course other scenarios imaginable, but I think these 2 are where there are good arguments to choose Drupal over other solutions. If you want something nice-looking in a short time, with very simple functional and structural features, then there are probably better solutions out there.


Now, if we say "Drupal's primary user demographic has been developers", I would say we actually mean scenario 1, which does contain more than the developer.

I think the goal should be to
- Really shine at scenario 1.
- Be as accessible as possible for scenario 2, but accept that there are other systems which are easier to learn.
- Allow others to build ready-made solutions (install profiles, "distributions") for other purposes, such as "nice-looking basic site in 10 minutes" or "your online shop in 20 minutes", on top of Drupal (small)core.
- Allow a smooth transition from the "easy nice-looking site install profile" towards a "complex site built and maintained by professionals".

This requires:
- a flexible and architecturally sane core
- extensions that play nicely together, are easy and fast to set up for developers / experts, and where learning them is not harder than necessary.
- CMS backend features that can be configured by experts, to provide a pleasant content-editing experience.
- solutions for staging, migration, backup + restore, etc.

What we need from Drupal 8 core

AndrzejG's picture

We - I mean site builders.

A. Above all we need Drupal 8 working. Even a working version of Drupal 7.

B. THEN we need better Drupal.

For B., there are many discussions under the umbrella of Drupal Core Initiatives. So, here I confine to A.

Drupal working

'1. It may be initiatives like this http://drupal.org/node/1224666.

'2. Core has to enforce strict specifications of interfaces in order to avoid a mess of contributed modules. Drupal testing system is too weak to stop launching such modules.

Examples:

  • Chaos Tools is a plug-in system. But when my site crashed so that nothing is seen, first were the catastrophes caused by include.inc with theme, than include.inc with a lot of other things, and then those caused by wrongly working relations of CT plugin system with other modules, i. e. context, display suite, feeds, and heartbeat. The only module that behave OK was... Views. It stopped working silently, without crashing a system.

  • Handling of deep relations in the machinery of tokens, Rules, and entities that have no title, like Fields Collection. In contrast with Views that handle consecutive relations correctly, these 3 don't work, for various reasons.

First, due to the crisis of tokens concept in light of incorporating fields into core. These two concepts have to be re-thought and re-elaborated URGENTLY, as they are the main blockers of Drupal 7 development. Please note how contributing developers are massively coming back to Drupal 6...

Rules seem getting less and less working, and probably in a few months will be able to react only with system message "Bye bye World". Title-less entities can only be attached but they are not able to behave like "normal" attachment. So, they are not handled by Rules, despite some tokens for them are generated. Handling by Views is also very limited.

Examples above concern only one set of problems, those most painful, and related to some past decisions as to what core should handle and what shouldn't - of fields, entities and tokens. These three. Please rethink.

'3. Please see also my comment about the principles, http://groups.drupal.org/node/158764#comment-556639. Principles have to be clearly specified in Drupal documentation included in the package.

'4. Definitely something has to be done with caching system. My admin has to receive all notifications from Forum to be in time clearing cache after each comment in order to display it in the block.

'5. There are proposals to exclude some modules from core, like Blog, Poll, etc. I strongly disagree - we badly need a set of ready-to use and solid content types.

Compromise solution is to launch Drupal as Drupal Basic Distribution containing core infrastructure modules and a set of basic, well tested (and refactored!) content types and blocks for immediate start. Such approach will shorten Drupal's distance to WordPress.

As for blocks, I would love Text/HTML block (similar to Node in block), and RSS block, in addition to already existing ones. The UX is discussed elsewhere.


I could continue, but hope it is not necessary as many of us feel the pain and know what is to do urgently.

Improvements to core

Group categories

Category

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds:

Hot content this week