Help API

Events happening in the community are now at Drupal community events on www.drupal.org.
japerry@drupal.org's picture

Moved to official ideas list at http://drupal.org/node/237899

Staring with some of the things here and some thinking and discussion here's a proposed proposal for a coding project:

Drupal's help system is fairly incomplete. At drupalcon there were many examples where the lack of a help system contributed to its usability woes. This project aims to enhance Drupal's help system through a pluggable, extensible help system API.

Drupal Help should:

  • Provide help for any Drupal path by adding a suffix to the path (perhaps /help)
  • Identify a "provider" site for help documentation... defaulting to drupal.org
  • Provide a server implementation for serving help documents based on the area for which help is being requested.. this should query down the Drupal path using a system like the theme system where modules can override the response or pass it along if they have no response
  • Provide a glossary functionality where key terms can be identified and automatically linked in help text
  • Be configurable but come with simple defaults
  • Cache help system locally on either a "grab x help items per cron run" or cache item on request depending upon local setting
  • Add links to help throughout Drupal where it makes sense (i.e. help links for each item on the various administrative pages
  • Provide for delivery of help videos, wizards, flows
  • Provide for help along side content it pertains to
  • Provide a framework for accessing help documents in a task-centric manner (may be the same help as the context-centric general model with a different outline)

Difficulty: Medium

Mentors: SIGN UP HERE

Comments

+1. For references

catch's picture

+1. For references:

http://groups.drupal.org/usability

maybe the content/interface translation tools for D6 would be useful (since very soon it won't be necessary to have a cvs account to contribute translations).

Some additional features

keith.smith's picture

...in no particular order. Much of this is stuff I've heard others discuss, along with my own ideas after watching the U of M Usability presentation:

  • Help text positioning - consider whether current "above the fold" text could be better served in another location on the page. On the development list, for instance, Gabor raised -- in passing -- the idea that perhaps help text should be displayed as a block located by default in content top. This would have the added benefit of being moving it over to the sidebar, etc. Currently, of course, help text -- especially on pages like /admin/build/modules -- takes up much too much space.
  • Conditional display - Also -- for the sake of argument -- if help text were displayed as a block, it would automatically gain: a) the ability to only be displayed for some roles, b) the ability for advanced users to turn it off (conditional block display by user), c) the ability to only be displayed when a certain bit of PHP evaluates true (for instance, do not display help if system_compact_mode() is TRUE).
  • Reduce reliance on "modularity" - just as we have different views of /admin, we should retain our current "by module" view of /admin/help but create a topical set of embedded help texts that we use as the default. "How to create new types of posts" or "How to enable comments on my posts", etc.
  • Glossary - build in a cross-referenced glossary of definitions and related concepts.
  • Enhanced linking to d.o. - create a more finely-grained system of cross-references between the embedded help and the online handbooks.
  • Sexy it up - a little styling on help text, along with some appropriate graphics and icons would go a long way. Use jQuery to hide or show help text depending on the user's needs.
  • Context-sensitive - we should do more of this than we do. An icon in hard to understand FAPI descriptions that retrieves a longer explanation and examples in a way that doesn't destroy the page data (by navigating away), for instance.
  • De-jargonify - We've made progress here, but there is still a long way to go.
  • Creative UI - Use our existing interface in creative ways. There are some ongoing experimental patches using jQuery to create in-field "hints", etc. Even not-quite-as-creative tooltips could help.
  • Increase consistency - We've made improvements in consistency, but still have much to do. I really think that terms like "node" are not that problematic as long as we use them consistently, appropriately and with the right definitions.
  • Dynamic content - As mentioned above, delivering embedded help through something like l10n_server would be nice, but presents some problems in terms of providing translations. Like plans for strings translated through the l10n_server, it would be nice to get feedback from users in the field when a help text snippet is difficult to understand.

Sexing it up

starbow's picture

Speaking of sexing up help, at the AJAX Popups BOF, we were talking about using the help system as a test case for the ajax popups (maybe with tooltips-like positioning for context help). I particularly like the way the Teleport module combines an ajax popup with an autocomplete textfield for navigation. I bet a similar approach could work really well for querying the help system without leaving the current page.

I was hoping you would stop

keith.smith's picture

I was hoping you would stop by and say that.

I've been following your modal work with great interest, in the hopes that it could be subverted into serving up help text!

Oooh nice list!

yoroy's picture

Glossary, Enhanced linking to d.o., De-jargonify, Reduce modularity and Increase consistency could be bundled into a documentation project

Positioning of Creative UI with Context-sensitive Sexyness sounds like a very worthwhile development project.

Another idea

cwgordon7's picture

Here's another idea. Don't include help at all, but write a framework so help can be dynamically grabbed from drupal.org. This could be done through xml, similar to update status; the results could be cached, so this would not be so expensive on each page load.

That's a nice idea. At the

catch's picture

That's a nice idea. At the UMN testing we discussed having a flash video embedded in the welcome screen, but hosted on d.o so it's not subject to string freeze etc. Help texts the same way would be pretty nice - it'd need to deal with translated help texts of course but I guess translation got easier as well.

Keith: - very good list. I agree that words like "node" aren't the problem - the hardest concepts for people were 'page', 'block', 'story', 'content' which are all supposed to be friendly terms.

I agree with this 100%.

morphir's picture

I agree with this 100%. But,

Cached, yeh - of course.
But query as often as update status does, I don't think that is necessary.

This idea (w/xml) + the kinda help tab that launchpad offers. I'm sold ^^

Tutorials or Flows

boombatower's picture

Something like tutorials or flows would be neat. They talked about how users liked the beginning page of Drupal that has a list of steps.

Something that would list out steps for different tasks. This would have to be module independent and could come as a formatted text file or something like language pack or w/e.

A page with questions or tasks could be displayed in the help section and could link to the step my step "flows."

I think that would probably the most useful and would require the least amount of work in terms of code.

Have a look at Eclipse IDE!

hailstorm@drupal.org's picture

Hi,

you all have great ideas and to sum it up I would recommend to have a look at the Eclipse IDE Help System.

Eclipse IDE lives by it's massive eco system of plugins just as Drupal does. And while their system is much larger and even more complex than Drupal they are/were facing the same problems. So over the years they came up with a very nice and rich featured help system.

One feature I liked from the start are the so called "Cheat Sheets". Think of them like inline help for modules (Eclipse plugins) presented in a collapsible block. What they do inside Eclipse is to guide new users when adding a new project, set up your cvs connection, helping you build your software project, displaying help files or just links to resources. Cheat sheets do this in a very intuitive way. They can act like a step by step quide, they can present context sensitive information (help, tips and tricks, getting started), and they link to internal and external references and resources.

So in the Drupalverse we could provide "Drupal Cheat Sheets" that help users set up Drupal step by step like in a wizard. Or think of adding a guided tour presenting all the relevant sections of Drupal. With the help of jQuery this can be a rich user experience.

As an real world example, I would love to see such a module when entering content with a filter like textile or markdown. Most of my clients like textile but they are constantly asking for help how to create certain styles. Adding information about the textile syntax in a sidebar Drupal Cheat Sheet could be a consistent place for all kinds of filter (insert_block, insert_view, insert_node, etc.) syntax information.
Another area where Drupal Cheat Sheets could be handy is when you set up a module. Think of modules that present multiple lines of "help text" under each input field just to tell you that this input requires a certain format or is restricted 140 characters. Such information could be put into the cheat sheet block and displayed on focus.

I'm not that much into Drupal programming so far, but I guess it would be helpful to provide a hook_cheatsheet that allowes programmers to display help information for modules in a generic cheat sheet block? Another important fact is, the system is already invented, tested, used by millions of developers and based on XML. So it could be easier to implement.

This was one idea for a better help system in Drupal. I think there are tons of software solutions which dealt with the same problems Drupal has. And maybe we should have a look at how they solved it so that we can come up with a superb solution for Drupal 7+!

With best regards

Mike

A quick example

morphir's picture

Head over to launchpad and check out their help-tab. I like it:)

https://launchpad.net/ubuntu/

Google's help

mikejoconnor's picture

Check out the google adwords learning center.

http://www.google.com/adwords/learningcenter/

I think it's a great model for a help system.

Wizard view with help?

rpfilomeno's picture

Background problem: I had this site that uses a lot of modules such that when a user tries to create a story, lots of collapsible sections are present such that they tend to be confused.

Suggestion: I would rather have it presented in Content Creation Wizard fashion which guides user to each step wherein each step the additional settings for each module's hook_nodeapi is presented separately.

Then with each step, the help system loads dynamically the help content related to that modules (this is now possible because of ample page space available). Users can skip steps if no additional settings were needed, however the user cannot skip steps that are required.

Finally if the user is already familiar with the process, the help system can be disabled to speed up loading and will only be reactivated if a new module is added with a hook_nodeapi.

I hope my suggestion made sense, I'm still figuring how to describe the user experience properly.

wizards could be another project

catch's picture

Although wizards do get requested a fair bit by new users, the problem is that although a wizard might help the first time through something, it can really, really slow you down the second or third time (like clicking Next > Next > Next for ever on windows). I think that's possibly another GSoC project in itself.

Speed up with DHTML

rpfilomeno's picture

I think DHTML techniques can help by loading the each section of hook_nodeapi dynamically for edit and add ops. And the ability to skip steps is very important for advance users -- on a second thought, rather than steps 1, 2, 3 ... ets, a tab navigation for each section like Image, File, Gmap .. etc (per module).

Right now the add and edit views render all those section from hook_nodeapi as collapsible frame which add up to the load time eats up space. The idea is to make enough room that we can add the help system's content and the same time speed up that page loading for add / edit ops.

Alternative to Wizards

boombatower's picture

As I mentioned above, I think "flows" is a good alternative to wizards. It points the user in the right direction, without holding their hand. This will prove beneficial when they move into performing the task without help.

Help system usage

keith.smith's picture

Catch, will you or webchick or someone else who was at the U of M usability sessions, write up a short synopsis of how the participants used the existing help system?

  1. Is it fair to say that they read everything on the screen (I've heard that in a few places but want to confirm it.)
  2. Did they find their way to /admin/help at all? What did they do when they got there? If they actually made it to a specific module's embedded help, did they read the entire thing true or just browse/skim?
  3. Did the eyetracker catch what would appear as someone reading things over and over again, as if they were trying to comprehend the text?
  4. Could you tell to what degree FAPI form element descriptions were read?
  5. While at a module help page off /admin/help, did anyone use any of the available links on those pages to jump to an admin screen?
  6. When at a admin screen, did people use the "More help" links at all?

Other thoughts?

Edit: switching to an ordered list to match up with catch's excellent responses.

Yes, everything. Some did.

catch's picture
  1. Yes, everything.
  2. Some did. A lot of them clicked straight off again because they couldn't see anything about 'content' or 'forms' or 'fields'. I think some clicked through the help texts but mainly skimmed.
  3. Yes - especially when people got confused between node/add and admin/content/types - and the admin/content page I guess
  4. Not all that easy, but some people read pretty much everything in every fieldset. Some were skimmers.
  5. Not that I remember
  6. Not that I remember.

Yes, but probably not tonight :)

OK that took a while to get

catch's picture

OK that took a while to get back to.

Some more observations from UMN:

At least one person (maybe 2-3) used hover tips a lot - titles on admin menu items etc. one person complained that there weren't enough.

People read down the page, not across. So they want to read and do tasks vertically. So having more help interspersed (in a clean and optional way) near actual fieldsets and the rest might be a big win.

People either looked for a search, or tried to use Drupal's built in search to find stuff.

And they really do read almost everything on the page.

I had a discussion recently

birdmanx35's picture

I had a discussion recently with someone about a program which was extremely daunting at first, but included some basic tutorials at the beginning. After watching a couple of those, he immediately felt much more comfortable in the environment, and could find things quicker; ultimately, he kept using the program.

I feel like we should do that for Drupal ;)

We should, but this is summer of *code*

webchick's picture

So we need to talk about what API-level changes we can make in order to make such a system easier to implement. Making tutorials and videos is unfortunately outside the scope of what SoC projects can be.

I just posted this issue

AjK's picture

I just posted this issue http://groups.drupal.org/node/9842

Maybe it's something that could be done/incorporated as part of this?

Lots of good ideas here...

cwgordon7's picture

Let's try flushing this out into a project proposal. :)

Proposal proposal...

jbrauer's picture

Staring with some of the things here and some thinking and discussion here's a proposed proposal for a coding project:

Drupal's help system is fairly incomplete. At drupalcon there were many examples where the lack of a help system contributed to its usability woes. This project aims to enhance Drupal's help system through a pluggable, extensible help system API.

Drupal Help should:

  • Provide help for any Drupal path by adding a suffix to the path (perhaps /help)
  • Identify a "provider" site for help documentation... defaulting to drupal.org
  • Provide a server implementation for serving help documents based on the area for which help is being requested.. this should query down the Drupal path using a system like the theme system where modules can override the response or pass it along if they have no response
  • Provide a glossary functionality where key terms can be identified and automatically linked in help text
  • Be configurable but come with simple defaults
  • Cache help system locally on either a "grab x help items per cron run" or cache item on request depending upon local setting
  • Add links to help throughout Drupal where it makes sense (i.e. help links for each item on the various administrative pages
  • Provide for delivery of help videos, wizards, flows
  • Provide for help along side content it pertains to
  • Provide a framework for accessing help documents in a task-centric manner (may be the same help as the context-centric general model with a different outline)

Difficulty: Medium

Mentors: SIGN UP HERE

--
Blog: Adding Understanding | Drupal Developer Search | Drupal Services: Brauer Ranch

similar proposal

jbrauer's picture

Moving a similar student proposal here for wider viewing:

The help text all over the Drupal administration, to much extent, mainly remains a part to boast about as a feature. The help text is unable to provide immediate help on common implementations. It provides an overview of the terminology used and possible features on a administration page/form.

For Google SOC this year, I'm proposing a revamp of the Help System in Drupal. We currently provide an overview of features on that particular page, but not answers to commonly asked questions or attempted implementations. Read on for my proposed goals targeting this.

  • Infrastructure for help system to refer from external sites.

    • Official Wiki-like Help content registry at, say help-server.drupal.org which can provide more in-depth and task oriented help topics, providing an administrator quick help without hoping around the handbooks.
    • Ship with default help contents, for the core modules.
    • Help wiki may maintain help content for each version of core as well as contributed modules.
    • Unofficial Help content websites may exist. Possibly opens doors for future commercial implementations.
    • Cached Help content/material.
  • Unbind the help material from the content of a page. Theme designers shall be able to request the help material on a particular part of a page using a themed $help PHPTemplate variable. Some of the possible places for help material can be:

    • Inline help above the page’s content. (As currently implemented).
    • In regions, as a block.
    • Separate page linked by a Tab, Button etc.
    • Modal popup window, etc.
    • Possibly ship with theme_help_popup(), etc. including theme_help_layer() theme_help_inline().
  • Revamped Help page in administration.

    • Portal like Help topics overview page.
    • Two columns layouts.
    • Index of in-depth help topics fetched from help registry.
    • Help Search.

Basically, the more in-depth articles are handbook tutorials, available quickly to the user within the administration pages. Maybe, instead make the book.module compatible as a registry. The help on the top of a page can link to contextual help topics after a quick and dirty search. There's also room for a separate help file for modules like example.help which may contain help material. But then it's going to implement hooks using PHP, so more or less it can be implemented from within the module itself. Maybe it can stay as optional to keep the help text clutter separate from actual code.

New comers to Drupal are unable to put in the right keywords for searching a particular way of various common tasks, or simply they get lost. Such a revamp can mean a lot when targeted at new administrators/adopters who tend to learn as they use it.

--
Blog: Adding Understanding | Drupal Developer Search | Drupal Services: Brauer Ranch

Well, this was a student proposal..

webchick's picture

We can't grab student proposals and use them on our ideas list. ;)

However, I'm going to go ahead and put your text up, as it sounds pretty good, and will at least get people started.

I wasn't entirely sure what to do here....

jbrauer's picture

It started as a community proposal and a similar student proposal was submitted... should we not post it on d.o and leave it to the student who posted it? I don't want to be unfair to anyone..

--
Blog: Adding Understanding | Drupal Developer Search | Drupal Services: Brauer Ranch

I agree

cwgordon7's picture

This was a community proposal. Another student cannot submit a practically identical idea and expect the entire proposal to be reserved for them. This belongs on d.o.

I would like to tackle this

rohanroy's picture

Hi everyone,

My name is Rohan Roy and I'm a relatively new user of Drupal. However, I come from an extensive PHP/C++ background and would love to tackle this issue. I'm somewhat overwhelmed with all the discussion going on about this, where do I go to submit a proposal to work on this specific issue?

Thanks!

-Rohan.

Please see

cwgordon7's picture

Please see http://groups.google.com/group/google-summer-of-code-announce/web/guide-... for instructions on how to apply. Glad to see some more interest in this!

Cool

ximo's picture

This is a proposal that deserves some love :)

You only have 2.5 days left till the deadline, so my advice is that you talk to developers about this project sooner than later and get feedback on your application. You'd want it to be as good as possible, and it's not always clear what they'll be expecting.

See also HOWTO: Write a Summer of Code application.

The best of luck! :)

Excellent! As well as those

catch's picture

Excellent!

As well as those links, you can try on #drupal in irc.freenode if you have any quick questions about this.

Unfortunately with School I

rohanroy's picture

Unfortunately with School I haven't been able to discuss this proposal as much as I would have liked too, but I have chosen to send in an application anyway. I think with what I've read both here and related pages, and also reading through the Drupal help files (and struggling to understand them, before having discovered those awesome handbooks on d.o,) I can submit an application somewhat tuned to what the community needs and desires.

The deadline is today! Wish me luck!

Usability

Group organizers

Group categories

UX topics

Group notifications

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