Problem/Motivation
We need a better in-line Help system in Drupal. Currently, we have hook_help(), which has many problems:
- In code, so not editable by docs people (mostly)
- No navigation or searching
- Not flexible enough, really only good for the main module help page and some contextual help, so some contrib modules use other systems (such as the Advanced Help module).
- Not easy to add site-specific help
- Can't really view it outside of a Drupal site, so we've duplicated it in the drupal.org help
- Not cross-linked
Proposed resolution
The proposed system is described in full on this page:
http://drupal.org/node/1095012
The main components are:
- Help topic entities (fields and topic types)
- Conditional text (one topic can cover various audiences and various Drupal/module versions)
- Linking (topic to topic, Drupal page or field on page to topic, bi-directional)
- Navigation and searching, including a glossary
- Client/server to import official help topics into your site
- Flexible outlines (can build outlines specific to your Drupal site)
Remaining tasks
Here is a list of the tasks that need to be done to accomplish the goals/specs outlined on
http://drupal.org/node/1095012
- Conditional text - define conditional text plugin structure and have an input filter for displaying conditional text. This was created as a 2011 Google Summer of Code project by Yorirou, and is now the Conditional Text project. We probably need a few additional features added to it (see conditional text issue queue).
- Help - would define the Help Topic entity, the Map entity, the topic types and their fields. It would also handle the contextual links. It would associate the module overview topics with the module (like the existing hook_help system). And it would have options for display, such as hiding topics by the Permission field vs. showing all topics. Status: Carolyn is working on this in sandbox: http://drupal.org/sandbox/carolyn/1342818
- Map/Outline Builder - user interface for building Maps. There are several options here. One is being worked on and discussed by Itangalo and others on #995370: Want the ability to create multiple outlines/maps, and there is also a related issue at #5901: Let a book page appear in multiple books. Several other people have working prototypes of this too. We probably just need to pick one and make sure it has the features we need, and is as simple as possible.
- Glossary - would build the A-Z glossary and have a text filter for pop-up glossary links. [Status: Need someone to work on this!]
- Updater Client and Server - Server would live on help.d.o (not a core module probably) and export the help docs. Client would be a core module and would let a site builder pull in docs and be notified when new docs are available. [Status: People have expressed interest in working on this, but I haven't received any updates.]
- Workflow - For the help.d.o site itself, we would need an editorial workflow module, which we would hopefully be able to accomplish with the Workbench and or Revisioning modules (with some custom components probably?). For instance, we probably want to allow people to freely edit topics, but we probably don't want their revision to become the main published revision until it's been reviewed (we need to be careful, because at least some of the topics will need to be translated) (probably all?). We might not want people to freely create topics, because we want to keep the size of the site under control. This is being worked on: issue - #1283496: Help/Docs system: editorial/translation workflow and permissions
User interface changes
- New UIs for building outlines, writing help topics (essentially like node/add), defining conditional text filters, help navigation/searching, and importing help topics from server(s)
- Remove existing help user interface (such as it was)
API changes
- No more hook_help()
- New API for putting contextual help links on Drupal pages
Original report by jhodgdon
This issue is to start a discussion on how the in-line help system could be improved for Drupal 8, independent of what was discussed for Drupal 7, as a replacement for the current help.module system.
Just to be clear, there are several types of "help" that we can enumerate:
1) Contextual information and UI text, such as field labels and descriptions. This type of information is probably out of scope for this issue.
2) Longer pieces of contextual information, such as overall help text for a page, extra help beyond field descriptions, expanded information on input formats, etc. This type of information should have some kind of show/hide functionality or it could pop up when you click on a ? near a field. This type of information is probably within the scope of this issue.
3) Long, detailed background information and how-to information. Some of this may belong on drupal.org rather than inside the project, or it could conceivably be in both places (if d.o or a separate help.d.o had a way to display this information from projects). Ideally, this information would have navigation features (search/sort/hierarchy?) and linking (cross-linking between documentation items, and linking between site pages/form fields/page elements and help items). This type of information is definitely within the scope of this issue.
The system that is designed (besides features stated above) would need to satisfy these requirements:
a) Allows non-programmers to edit the in-line documentation for Drupal (core/contrib) and contribute it back to the project.
b) All help text needs to be translatable.
c) Help text should to be able to contain HTML-type formatting.
d) Whether we want PHP logic included in help is open to question. Some of the hook_help() implementations in Drupal Core currently use PHP to do things, such as to generate a list of links to your installed Fields and their help pages.
Let the discussion begin...
Comment | File | Size | Author |
---|---|---|---|
#102 | advanced help injector - path granualrity.png | 16.51 KB | Itangalo |
#50 | Core_Conversation_Help_Needs_Help.pdf | 694.88 KB | jhodgdon |
Comments
Comment #1
arianek CreditAttribution: arianek commentedsubscribe
Comment #2
redndahead CreditAttribution: redndahead commentedA few comments.
1) One of the places where d.o. documentation has faltered for me is being able to add screenshots. I would like the help system, no matter how it is implemented, to be able to allow for screenshots in tutorials. Currently I have non screenshot versions on d.o. and screenshot versions in advanced help.
2) As a module developer I would like to have official help. I would prefer the help that is inside my modules pages not include all pages that people have added under my d.o. user documentation.
3) If you have php in your help documentation how would that display on d.o.?
Comment #3
jhodgdonRE #2:
1)Adding screen shots to d.o documentation is a completely separate issue:
#950414: Provide an inline filter for placing attached images into text areas
Are you suggesting though that images be allowed in the type of documentation being discussed here (in-line within projects)? Because if so, we would also need to have the ability to "translate" the images as well (make screen shots with foreign text on them). Images sound like a good idea for a requirement.
2) Agreed, if the doc is editable easily by anyone, we would also want maintainers to be able to choose which is "official".
3) No idea, just brainstorming requirements here so far. That could be a point against having any PHP embedded in the doc. Maybe for instance that page listing all your fields would not be part of the "help" system, but a separate admin UI page (like it was in CCK), and maybe that page could link to the help system pages for the fields if the help system is enabled? Probably solutions like that could work for most/all of the cases where we think we want PHP in our help files.
Other things we are using PHP for in hook_help() in core that I'm aware of:
- translating with t() - our translation system for help will possibly do something different
- arguments to t() such as variable substitution - but these are mostly misguided I think. See #1021852: Variable substitution in UI strings - only where absolutely necessary
- making links with l() and url() - so if we had a way to make internal links this would not be necessary.
- block_help() has some logic to make a link to a demo page. Not sure how this type of thing would be handled.
Generically, a lot of the help in the core hook_help() functions right now describes things to do and links you to the admin pages within your site where you would do those things. None of those links will be useful if the help is displayed on d.o. But they are quite useful if the help is displayed within the site. Something to consider...
Comment #4
yoroy CreditAttribution: yoroy commentedI want to work on improving things for 1) labels & description wich indeed are a bit different. Especially labels, those are essentially *are* the interface itself. Descriptions should be largely task driven copy, but definately room for helpfulness as well. We can improve a lot there by rewording labels for consistency and descriptions for task-focussed brevity. Out of scope for an issue about a docs-driven help apparatus, but the boundaries are blurry. (Also: think showing contextual error messages next to the actual field in your form. Is that help or?)
Lets not forget to keep a focus on how a new help system will *actually improve the overall admin/config experience* for builders/configurators (&devs &docs etc.
We should try and get a good phrasing of the question before giving answers :)
The 3 types of help you sketch are a helpful framework for thinking about that.
From labeling a single checkbox to pulling in content or links from d.o.
What kind of architecture does core have to provide here?
/end subscribe sketch ramble
Comment #5
jhodgdonYoroy: This issue is not for discussing UI text, or for a discussion of what the help should say, or how much depth it should go into, but for a discussion of what we need in a help system for the larger pieces of help. Feel free to file/link other issues. :)
Comment #6
jhodgdonA documentation translation standard that might be more useful for larger doc items than PO:
http://en.wikipedia.org/wiki/XLIFF
Comment #7
emmajane CreditAttribution: emmajane commentedsubscribe
Comment #8
catchSubscribing. Would be great to kill filter tips as part of this effort (even if it's a followup patch to the main one):
http://api.drupal.org/api/search/7/filter_tips
Comment #9
jhodgdonHere's a new summary:
In this issue (at the moment), we are interested in defining a specification for a system to be implemented (hopefully) in Drupal core, which will allow Drupal core and contrib modules to provide large chunks of "help text" documentation (as opposed to the small chunks of help that for purposes of this issue I will call "UI text". UI text is adequately handled by the form/render API, PO files, t() at the moment, or if it isn't, at least that is a separate issue). [See original issue report for a list of what types of information could be considered "help" -- we're talking about items 2 and 3 from that list.]
Needed features of this new system (sorry if some of these are a bit redundant with each other):
http://en.wikipedia.org/wiki/XLIFF might be the right standard to use for translation of larger chunks of information? PO files are great for UI text, but not good for larger text chunks.
Comment #10
sunWe need to differ between
#description
s, but much less than a full help page)We need both. It sounds like this issue is trying to focus on help pages.
I fundamentally disagree with bullets 2-4 of the summary in #9. That's the design idea of the Advanced Help module, and while its general mindset is a step forward, it didn't gain the momentum and adoption throughout the Drupal community that it hoped to, and here's why:
A project should document its code, provide an intuitive user interface/experience, and expose contextual interface help. Issues are the wrong place to discuss help pages and documentation. Patches are the wrong tool for people who are able to document.
The idea that help/documentation must be directly tied to project releases is completely flawed. The situation is identical to translations. Most help/documentation is written after the fact, when people try to use, implement, or integrate something. Help/documentation has to be attached to major versions of a project.
It's fundamentally wrong to freeze documentation. Help pages are living documents that constantly evolve over time, at any time, through contributions by everyone.
...and files are the wrong interface for help text in the first place. Help is content, and content is what needs to be translated. Translators need a proper and simple interface to diff against the original/source, be notified about updates, and any other feature that is only common for translation management. There's nothing to re-invent here, it already exists and will be enhanced over time.
We need to think modern, think Wikipedia. We need to remove barriers for writing, contributing, and translating help and documentation. Everyone needs to be able to contribute, regardless of skillset. Forget about everything that involves code, files, and patches - it's the completely wrong tool for the job.
Comment #11
jhodgdonYou make some good points, sun! Let's think about this some more and write a better spec than #9 (which was meant to be a work in progress, though I may not have stated it explicitly).
But one thing I think we need to figure out is (a) what should be hosted within each Drupal site vs. in a central location like on drupal.org and (b) the balance between "everyone can contribute" and "this is the official documentation".
We already have wiki-style documentation here on drupal.org, and it's pretty easy for people to edit, much more extensive than internal Drupal help, more flexible, and less quality-controlled. I don't think we would want to have the full d.o handbook included within each installation of Drupal... However, some modules (views/advanced help) have taken the opposite point of view, and try to include their complete documentation within their project distribution.
I also think there is a place for documentation that undergoes a review process and is not "committed" or "blessed" except by project maintainers -- see #2 for a concurring opinion.
So what do we want? Where do we draw the line, and how do we differentiate the "official" documentation that we would want to distribute/embed in a Drupal site from the big wiki on d.o that is freely editable by anyone at any time?
Comment #12
sunAlso note that translations of help/documentation are even more detached and disconnected from project releases.
» Flag
Most project maintainers sadly don't give a shit about user documentation, so most "official" documentation is going to be "official", because the community agrees that it is correct.
Project maintainers don't have to be forced to be involved in this process. Why should I have to approve a typo or grammar fix? Why should I care at all? Why don't you (not you) just simply document the hell out of my project? Ask me to clarify details when needed, thanks.
» This is commonly called Export and means a (un-editable) snapshot/copy of online documentation content that can be generated at any time on any given date for whoever needs it. Of course, tailored to your actual site. Download, extract, switch the documentation server URL to your own site, done.
Right. However, this kind of help/documentation system requires a custom content structure, supporting cross-links and relations, heavily improved content editing features, as well as content translation management. Thus, think help.drupal.org.
Actually, I wanted to kick-start a first version of this system on a custom site/domain last year already, extracting and merging in the best ideas out of Advanced Help and DITA, and developing the remaining parts; but quickly figured that this requires D7, so deferred it until release.
Comment #13
jhodgdonsun: It sounds like you are advocating that all of the large-ish help text (anything bigger than UI text/descriptions) in Drupal be maintained as a flagged subset of the drupal.org handbook (with some new cross-linking features), and then that we would have a mechanism in place to translate this subset of the d.o handbook, and a way to pull relevant (relevant = module/version/level of detail/level of expertise?) subsets of the translated d.o handbook into a Drupal site. Is that a fair characterization of your idea?
Also: What I'd really like to do before we talk about specific implementation suggestions is to nail down the specifications of what we'd like the system to do for us. I made a draft spec in #9, and sun has taken issue with items 2-4 in that draft. I'd like to see a substitute for items 2-4 that sets out the requirements for management/translation that you'd like to see in this system. I just don't think we can evaluate specific plans for implementation until we've decided what the criteria (specifications) are.
Comment #14
jhodgdonActually, the more I think about what sun is saying in #10/#12, the more I like the philosophy.
We recently switched from developers taking responsibility for managing translations, to language-specific teams on localize.drupal.org taking responsibility for managing translations, and having a mechanism for pulling them into a Drupal site. And that was a Good Thing.
What sun is thinking about (I think) is a paradigm shift for in-Drupal large documentation as well: that we make the Documentation team responsible for managing documentation, and have a mechanism for pulling that doc into a Drupal site.
We can't really do that if we think of the documentation on drupal.org as being limited to English-language Book nodes as it is now, or if we think of the documentation in Drupal as being in files checked into version control systems. We would need a system that satisfies the other needs (as outlined in #9, items 1 and 5-9, or whatever we decide are the right specs). But I'm sure that this system could be built in Drupal.
Interesting paradigm shift...
Comment #15
redndahead CreditAttribution: redndahead commentedI always envisioned there being 3 download links on a project page. Module, Documentation, Module with Documentation. For me I would like the documentation downloaded from there to be something I approve. I don't want it to be whatever is located in the online documentation that anyone can edit, because wrong information could be in there and I feel responsible for whatever comes downloaded with my module.
What I would like to see for help pages:
A website created where users could edit the documentation. ex. help.drupal.org
A specific module would be located at help.drupal.org/module_name
Translations would be help.drupal.org/module_name/fr/... Not sure if the existing translation would work or make sense since these would be huge chunks of text.
As a maintainer of my module I would be able to mark (flag, taxonomy) a page as official.
On a nightly build or when the maintainer asks for a build a tar file is created of all the official documentation. A user would extract that into mymodule/docs and then it would appear in the help system.
Obviously a lot more details are required to implement, but that's the general idea.
Comment #16
jhodgdonThere's obviously a difference of opinion here between rednahead (let the project maintainer control the doc) and sun (let the community and/or doc team control the doc). So perhaps we need to have a per-project setting that would let people choose between one or the other, or designate who can edit the "official" project documentation and who can flag a revision as "official" for a particular branch/version?
Regarding translation: ideally the translations would be managed by the same translation teams that are already formed on localize.drupal.org, since that is Translation Central, and ideally via the same interface they are already using (with whatever extensions would be needed). There is already a system there for team members to "suggest" translations, and for the team leadership or editor role to "approve" the translation. Also discussion boards and other tools translation teams need. Then somehow the translations (along with their approval states) would need to get to both drupal.org or help.drupal.org or wherever the project help is available for on-line display, and to Drupal installations that are running help.
Comment #17
redndahead CreditAttribution: redndahead commentedJust in case it wasn't clear I am happy for people to edit the docs. But I would like to be able to create snapshots of a documentation state and mark that official. Kind of like node/111111 revision 245 is the official one. Then it can still be worked on without having to potentially have incorrect information on the end users site.
As far as translations are concerned unless there are official snapshots I think translating documentation would be a nightmare. It would be like translating drupal core without a string freeze. Doesn't sound fun.
Comment #18
sunNot at all. We're not talking about t()/.po-file strings that entirely invalidate all of your existing translations when being changed. That's why we have and need a string freeze for t() strings. Not required at all for multilingual content within a system that provides common content translation tools.
Comment #19
redndahead CreditAttribution: redndahead commented@sun if you have a help page and you don't have a snapshot for translations if a page gets changed once a week wouldn't that page need to be translated every time it gets changed if you as a translater think each change is final? Wouldn't it be annoying to translators to do that?
It seems to me if I was a translator I would rather wait for the documentation to be determined to be completed by the maintainer before doing the translation.
Comment #20
sunNo, content translation systems support a notion of marking translations as outdated, if required. The author who updates the source decides on that — if you fix a typo or some grammar or just formatting, no need to mark translations as outdated.
Additionally, translations don't necessarily have to be up to date at any point in time.
Overall, translatable content follows entirely different workflows and rules than t() strings. Drupal 7 set the foundation to properly handle translatable content in fields. Previously, we had the clusterfuck of creating separate entities per language, which required to build entirely separate trees of content, ensuring that cross-links between contents are actually valid, and all kind of related nightmares. With D7, the notion of translatable fields is in core, and the contrib Translation module exposes the corresponding UI for them. There's only one canonical content, which contains field values that can be translated — a fundamental requirement for large-scale documentation sites that are driven by volunteers.
Comment #21
jhodgdonWe would need to have a way for translators to know that pages had been changed, view diffs, etc. And probably require log messages (and encourage meaningful ones). But sun is right: the reason we have to have UI text string freezes is that t() takes as input the English string (as we currently have it set up), so if that changes, the translation (which is indexed by the English string) won't be found.
Comment #22
catchI like the idea of keeping the longer documentation on Drupal.org (or help.drupal.org/docs.drupal.org - fully agreed there would need to be dedicated docs subsite to really make that work).
There was a real effort in Drupal 7 to improve the content and standardize the main hook_help() pages, but that was a last minute effort that had people not sleeping for days, and in the case of a lot of modules, needing to remove huge chunks of outdated text in favour of standardized linking to Drupal.org
I can't find the issue at the moment, but at one point people were discussing having a welcome to Drupal 7 video embedded in the default profile (i.e. hosted on Drupal.org, but viewable directly in new installs), that's something which this might enable as well.
It seems like people are talking about three things in terms of what happens though -
1. Moving the docs to help.drupal.org/project and linking to it.
2. Moving the docs to help.drupal.org/project and including some kind of help browser in core, dependent on the live content on Drupal.org.
3. Moving the docs to help.drupal.org/project and exporting that back to version controlled files that could be included with module downloads.
For #3 there is already http://drupal.org/project/helpinject written for that purpose, and it's not mutually exclusive with #1 and #2 (although all #2 and #3 are mutually exclusive in terms of what might be added to core).
Comment #23
jhodgdonI don't quite like any of the suggestions numbered 1/2/3 in #22. What I think we want to happen is:
4. Moving the doc creation/translation/editing to help.drupal.org/project. Having a way to browse/search/view doc on help.drupal.org. Having a way to import doc into a Drupal site for local browsing with context/linking (e.g. links from doc pages to admin screens on your site).
I think that rather than version controlled files, we want to have a way to mark doc revisions as to which branches and/or specific releases [releases may be important for contrib] they pertain to overall, and we also want to have a way to single-source doc that pertains to multiple branches/releases. (See also #995362: Conditional Text ability needed for book pages.) The idea would be that we wouldn't necessarily have to be version-specific. For instance, building menus in D6 is pretty similar to D7, so we could have one "building menus" doc marked as compatible with both D6 and D7, and in the text there would be some sections marked as D6 and others marked as D7. If you're browsing help on help.drupal.org, you'd be able to see all the text sections (collapsed fieldsets or something similar, maybe with the current branch's fieldsets open by default?). If you're browsing help on your local site, only the text relevant to your site's versions would be open.
Comment #24
jhodgdonI also woke up this morning concerned about the way translations are managed in D7, where each node contains all the translations (well technically, the fields have translations, but all translations of the fields are connected to the same node, unlike in D6). I guess I don't understand the merits of this philosophy with respect to node revisions.
Can someone explain to me how node revisions will work with all the translations being on the same node? In D6, if I updated the English node, then there was a way to tell the translations were not up to date (because you'd know that a particular revision of the translations was older than the most current revision of the base node). In D7, is it possible to tell whether a node revision updated the English version or one or more translations? Is it possible to separate out the revision history for the base node from the revision history of the translations?
Because we are going to need to build a structure that translation teams can work on/with. They will need to be able to figure out when a doc has been updated in English, so that they know they need to update on their translation (probably seeing a list of revision log comments, so maybe if the revision says it just fixed a punctuation or spelling error, they don't need to update, for example). They will need to be able to have people propose translations of doc, and other people edit/verify/confirm those translations, and for the translation state of a particular doc translation revision to have some status associated with it (something like "untranslated", "previous revision was in a certain translation state but the current revision hasn't been reviewed yet", "translation proposed" when a regular team member makes a translation, "translation confirmed" when the team leader/editors have reviewed the translation -- similar to what we have on localize.drupal.org, and maybe others).
Can the structure of nodes/fields with translations/revisions in Drupal support anything approaching this?
Comment #25
sun@jhodgdon: The use-cases and workflows you stated are mostly common and the same for almost all multilingual sites. I'm not saying that the contrib Translation module provides all of these features yet, but well, that's basically the plan.
Comment #26
jhodgdonOK, good to know. I'm not an expert on translation...
Comment #27
jhodgdonHere's a new draft spec to replace #9:
http://en.wikipedia.org/wiki/XLIFF might be the right standard to use for translation of larger chunks of information? PO files are great for UI text, but not good for larger text chunks.
Comment #28
jhodgdonI also had some thoughts this morning about implementation, which are probably premature but I thought I'd post them anyway.
Modules would have a hook_help_info(), which would be for both contextual help and help topics, so maybe it would be:
The help context ID would usually be modulename_helpcontextname. I'm not sure if 'anchors' is necessary, but it could be a good place to list the anchors that are being linked to within the help topic, so that the doc team can make sure to put those anchors into the doc?
Render array elements would have optional elements to make a link to a contextual help item, and for help docs to link to anchors within the page:
I'm not sure if #anchor is necessary - when a page is rendered, are the page elements automatically given some ID by the rendering system that could be linked to from a help document?
Comment #29
jhodgdonOne more idea about specs (addition to #27):
Documentation items could be marked by the doc team as "essential" vs. "optional", or maybe they would have a taxonomy containing several gradations along those lines. The "essential" items would be the ones necessary for contextual help, and some basic topics like the basic page explaining what each module is. The "optional" topics would be further details, less common tasks, etc. -- still part of the core help, but not as essential.
A site builder could choose to pull topics into their site at some level of this taxonomy marking, and leave the other topics hosted on *.d.o. The help system would be aware of which topics were available in the site, and if a link was requested to a document the site builder hadn't pulled in, would automatically link to the *.d.o location instead (in the right language and everything). This could mean that they choose to leave all help external, or all internal -- their choice.
If someone pulled docs in, they might also need a way to be notified that new help docs or new translations existed on the d.o docs site. This could be similar to the module update notification page, and it could have a way to pull in the new docs.
Also on #28 - I think in this hook_help_info() the modules would only list their main module help topic (so it could be linked to from the modules list page) and any contextual help they are linking to from individual pages. Module developers would then leave it to the Doc team to define a hierarchy of other optional topics. If that's the case, maybe this taxonomy of optional/required doesn't need to be there -- "required" would be "listed in a hook_help_info()", and everything else would be optional?
Comment #30
joachim CreditAttribution: joachim commentedSubscribe.
And
> We already have wiki-style documentation here on drupal.org
No, we don't quite. I keep having to type things like HTML UL and LI tags, make links the hard way, and I can't rearrange the way content is structured. In a wiki, structure IS content. But all that's for another issue...
Comment #31
SKrossa CreditAttribution: SKrossa commentedA lot of the things I'd like to see have already been mentioned and are in #27 & #29. I strongly agree with the principle of better and more seamless integration of online and in-site documentation.
I'd like to see a few things added/emphasized, though.
First, in addition to site builders having (optional) control over what docs get downloaded to the local site (#29), the docs team and/or module maintainers should have (optional) control over what docs could be downloaded. I think it is important to allow maintainers who wish to vet site included documentation to be able to do so, as redndahead mentioned.
Second, it struck me when sun commented "We need to think modern, think Wikipedia" that rather than thinking Wikipedia, we need to think Drupal. Specifically, we need to think Drupal as in Views and CCK/Fields/Taxonomy/etc. sort of way. While I think the documentation book hierarchies are very important and necessary, especially for people browsing and unsure what to look for, we also need need additional structured ways to help people find all the information they are looking for. (Search just isn't enough -- ever tried to search for help on, say, Views permissions? Or Features?) We need to take more advantage of the relational databasey power of Drupal.
As an example (near and dear to my heart :-), I've recently been dealing a lot with permissions settings. This is information that should appear within every (core/contrib) module's documentation, but it should also appear gathered together somewhere under the rubric "permissions". It should also appear under "set up", and under "installation". In addition, people looking at help docs about specific recipes or techniques should also get information about the relevant permission settings, and that information is also needed by people seeking documentation about permissions generally, set up, installation, etc., etc. And so on.
So, especially as it appears on help.drupal.org/docs.drupal.org, we need to make more use of the power of Drupal to present the same information in multiple places in an intelligently automated way.
Further, we need to provide obvious guidance/structure to help those contributing documentation to get it to appear everywhere it should (free tagging just won't do it!)
From the discussion so far, and my own thoughts, it seems to me that the sorts of information/tags/flagging/whatever we need for documentation chunks includes (but I'm sure isn't limited to):
[Note that though I mention views/cck/taxonomy above, I'm talking general conceptual ideas here, not technical implementation suggestions.]
Third, there should be no in-site documentation that does not also appear on drupal.org. People should not have to install or even download a module (or core) to get access to all official documentation.
Fourth and finally (for now), documenters really, really need a WYSIWYG. Nobody should need to know any markup system, either HTML or wiki-style, to edit rich documentation text.
Comment #32
rfayI came late, but if I understand correctly, this has the problem of being overly controlled. Drupal's current help system and the help presented by the advanced help module are hopelessly difficult to maintain because only a few people even know how they can be maintained. Even less people know where the information is. And then if you search for it online (like all the info that is in the views advanced help) you can't find it.
My overstated opinion is that all help wired into the code has been a feeble failure, and I'd rather not go that way.
I do want a controlled, focused handbook. But I think it should be online, have translation enabled (per this thread).
Comment #33
jhodgdonI think that's where were headed with this rfay (see latest proposed specs in #27/#29)
Comment #34
metzlerd CreditAttribution: metzlerd commentedIf what we are talking about here is to create a site that users could contribute to that would be downloadable into the project and incorperated into the distro with the packaging scripts, then I think that is a great idea. Ideally, the hooks for it would be provided as part of hook menu, so that you could get context and permissions along for the ride, although it would be nice to embed as part of form rendering as well. I don't really want to see yet another hook for the module maintainer to have to write. My bet is that it doesn't get written.
One of the big barriers to online docs is that you have to fit your docs menu structure into the handbook structure. Ideally module developers would be able to provide docs that are tied to their major releases in contrib. That way there can be views 2 and views 3 docs that you could switch between to see how things are done. The navigation context would only be relative to the project and allow you to switch between versions ghat match releases.
I don't think all the stuff about point 8 seems overly complicated. Product documentation should match release versions. Let release management practices copy docs, but all this tagging seems like it will just be a jumbled mess. Let the d.o resident code have quick nav to other versions tagged the same way api.drupal.org works.
Input fillters could help proovide the nav between local copies and d.o.
Comment #35
arianek CreditAttribution: arianek commentedJust catching up here - I've been thinking a LOT about all of this in preparation for the core convo, and taking a step back from the specs, there are some questions/issues that keep coming back for me that I think we need to consider:
1. Consistency. More than anything, I think what will help the end users be better served by the help system content is for it to use a consistent method. The content in Advanced Help may be great, but it's useless if people don't know it's there. There should be a consistent place that everyone knows to look for all core and contrib modules' help content.
2. Core vs. Contrib. That said, I know that core and contrib have different needs/priorities. For core - part of the reason we keep so little content built-in is because of core string freeze (online docs can be updated anytime). This doesn't matter for contrib, because functionality can change wildly through minor versions and there is no reason not to keep updating the help text in code. But contrib has less consistent documentation and the community can't easily help improve that if the content is in code.
3. What is most efficient aside, how do we weigh the importance of consistency vs. having freely editable help/docs? Along the lines of rfay's comment #32 http://drupal.org/node/1031972#comment-4035164 I don't want to move to all of this being in code (even if it's easier for it to be consistent and controlled) because it will heavily restrict who is working on this, and that'd not good for collaboration (a good part of the day-to-day docs work is done by people who are not as technical, sure we can train everyone but it's still a barrier).
4. Essential or Official docs. I've been going back and forth on this, and there are obvious benefits to setting up a definition like this, *but* then who vets these and how? It could lead to a lot of unnecessary power struggles, and less collaborative work.
5. Help.d.o or Docs.d.o? If we have some kind of help server that allows us to update text through an online UI and push those into Drupal sites, how do we review/moderate changes? Do we pull straight from the online docs or have separate "help content"? Moving to docs.d.o is going to have fairly far-reaching implications for the rest of the documentation, so I'm inclined to use help.d.o but then we may end up duplicating efforts in the d.o/documentation.
6. If we have a help server, how do people get updated version of the content into their site? Is there a "update manager" notification?
7. Finally, I don't think that we want to make this implied to be the "responsibility" of docs team - contrib maintainers should maintain their docs, though anyone can help with that. But I think docs team needs to focus more heavily on keeping core (or any other deemed "essential" type docs) up to date as first priority, and then setting clear standards that contrib can use and providing support for contrib maintainers. (catch had interesting comments regarding this http://buytaert.net/drupal-7-development-process-retrospective#comment-3...)
Comment #36
jhodgdonA few comments relative to #35:
The point of this initiative is to remove ourselves from string freeze and from having the docs in code at all. Docs would be edited on-line and translated on-line, with a notification system so the translation team would know about doc updates that need to be translated. Since the docs are not part of the code any more, they don't have to be string frozen. But yes, we will need to have a way to moderate docs, since these will now be official sources. And the details of the "pull from docs server" process will need to be determined.
Also: agreed that the docs team will not be responsible for writing all the doc for all of contrib, but we might be responsible for maintaining the infrastructure and standards so contrib teams can write their doc.
Comment #37
yoroy CreditAttribution: yoroy commentedThis seems to be the critical point here, I'm just highlighting it as I suspect this is where consensus must be reached first.
Comment #38
cweagansI wrote about a new docs system on my blog at http://cweagans.net/blog/2011/1/31/building-better-documentation and at http://cweagans.net/blog/2011/2/2/building-better-documentation-part-2.
I'd like to see core docs included with Drupal, but I agree that they need to be removed from string freeze. I think that there should be some way to maintain the docs easily, such as a help.drupal.org site. But I also think that there should be some functionality in core that allows a Drupal installation to download an updated copy of the docs (perhaps to the files directory). I don't think this should use the Update Manager - I use help.module, but I will probably never use the update manager.
Another thing to consider is that there are a few types of documentation:
1) Developer docs
2) Site builder docs
3) User docs
I can see #1 and #2 being maintained by the documentation team. #3 is probably something that's specific to a given site. I know that I have built sites that are fairly complicated from a user standpoint - complicated to the point where using the site requires that the user reads the docs that were written for the site. That is, #3 would be docs generated by each site. I think we need to provide that capability for such a thing, but we don't actually need to write any docs that utilize the functionality.
Comment #39
dasjoi came here via #1056202: adopting localize.drupal.org infrastructure for drupal documentation
Comment #40
andypostsubscribe
Comment #41
acouch CreditAttribution: acouch commentedsubscribe
Comment #42
Itangalo CreditAttribution: Itangalo commentedsubscribing
Comment #43
sylvain_a CreditAttribution: sylvain_a commented+1
Comment #44
dstolsubscribe
Comment #45
kvantomme CreditAttribution: kvantomme commentedI'm in
Comment #46
Itangalo CreditAttribution: Itangalo commentedHere's an attempt for an architectural solution for help/documentation, as described throughout this issue.
Part 1a: The entity Documentation Page
This is the building block of help, both contextual help (type 2) and longer, detailed information and how-tos (type 3). It has the following properties/functionalities:
Part 1b: Documentation collections
Documentation pagers are put into tree structures with the help of a "documentation collection" entity. Though it is probably theoretically possble to let the documentation pages manage their internal structure themselves, it would be an epic mess trying to make this work when the same page can appear in multiple collections – and pages should be importable to Drupal sites individually.
Part 2: Documentation updater
To import help/documentation pages to local sites, there will have to be something similar to the Localization Update module. It will allow you to do the following:
Part 3: Embedding documentation links
I think a very good way of embedding documentation links is to use the Contextual links module, in D7 core. It allows adding contextual links to any part of renderable arrays in Drupal, meaning that you could add documentation to entire pages, selected form elements, blocks, field sets and what not. It fits well with our needs, and I don't think it is realistic to invent a new system that does what Contextual links does but in a better way. (If we find needs that Contextual links can't meet, it is probably better to extend Contextual links.)
The difficult part will be to have a parser that from information in each documentation page can find out where to add help links – which will be a #7 in part 1a above.
It is possible that we can learn something from how blocks can use path patterns for visibility settings, but I doubt that path patterns will bring more than a start to how help links should be managed. Currently I don't have any good idea for how to solve this.
Some additional comments
Comment #47
dasjothe architectural proposal by itangalo seems very good to me.
#7 in part 1a of course will be of interest
Comment #48
jhodgdonThis spec does not include some things we discussed at DrupalCon... I will be updating in the next few days, sorry for the delay.
Comment #49
Pasquallesubscribe
Comment #50
jhodgdonHere are some notes from the DrupalCon core conversation and BOFs -- and I've attached the slides from the Core Conversation as well. The notes here assume knowledge of the slides. Sorry about the roughness of the notes -- I just wanted to get them in here...
1) Besides letting people pull in help from help.drupal.org (or whatever the site is), the help system should allow site builders to add their own help pages, and to define one or more maps/outlines, so they can make a help outline for different roles on their site.
2) We probably want to use many aspects of DITA (Darwin Information Type Architecture) in the help system. Some notes on DITA:
- DITA consists of topics and maps. Topics are the pages, and maps are the outlines/navigation.
- DITA - allows you to reuse doc - even at the sub-topic level (although the basic piece of doc is a "topic").
- Core DITA topic types exist, or you can make your own subtypes - each is an XML schema basically. Core DITA topic types are: task, concept, reference.
- Kristof Van Tomme's existing "poor-man's DITA" module uses CCK/fields that can be used to generate the DITA xml. It basically builds fielded content types for each DITA topic type, which give you the right structure. It doesn't include all the DITA attributes or give you XML, but it's probably good enough for our purposes, and it imposes a good structure on doc topics. E.g. a "task" topic would have a title, an abstract (text area field), and one or more steps (multi-valued text area field). This aids you in writing good documentation, because it forces the structure and promotes making each topic a small atomic page.
- In DITA, maps are also XML - tree outline, plus cross-linking relationships that are specific to this map. You can also have external topics (links) in the map.
- DITA open toolkit - has tools for exports to various formats - these run as command-line utilities on the server, and could be useful for making printed manuals. That's a bonus if we can produce DITA-compatible XML from our content types and maps.
3) Context links in in-line help
a) Linking a help topic to an admin page on the site -- needs path, query, anchor, and a syntax for saying
"this is a link" - is there a standard DITA solution? For our purposes, this could be something like [link: text, path, query, anchor] and a text filter that turns it into a link appropriate to the site. (E.g. if we are displaying on help.drupal.org it is not useful to link to the admin screen, as most viewers do not have admin access!)
b) Contextual link on a site admin page to the help - see the Advanced Help Inject module - the idea is you make a unique ID for the help topic, and then you can make a php function to make a link to a UUID help topic (themeable, etc.). A topic should be small enough you never need to link into an anchor for part of the topic. Hopefully.
4) If we have the ability to make multiple maps in Drupal Core because we need it for help, also replace the Book module's maps with this. And perhaps the menu module could also be an instance of a map? Maybe not...
5) We need the ability to have conditional text in help. I think this would be a text filter. Some notes on what conditional text is:
- The basic idea of conditional text is to evaluate an expression, and display text if it's true. However, if displaying on help.drupal.org, we probably want to display all conditional text in fieldsets and let the user choose (possibly by cookie) whether to view or hide particular conditional text.
- We need Drupal-specific conditional expressions, like "module x is version y.z or more" -- we can probably borrow the parser for simpletest requirements? or drush make requirements?
- Some conditions are not module/version - they are other things like experience level, audience, database engine, web server, O/S, etc. Need a way to export the list of conditions we are using, and have the UI in help.module ask site builder which to display, which to hide, which to display conditionally (probably by role)
- In order to display as a fieldset - each condition needs a human-readable label on the condition.
- In order to display on a site -- want some of the things to be turned off automatically based on the sites setup; other types of conditions (e.g., "level" = beginner, intermediate...) you might still want to use fieldsets.
- Possible condition syntax -- insert something like this into the text:
[condition module views>6.x-3.x]text[/condition]
Kristof wants there to be a WYSIWYG condition inserter
- Should be able to set conditions at the topic level or on smaller chunks of text in a topic.
6) Help topics can have a permission associated with them. Such as the task topic for adding a new block should have the permission for adding blocks associated with it, so it isn't visible to people who don't have block admin permissions.
7) Some notes I made on how to implement the conditional text filtering:
a) needs to be a contrib module for 6/7 so we can use it for the d.o docs
b) each condition has a class (which would be the plugin class), a type (e.g., 'level'), and a value
c) Should be plugin based. plugins will define a class for conditional text. Methods: evaluate(type,value, permisssions) will return 'show', 'hide', or 'fieldset' to say what to do with the enclosed text given the permissions that have been set up (or that might be a value on the class?). list() will return an array keyed by type, and then some help text (such as a description of how to do views>3.2 or a list of possible values). permissions() [needs a new name] will return a list of view "permissions" to set by role. Each role/permission is a setting for how to display the types/values that are included in that permission by the plugin.
d) There are several cases for "permissions":
- example: module versions. On a drupal site, we probably want to hide any conditional text where the version doesn't match, but on help.d.o we probably want to show it all in fieldsets and not check installed versions, and there we might also want to have the fieldsets expanded/closed based on some cookies.
- example: user-entered properties (e.g., type:level, values: beginner, intermediate, advanced). In this case we might want to say that a given role means the condition evals to true or false. And then we would again say whether if the condition is true/false, we would choose between show/hide of the text, or using a fieldset.... so this case means that for user-entered properties, we would let config say by role which types/values evaluate to true/false, and then we would let them configure by type they've defined, what to do for true/false [either show/hide based on true/false, or use a fieldset independent of true/false].
- example: maybe some other module has a different way to define how to evaluate the conditions, so it might have a different config on that count. And then it can configure globally or on a per-type basis what to do (use true/false or use fieldset).
e) plugins can define types (e.g., cond text module itself will define an 'installed' plugin to deal with module versions, and a 'user-defined' plugin to let the user define types/levels).
f) plugins will define how to evaluate the conditions it defines based on their values
g) an input format takes care of the displaying
h) in text, you put [conditional:type:value]text[/conditional]
i) config for types/values: need a way to specify the labels for the fieldsets based on the types/values. the plugin can let this be user-configurable if the user can enter the types/values, or it can let it be defined by the module (e.g. for the "is this module version installed" type, the module might format the string based on the condition).
j) some plugins will need a way to let the user define the types/values.
k) we will also need a way to feed the types/values when we pull the help text in
l) maybe there should also be a validate that at edit time will check to see if the conditions are entered correctly? e.g. does the type/value exist, or is the syntax correct for module version? do input formats have the ability to validate the text? I am not sure, but maybe they do. If not I guess use watchdog or drupal_set_message at render time.
Comment #51
skowyra CreditAttribution: skowyra commentedsubscribe
Comment #52
jhodgdonI just thought of another feature that would be great to have in the D8 help system: A glossary.
Idea:
- We would have a small help topic type called "glossary item" that would have fields: keyword (which would essentially be the entity title), variants (multi-valued, giving variant forms of the word considered equivalent, such as plurals and synonyms), and definition.
- There would be a text filter that would find the keywords and variants in text and turn them into pop-up links or regular links to the glossary items. Presumably this text filter would only be turned on for help pages, but of course a site builder would have the ability to use it for other purposes.
Maybe there's already a contrib module existing that does this that we could adopt or adapt?
Comment #53
Itangalo CreditAttribution: Itangalo commented-1-
Nice idea!
I did some searching and found the following three modules that kind of do the second part of what you describe – http://drupal.org/project/glossify, http://drupal.org/project/linkintel and http://drupal.org/project/keyword_link. None of them have any version for D7, unfortunately.
-2-
Also, big thanks for the writeup in #50.
I talked a bit with kvantomme at DrupalCon, and I think the right approach to DITA is to find a field structure for help pages that we agree on – after that it should be possible to add DITA as an alternative render mode for help nodes.
Finding a field structure for help pages might not be very easy, though. But if we get it right it would allow better structure and better searchability for help/docs.
Comment #54
jhodgdonThanks for the detective work!
One note: I think we will want the help items to be their own entity type, rather than using Node. My reasoning is that they probably shouldn't have the same permissions as nodes, or the same ability to be part of the site-wide RSS feed, etc. So we will probably want to define a 'help topic' entity, and then have several content types within that: glossary item, task, and concept (the latter two corresponding to the standard DITA topic types).
Agreed on the approach of figuring out which fields are needed to define these entities properly. Kristof has already done considerable work in this regard in his Poor Man's DITA package/module. Which I think is CCK rather than D7 entities/fields, but the concepts are of course exactly the same.
Also agreed on DITA XML being an alternate render method for the help topic entities. Once they are rendered as DITA XML, there also exist the possibilities of using the existing DITA utilities to do all sorts of other things with them (print books, PDF manuals, etc.).
Comment #55
Crell CreditAttribution: Crell commentedSubscribing...
Comment #56
jhodgdonI've started a page in Community Initiatives which I think/hope contains most of the ideas above. Hopefully we can edit it into a good spec. I suggest:
- Typo fixes etc. - go ahead and edit
- Controversial changes - discuss here before editing
http://drupal.org/node/1095012
Comment #57
jhodgdonKristof: I'm specifically inviting you to fill in the sections on http://drupal.org/node/1095012 saying what the fields should be for the Task and Concept help topics. :)
Comment #58
plachComment #59
LeeHunter CreditAttribution: LeeHunter commentedsubscribe
Comment #60
Leeteq CreditAttribution: Leeteq commentedRelated background information exist in the long unresolved issue
"Help System - Master Patch" - http://drupal.org/node/299050
which was just updated to "won't fix" with a pointer to this issue here.
Comment #61
tamasd CreditAttribution: tamasd commentedI would like to take part of GSoC this year, and I would like to improve the help system. Is there any specific task what I can take?
I'd gladly do the conditional filtering, if someone can support me as a mentor. What do you think?
Comment #62
jhodgdonYourirou: GREAT!!! I would be happy to mentor you on the conditional filtering part of this project. The specifications for what we are looking for are outlined on http://drupal.org/node/1095012 in the "Conditional Text" section near the bottom, and I think it should be a manageable task to make a d6/d7 contrib module that implements these ideas as a GSoC project. It looks like you're already the maintainer of several modules, so I'm sure you have the background to do it. Let's proceed!
Comment #63
Bojhan CreditAttribution: Bojhan commentedCan we have a summary? I am lost where we define the problems, and where we talk about the solutions.
Comment #64
jhodgdonBojhan: Specs are being worked out on http://drupal.org/node/1095012 now.
Comment #65
Aren Cambre CreditAttribution: Aren Cambre commentedWhen I access help, I want the latest and greatest help.
Microsoft gets this: when I access help from Windows, Microsoft Office, or Visual Studio, I am taken to that latest and greatest documentation on Microsoft's web site. Any local help is only a backup in case the online help is inaccessible.
If I seek help from within my own copy of Drupal, I want to be taken to the latest documentation at Drupal.org. What I do not want is an archival copy of a portion of drupal.org that was snapshotted at the time of my Drupal version.
I feel that offline documentation for an online product is only addressing a niche need, such as browsing from an airplane or within datacenters with strong network isolation. Should covering those niches (offline documentation) be a contributed module? Wouldn't online documentation be far simpler to implement?
Drupal is about the online experience, the living web. Drupal should "eat its own dogfood": its primary help should be an online experience in the living web.
Comment #66
metzlerd CreditAttribution: metzlerd commentedNot quite true. (I just tested to be sure). When I search for how to do a mail merge in Word, I get the documents for word 2003 not for Word 2008, so what we want is major version contextual links. I've suggested this before but it doesn't seem to be making it into the design specs.
It seems that people are currently focused on more of the edge cases for this design work. The core navigational linking, (what the structure is on help.drupal.org and how we make sure people can navigate between major versions of help etc.) doesn't appear to be getting much attention at this point in time.
Comment #67
jhodgdonAnd Microsoft Office also has quite a bit of help that is embedded within the product, actually. So I think we can go either way, interesting idea... but making some kind of on-line browser that figures out all the right conditional stuff would be more difficult than doing it in a particular site, IMO.
Regarding #66 - if you have suggestions for what the "The core navigational linking, (what the structure is on help.drupal.org and how we make sure people can navigate between major versions of help etc.)" should be, please post them here. There is definitely still thinking to be done.
Comment #68
Aren Cambre CreditAttribution: Aren Cambre commented@metzlerd: I just opened up help in Word 2010 and searched for mail merge. I was brought to the correct document at http://office.microsoft.com/client/helppreview14.aspx?AssetId=HA10199082.... Regardless, alleged flaws in another vendor's product doesn't make online help bad.
@jhodgdon: MSFT's on-disk help mainly works when the web is broken. I use Visual Studio 2010 and don't install the on-disk help. I'm almost always connected, so it doesn't make a big difference to me.
The argument for offline Drupal help is incredibly weaker than with VS 2010. Drupal is an online product. Unless you're a super haxxor, you're running your Drupal copy at a web host, so for most (vast majority) no web = no Drupal, either.
Comment #69
metzlerd CreditAttribution: metzlerd commentedFrom my own perspective starting with a contrib module that implements a filter that presents the right contextual links for the version of drupal that you're using would be the best place to start. For the Unique id that's being talked about, I'd like to think that module/version namespaces would make the ideal way of connecting the link in code to help.drupal.org.
Where the stuff after help: is the tag that identifies which help document you're mapping to.
On the drupal.org namespace, another module would need to handle the dispatching of the data based on the module name and branch version identified.
There's some question about whether the version number could be automated from info file information for the module (from the system table) or whether this should just be at the developers discretion to change the strings. One seems more flexible, but the other moves well with the release management system.
A module at drupal.org would need to provide the correctly tagged document based on module, version and topic specified.
Does that sound like a start?
Comment #70
metzlerd CreditAttribution: metzlerd commentedI wasn't advocating against online help, but rather pointing out that it's not just the "most current help", but rather the most current help for the "major version" of the software that you were working on. The 2003 product doesn't take you to the 2010 help. It's an important piece of the link between product release management that has been missing in this discussion. I don't think people are suggesting help that isn't online.
In my ideal world you'd be able to override the linked help documentation so that you could redirect certain "topics" locally instead of going to the help.drupal.org version. But even the "local" version is still an online document.
For example, if you have a different user registration process, you don't wan't the onlinle help for the user registration page to point to the drupal.org version.
The difference between our situation and the Visual Studio/Word examples you're using is that those products are closed products. You don't "change" the way they work like we do with drupal.
Comment #71
sunFrom a bird-level view, some of the recent follow-ups are correct - an online help system requires a standardized mapping between a local context and a remote resource.
AFAIK, no such attempt or solution exists for Drupal yet (although I'm also not too familiar with Advanced Help). But then again, it's also not hard to design: It's a reversed tree, and you start in a kinda abstract version tree. Naturally starting with a core compatibility, project short-name, and lastly its major version - followed by a help document path (still in a high-level topic tree, such as "admin", "config", "user", etc), and lastly, the help topic name.
We obviously need to discuss the level of detail that topics can be structured into (by default; i.e., the reliable minimum structure of help topics per project); e.g. all of the following would be possible:
Although these suggested paths may look similar to D7's IA, they're absolutely not bound to the IA. What I'm technically after is that a module should be able to expose a help link on its settings page that points to
regardless of whether that page exists. Kinda like adding
[whatever]
into a page on Wikipedia: the link works, but there may be no content yet, and you're invited to kick-start documentation here.Additionally, we need to take into account that docs for one module might be identical across multiple core versions; i.e.:
...unless that module finally evolves and starts to differ in D7 or D8, so documentation authors/contributors likely want to "branch" off from the latest and greatest, having a new and different page for D7/8+.
In light of @metzlerd's comments, I'd strongly suggest to defer any discussion about input filters to a later point in time. The primary objective is to get a solid and reliable mapping of local contexts to remote documents done.
Comment #72
arianek CreditAttribution: arianek commentedI just did a "sitdown" (the opposite of standup, where our team sits down and discusses a topic in-depth) last week on the help system and how to best host end-user docs, and they had some interesting ideas (and a couple showed interest on helping with the dev work on this).
We actually kept coming back to Advanced Help - I'd never really poked at it till last week, but maybe we should revisit trying to get it into core and then adding to that? Or am I crazy? *ducks*
We were also discussing a lot of the "how on earth do we handle screenshots" which I think is an important consideration, particularly if we delve into the idea of letting help.d.o host anyone's customized help docs too. Do we have defaults? Do we store the imagefield content locally while updating the text from the help server? Lots of questions still floating around.
Just throwing some ideas out there, interested in hearing what those who've been prototyping think about this stuff.
Comment #73
Aren Cambre CreditAttribution: Aren Cambre commented@metzlerd: "I don't think people are suggesting help that isn't online." I see what you mean. Whew!
But I am still concerned about talk of local archives. E..g, #46, the most recent architectural discussion, includes "To import help/documentation pages to local sites..."
Offline/archived help is increasingly a niche need, especially with online products like Drupal. In the spirit of 80% solutions, I say leave that <20% niche need to a contributed module, and let core help be almost 100% online documentation.
In other words, focus scarce development resources on a really good online help system and let others deal with the niche need.
@sun: Not sure that a reverse tree is needed? How about a unique tag per help page, then that tag is referenced when you request help from within the Drupal app? I think this is the "universal identifier" in #46? Somehow a unique identifier needs to be referenced from each help link within the Drupal product.
Comment #74
wojtha CreditAttribution: wojtha commentedSubscribing
Comment #75
jhodgdonA few thoughts on the recent discussions:
a) #72 - I am pretty sure we don't want to use Advanced Help as it is now. It doesn't solve/resolve several of the key problems/requirements of the help system:
- Help text is not easily editable by the docs team (requires patching - part of module repository)
- Help is not displayable in a central location (help.drupal.org)
- Help is not easily translatable.
b) Regarding sun's proposal in #71 - we want to avoid having totally separate pages for each version of everything. We'd rather use conditional text where possible. But something like this probably makes sense. I'm also pretty sure we don't want a completely open wiki on help.drupal.org for the "official" help, but that hasn't entirely been decided yet, and probably people would at least have the option of contributing a suggested page.
c) Regarding on-line vs. inline [help.drupal.org vs. in your own site, many comments between #65 and #73] - If you pull the help into the site, you have better options in regards to what to display to whom, whether to completely hide conditional text that doesn't apply, decisions about what help you even want and what you don't want available (e.g. maybe just beginning level help?), and can add your own site-specific help. I agree that having the option to not pull it in and use help.drupal.org might be good for some sites, but I think most sites have some site-specific help available, so there should be an option for a site builder to create their own outlines.
d) Anyone who hasn't already might consider reading the proposal at http://drupal.org/node/1095012, since this contains the reasoning and current ideas about what the help system should do. It might make things clearer...
Comment #76
metzlerd CreditAttribution: metzlerd commented@jhodgdon:
I agree about not using advanced help.
I disagree that conditional text will effectively solve the problem for most major revision changes. It would be difficult to follow the existing recommendations on writing good docs. It would be better to provide easy ways to copy help text than to imagine, for example (configuring). I'm not suggesting that conditional text wouldn't be helpful, but I do think making it the major way you tie versions together is a mistake, and will lead to complicated hard to maintain documentation. Can you give me a counter-example where this concept has been put into place and works successfully?
It would be difficult (for example) for me to fathom the views documentation vs. views 2 documentation expressed simply as conditional text. The metaphors are just too different.
It would seem that "local" versions of help could easily be accomplished by overriding the help tag locally. You'd just then say, if I have this help tag defined locally then ling to it, otherwise link to help.drupal.org.
@sun:
I like the way you've abstracted the IA from the help links. Maybe it's just a decision to not use the major version in the tags, or move them to the end cause their optional:
In terms of writing the code, it would seem that you make it so a tag is a tag. But maybe you allow wildcard tag matching?
Help tag would be:
Either way it seems that we have some disagreement among the community about which would be the best place to start. Maybe we should sort that out first?
Comment #77
jhodgdonI agree that we only want to use conditional text when it's appropriate. I think that for most features of Drupal, they don't change much from version to version -- often it's only the position of the admin screen in the menu system and the URL that changes, if that. If there is a major change, then we can choose to make a completely new help page and mark the entire help page with that major version as its condition. If it's a minor change, we don't want to maintain two complete pages when only a small amount of text or one screen shot changes.
Also agreed that a hybrid between local and remote help would be great. If the site builder has this choice, then that would be good. But they should have the choice.
Comment #78
sunThe fundamental idea to account for is that a topic can appear in multiple contexts, even within the same module. When speaking of contexts, I don't necessarily mean the current and very limited 1:1 binding of a system path to a help page as in good ol' Help module. It's clearly foreseeable that Drupal is moving away from that strict binding, and module functionality is getting exposed and intermixed in various locations. A way too simple example would be the "Manage fields" page, but that's still an own page, so try to forget about the page aphorism, but think of multiple contexts within a page context; i.e., modularity.
Your tag or topic might be "Arguments" or plain simply "Foo", but depending on the context, we want to show help for global/site-wide configuration options for Foo, or how Foo can be used by admins and what all the options in the UI are meaning. There might even be an end-user-facing part of Foo. Hence, there's a substantial help topic difference depending on the context, and that needs to be identified in the topic's path. When designing this carefully and cleanly, there won't be much (or even any) manual work required to organize/put help topic pages into a browsable/explorable "book" tree/TOC.
It looks like we have to backup these statements with actual research/analysis data. AFAICS, almost all help pages for Drupal core have large differences between major versions. The same also applies to different major versions of modules, because, well, if there were no major changes, then there also wouldn't be a new major version. (I don't mean core compatibility here)
It might be possible that conditional text may be helpful in some cases, but when looking at the major versions of my modules, I guess at least 50% of them would need entirely different pages per major version.
I do get behind the idea that an "official" (closed, or, not freely editable) help would work for the main help topic pages of Drupal core. However, considering 4,000+ contributed modules, I don't think that the same "official help page" pattern is remotely able to work out.
Frankly, I don't see any reason why the help/documentation for modules shouldn't be completely open for everyone. In some of my contributed modules, I'm actually relying on the community to write proper documentation pages. Not because I couldn't write them myself, but because my time is better spent with fixing actual bugs or adding new features. Almost everyone can write docs, and I'm always able to fix, tweak, or clarify them afterwards.
Developers should be able to quickly and simply specify "Hm, this piece of functionality could use some UI docs, so let's associate a topic... tick-e-tick... '#help' => array('module' => 'mymodule', 'audience' => 'admin', 'topic' => 'config/functionality'). Profit.
Comment #79
jhodgdonRE conditional text:
Actually if you go to drupal.org/modules/menu, or similar URLs to get to the main d.o doc page for most of the core modules, you will see that most of them are pretty much the same for d5, d6, and d7. They would be greatly helped by being able to use the same basic text for all, with some conditional/fieldset text. These modules don't tend to change very much at all from version to version of Drupal.
RE: wiki and permissions - http://drupal.org/node/1095012 item 3 in the specs section says:
"Official help editing needs some control - we don't want just anyone to edit the official help at any time. Module maintainers should be able to designate who can maintain the help for their module, and we need to be able to designate this for Drupal Core as well."
I think that covers it fairly well...
Comment #80
Anonymous (not verified) CreditAttribution: Anonymous commentedSubscribing.
Comment #81
Aren Cambre CreditAttribution: Aren Cambre commentedIt's not clear to me how this adds value over a really good online help system. I mean, so what if a user finds out about more features than he has access to? I'm an IT professional, and this happens all the time. I love well-informed users.
I'm a little concerned about the idea of conditional text. At the top of this isue, versioning the help text in git was rejected because it makes documentation maintenance complex. Won't conditional text add a lot of complexity while providing little benefit over well-written documentation?
Comment #82
arianek CreditAttribution: arianek commentedre #75 - just to clarify, i didn't mean to use advanced help as-is. ;) i meant more like improving upon it, since it does have some useful pieces, such as allowing more than one page of help per module, and more easily editable text (as it's just straight html).
Comment #83
sun@arianek: That's still HTML in code vs. HTML in a node (or any D7 entity) though. There are many people who're able to document, but don't necessarily know HTML, how to patch, or how to get behind any other needless barrier being involved. In terms of this effort, the only interesting piece of Advanced Help is its internal mapping of help topics/tags, which also happens to lead to a browsable, hierarchical (tree) documentation structure. However, in AH, it's guaranteed to be limited to a certain major version of a certain module for a certain core compatibility/version. And while data can be manually copied/synced between branches, it's in fact a duplication of data. The biggest pain point however is that user documentation that lives in code is always outdated, no matter how hard you try (which is the exact same reason for why we detached translations from code repositories).
Comment #84
arianek CreditAttribution: arianek commented@sun - absolutely - it's a step up from needing to write PHP though, since many docs team members can write HTML quite competently. patching is another story, of course. so for sure an editing UI that removes that step is quite ideal - was just wondering if there any useful bits we could build upon from AH (as we've abandoned it as part of the discussion, and many contrib modules do use it presently). just to be sure i understand the last 2 sentences, you mean that it wouldn't be easy to update the help pages along with any minor version updates?
it seems that the idea of openly editable help server pages isn't something that people are too keen on, but that it's near impossible to keep the content up to date otherwise. ideas on a workable compromise, anyone?
Comment #85
redndahead CreditAttribution: redndahead commentedI'm open to having a section where anyone can edit the pages, but no one can create new ones. No one has really ever updated my documentation, so I'm not worried about it being editable, but I wouldn't want any new documentation to appear until I approved it.
An idea would be: There would be an "official" documentation section. This section would allow anybody to edit the documentation, but it wouldn't allow them to create new pages or delete the pages. Then there would be an "Unofficial" documentation section. This would allow anybody to create and modify any documentation.
Comment #86
jhodgdonRE #81 - A user (content editor for example) probably does not know off-hand which version of Drupal and various modules he/she is using on a site. So if we went to a purely on-line help model, we would need a way to pass that information to help.drupal.org when requesting help, as well as other factors like "this person is a beginner" and "this person doesn't have this permission". If a site builder sets up custom help outlines on their site, they can choose display options on a role basis (at least according to our specs).
RE #85 - I have added to the specs a note about permissions for creating new vs. editing existing documentation being up to the module maintainer. I think that addresses your concerns.
Comment #87
sunIn my mind, the code defines, creates, and limits the possible help topics. Help/documentation topics that are not linked to actual code are never exposed, so there's no point in creating such pages in the first place.
Perhaps that's also some source of confusion regarding my "wiki" suggestion, sorry. I actually mean a kinda special type of wiki -- developers decide through their code which pages/topics/tags can exist and linked to, and users/contributors can fill in those topics with actual content.
Comment #88
jhodgdonIf we go with the current specs, then the site admin can create help topics that are not necessarily connected to a particular admin screen or page on the site. For example, they might want a "Creating a new section" topic that covers adding a menu, a block, some content, a context, etc., and isn't tied to a particular admin screen. So I don't think we want to just say "all help is tied to the code", and certainly if we have help outline navigation and searching, all help will be reachable.
Comment #89
jhodgdonThere is also no reason why help.drupal.org could not have pages that are not tied to exactly one particular admin screen, for similar reasons, like "Locking down the security of your site" that might have a checklist of tasks.
Comment #90
Crell CreditAttribution: Crell commentedWe were just discussing this question internally at Palantir the other day, and from the page jhodgdon linked above it looks like we're thinking along similar lines with a new dedicated Help entity.
One item I would note is that if we have a custom entity type then we can do all sorts of magic in terms of how and where data gets stored. To wit, if help entities use UUIDs then we could have the entity controller first check for a help page locally in a DB (for local help text), then locally on disk (for module-provided help, or more likely help text that we provided to the client that we don't want them editing), then on a remote server that Palantir maintains (via REST), then on d.o (via REST).
That list of fallbacks can be configurable, so a given site can have whatever remotes make sense for it, including d.o or not. Add caching so you don't have as much remote traffic and you have multiple remote authoritative sources for content, a potentially local definition of IA (or possibly mixed if we do it right), and because the Drupal site itself is making the request it can specify what Drupal version (or module version) it wants, in case it matters to the remote.
And because that's configurable per site, it means we can customize the help available on a particular site as needed for each client, or for each Drupal distribution, or for each individual site, to the extent that we need to and it makes sense.
I just thought I'd throw that out as a potential solution to the offline/online question. We can in fact make that a site-specific decision.
Comment #91
metzlerd CreditAttribution: metzlerd commentedI'm not sure how we would identify "newbies" on my own sites, so I don't quite get that. How would such a determination be made?
But it seems that the permissions structure would naturally be taken care of locally. That is you don't display the help link to people who don't have the right roles, so you don't need to pass that off to drupal.org, do you? I don't see any value in hiding documentation on drupal.org form anyone based on any reason.
Comment #92
metzlerd CreditAttribution: metzlerd commentedSome fundamental questions to answer:
1. Is the online help entity just a specially tagged node on help.drupal.org (i.e. a node with an alternate access path: the help tag)? This is what I was thinking, but it seems there are some other assumptions being made out there. IF not a node is it stored in DB or on the file system?
2. What is the format of the UUID that gets used in code to reference the help entity?
3. Based on the answer to 1 Is the "help import" functionality basically implemented as a node import or are we talking about an alternate d.o. entity?
It seems like we'd all get on the same page much faster if we answered these core questions, and I don't see a path to an implementation plan until we get them answered.
Comment #93
jhodgdonNo, it's not a node. It's an entity. Stored in the DB. This is all in the specs page.
Comment #94
metzlerd CreditAttribution: metzlerd commentedWhen I red the spec (and I have several times now) I found that question a bit open. Know that I am reading and rereading the spec for changes all the time.
What's the rationale for this decision? It seems like it would be a lot easier to implement if it were just a node?
Comment #95
metzlerd CreditAttribution: metzlerd commentedThat could be said of some nodes on most sites that I set up. There are mechanisms out there to control this. In fact I often set up localized help on my site that are in pages. Throwing away nodes throws away a ton of flexibility and features, and we will basically be reinventing a CMS to hold the help pages. Are we sure this is the right decision here? If it were being stored as part of the file system I get it, but once it's in the DB, why not a node?
Sorry I missed that up to now.
Comment #96
Crell CreditAttribution: Crell commentedBecause a node is "user content". Help text is "system content". They're fundamentally different concepts, and should have a totally different editing workflow and life cycle. Plus, per #90 we may want help pages to be transparently-remote, or live on disk instead of in the DB, etc.
Nodes still have a ton of baggage that we don't want, like having to deal with the node access system. (Although hook_node_access() does help there somewhat.) The parts of nodes we do want, I would think, are CRUD and Fields, which is what an entity provides. (Well, the R anyway... Hopefully that gets fixed.)
Comment #97
metzlerd CreditAttribution: metzlerd commentedOk I'll fade away into the sunset here, although I'm still a bit dubious. _Online_ help is not fundamentally a system concept, especially when people keep likening it to a wiki. I'd argue that drupal could make a killer online help editing system for other applications as well (dare I say including MSOffice). Imagine howto's with videos etc. I guess others are envisioning separate sites for help vs. documentation (which I think of in the same breath). Get ready to reinvent: taxonomy for categorizing help, node-access for implementing the permissions model, page caching for performance on help.drupal.org, book like menu structures for managing the outlines, notifications or subscriptions for notifiying editors of changes to the docs and probably more that I can't think of. We are talking about managing content on a help.drupal.org web site aren't we? Aside from labeling at "system", I've yet to hear anything that is fundamentally different about "system content" vs. "user content" save who can access it.
If we're going down the road of #90, then I'd advocate staying out of the db, except for caching and indexing structures. That way you have something that can be included in version control etc. still, which is one of the advantages of that approach. I do a similar thing in project forena where I store report data as files on the filesystem but provide a drupal forms based ui for editing them and it works well.
If you want to maintain the ability of "file-system" based UUIDs, then I'd suggest revising suns concept of UUID's to be more namespace ('e.g. d6.views.2.views.arguments) So that files could be stored easily on the file system without necessarily creating deep directory structures (alhtough some may find that cool).
Comment #98
Itangalo CreditAttribution: Itangalo commentedWow. It is not often I return to drupal.org discussions I am involved in and find 20+ new comments. Cool!
I'd like to argue for a help solution like this:
* A help entity that stores (conditional) text, screenshots, video or what have you. No surprises there.
* It also stores a UUID (which I for now would argue is the URL of its origin, for easier copying between sites).
We also need something that tells Drupal where help links should appear. I argue for using the Contextual Links module for this, since it can insert nice links more or less anywhere(?) in the $page array. The tricky part is probably to define help inserts in a way that allow wildcards in the right way -- but that's a technical issue I trust that can be solved.
I would argue for not storing these links as part of a module and not a part of the help entities, but as part of a help collection entity. Why?
1) Having the link definitions as part of the help entities would require having the help entity locally in order to link to it.
2) Having the link definitions as part of a module makes it much more difficult to extend them by configuration.
3) Having the link definitions as part of a separate entity makes it possible to in one go have (a) a simple importable entity that gives you, say, 'help for editors', and (b) a structure of the help entities -- possibly hierarchical.
As has been suggested already, the help links point to (say)
http://help.drupal.org/7/drupal/configuration/system/site-information
. It doesn't really matter, but I would argue for putting all version numbering at the end of the URL, to allow the local link builder to add any version number of the relevant module, and also easier fallback where the URL is interpreted. I could even argue for using a link of the formhttp://help.drupal.org/drupal/configuration/system/site-information#7
instead, but it really doesn't matter as long as there is reasonable fallback both when the link is built and interpreted.As also has been suggested, there should be a configurable chain of places to look for help pages, from local entities to remote stuff from drupal.org. (I also argue that there should be import capabilities built into this, to allow editing a local copy of remote stuff.)
Phew! What would we get from this
Comment #99
arianek CreditAttribution: arianek commentedAwesome!!!!!! Quite like the direction this is going. And @crell we have been talking about how great this would be at work too, so when it comes time for development I can see if we can get one of our devs to help out as well. :)
I quite like itangalo's idea above about the URLs eg. http://help.drupal.org/drupal/configuration/system/site-information#7 that would be quite useful in the case of any missing docs, having a fallback to the main URL.
Comment #100
redndahead CreditAttribution: redndahead commented@98 This sounds great. Let's make sure we don't require any urls on the help site be based on urls on the user site. I.e. configuration/system on help site having to match to configuration/system on the users site. At least for a views related module this wouldn't really work. Not sure if that's what was intended with the url examples, but just wanted to make sure. I prefer the anchor version of the url for the reasons that arianek described.
Comment #101
Itangalo CreditAttribution: Itangalo commented@100: As I see it the help path (eg
http://help.drupal.org/drupal/configuration/system/site-information#7
) is completely independent on where the help link appears on your site. (You might of course have a module defining help paths dynamically based on the currently viewed page, but that's a whole different matter.)In my head I have a structure similar to this:
(Please convert the structure to any coding standard you prefer. Serialized JSON is fine.)
I took a closer look at how to make help link appear where you want to, and went back to the module Advanced Help Injection and Export. It allows injecting help links to arbitrary form elements, and also to pages as a whole according to some customizable patterns. (The attached image shows possible mappings when adding a help page on the path admin/build/modules.)
It could be a good idea to mimick this approach, and combine it with "paths" for the $page array structure. For example, the contextual link pattern
admin/config/system/site-information
would have a help link displayed for that page as a whole, whilenode/%/edit#content-system_main-body
would have a help link appear at the body elements on all node edit pages. Hopefully it can be generalized to include wildcards in the second (render array) part of the link pattern, for example to insert a help link to all "add another item" buttons (regardless of where in the $page array they appear).I hope what I'm writing makes sense. If it doesn't, I'd be happy to either (a) try to explain more or (b) listen to why this approach won't work. :-)
Comment #102
Itangalo CreditAttribution: Itangalo commentedForgot the screenshot from Advanced Help Injection and Export. Sorry. Here goes:
Comment #103
tstoecklerTo maybe defer the above discussion about contextual text vs. separate pages for major versions we could maybe standardize on target URLs of the form:
http://help.drupal.org/drupal/configuration/system/site-information?vers...
(instead of http://help.drupal.org/drupal/configuration/system/site-information#7)
That way it would be up to the help provider if he renders a separate entity or if he renders the same entity but with conditionally different field values (or whatever). On help.drupal.org we could then (possibly) utilize both methods, depending on the use-case.
Comment #104
Aren Cambre CreditAttribution: Aren Cambre commentedBut if there was a UUID associated with drupal.org help pages, then the module maintainer could correlate each help link within each version of the module to the corresponding UUID.
Comment #105
joachim CreditAttribution: joachim commented> I mean, so what if a user finds out about more features than he has access to? I'm an IT professional, and this happens all the time. I love well-informed users.
In my experience, the opposite is true. Users will be confused if they read about things they can't do -- heck *I* would be. If d.org told me I could wibble the foobar and I couldn't see the menu link or the form element, I'd be filing an issue / bugging people on IRC. Site admins don't want that.
I think being able to tailor the help to your own site would be a brilliant feature, and take our online help from being a necessary but often ignored addendum to being a crucial part of the Drupal install.
> Get ready to reinvent: taxonomy for categorizing help, node-access for implementing the permissions model, page caching for performance on help.drupal.org, book like menu structures for managing the outlines, notifications or subscriptions for notifiying editors of changes to the docs
All those need to be reinvented for entities anyway -- we'd just be jumping on board that process. And it's not that much of a reinvention process anyway, just generalizing what nodes do.
In general, I'd also like to give a big +1 to the points jhodgdon and sun and others are making.
Comment #106
RobLoachThe help system should apply to more then just administration. I've made complicated workflows where I used hook_help to guide the user. We should not restrict where this applies.
Comment #107
sunHowever, fundamentally, we have to differentiate between help/documentation that is linked (or mapped) to code, and arbitrary additional pages, which are not.
I totally agree that an online help/support system has a huge potential for extending our help/documentation with closely related additional things - HowTos, Tutorials, FAQs, etc. But these things are solely built online around existing help topics. They are not tied to any code, and as such, they don't have the same fundamental requirement of being referenced from within module code, which is one of the primary challenges we need to solve.
We need to ensure to clearly differ between "online pages referenced from code" (topics) and "extended online pages that are surrounding/extending topics or entire manual sections".
Definitely. But for the sake of making progress, we should defer the problem space of being able to "export" and potentially override the topics (or entire sections) of the online manual to a later point in time. It's a different and secondary aspect of the system. The actual online manual system may very well be a completely different implementation than the locally exported, overridable, but also synchronizing local help system. So there's also not really a need to say yay or nay for using nodes or entities right now.
The primary discussion we need to have right now is to figure out,
The ideas and considerations on these questions are still extremely fuzzy, so it doesn't really make sense to start discussing technical implementation details.
@Itangalo:
Note that PHP cannot read the fragment part (#) of a URL. Only JavaScript is able to do that.
On your help collection/page reference proposal: Looks a bit bloated to me. All we need is a standardized (and locked down) topic reference resource format, a manually defined UUID following a predefined syntax, as discussed earlier; e.g., might be represented as a path,
7/views/3/structure/view/arguments
, as a namespace-alike tag,d6.views.2.view.arguments
, or might even use the HTTP request Location or request Body to pass keyed parameters,However, again, that's way too technical for now. To find the best technical implementation, we need to know the requirements, which we don't know yet. We need to discuss the level of granularity of help topics/tags that are referenced in code. Whether these references should or have to supply any kind of context information or not, aso.
Comment #108
jhodgdonGreat ideas! I think this is starting to come together even better, and I've modified http://drupal.org/node/1095012 to (hopefully) incorporate the ideas from the latest comments:
- user help not necessarily admin help from #106
- moving the cross-linking into the Map/outline/collection, which would also be able to combine local and remote help as needed
- UUID/url structure
Comment #109
arianek CreditAttribution: arianek commentedStill sounding good - though tbh, I'm getting a little lost in the technical stuff here. I wanted to check in on whether this is still going to support some fashion of custom help that site builders can add to further support the site admins? That was discussed more early on when we were exploring this whole idea, and it's not clear to me if that's not really in-scope anymore.
(ps. hope it's ok i abused my admin perms and fixed @itangalo's screenshot that wasn't displaying properly) ;)
Comment #110
jhodgdonYes, the ability for admins to add help is a key feature (in my opinion, as a frequent site builder who has to turn sites over to non-Drupal-expert admins). It is in the specs and should not cause any extra work in fact. :)
Comment #111
Bojhan CreditAttribution: Bojhan commentedI am very concerned regarding the user interface considerations required for the site-builder as outlined in the wiki. Some of the features discussed here seem to be aimed at a very specific audience, those who supply in-line help for there clients. I spoke about this briefly with jhodgdon, but I want to stress it once more. Because the interaction patterns required to make that kind of work, are quite special and I am not sure why that couldn't be dealt with in contrib.
Comment #112
Aren Cambre CreditAttribution: Aren Cambre commentedIf a user is sophisticated enough to file support tickets at drupal.org, the user is sophisticated enough to use Google or the drupal.org search engine to find any content, all of which will be available online regardless of any restrictions suggested by any instance of Drupal.
That's why I think the idea of limiting what users see at drupal.org is silly. Shouldn't even be designed into the help system because it's unworkable from the start. The focus has to be on really good, up to date, rich documentation, not on limiting access to free data.
Comment #113
redndahead CreditAttribution: redndahead commentedI don't think it's about limiting visibility of documentation, just curating it.
Comment #114
Aren Cambre CreditAttribution: Aren Cambre commentedDepends on who "we" is. If "we"=each module maintainer, then it's super easy--in the module, where the module maintainer specifies help references, he just references the UUID of the Drupal.org help page. Ancillary pages just complement the "blessed" help page.
If "we"=drupal.org or the wider community, seems like we have a hot mess.
Yes, it's a niche need and somewhat of a pre-web 2.0 viewpoint, undeserving of core inclusion. Should be relegated to contributed module(s).
Not sure it's that hard. Seems like a simple topical hierarchy should work? Given Drupal community enthusiasm, can we set up a good wiki-like area and let this form by accretion? And wouldn't module documentation simply start at some root point for each module? That is, a module would have a "root" page, and the module maintainer could bless certain pages within the module documentation by referencing their UUIDs from within the module's help references?
Comment #115
Crell CreditAttribution: Crell commentedI'm a bit confused at the comment regarding exporting help pages. I don't think I was talking about that. I was more talking about using UUIDs (not URIs) as a loading mechanism so that we could allow an index to be built that only mentions IDs, not locations, and then the entity controller could find them from wherever. That is, help pages specifically do not need to be exported to a local site but could live on any number of remote systems.
I suppose a side effect of that approach is that one could "override" a remote help entity by using the same UUID in multiple places, but that's more of a side effect than an intended effect and I'm not even sure it's one we should encourage. :-)
Comment #116
joachim CreditAttribution: joachim commented> If a user is sophisticated enough to file support tickets at drupal.org, the user is sophisticated enough to use Google or the drupal.org search engine to find any content, all of which will be available online regardless of any restrictions suggested by any instance of Drupal.
I was talking about me as an example.
I regularly see users who will just Mash The Keys Repeatedly if confused.
Comment #117
Itangalo CreditAttribution: Itangalo commentedI spent some hours today examining how help links can be inserted into Drupal pages. My approach was to allow a general render element into an arbitrary part of the $page render array. The result is in a sandbox project called Inject render element: http://drupal.org/sandbox/itangalo/1120836.
From the project description:
I think it's a good idea to branch this off into a separate issue -- and maybe we should do that with more topics in this thread -- but first I'd like to know if people find this a sensible approach for inserting help links. What say you?
Edit: This feature relates to requirement 1 listed on the wiki page, header General Considerations and Requirements, and also the section Contextual linking on the same wiki page (as well as some comments further up in this issue).
Comment #118
Aren Cambre CreditAttribution: Aren Cambre commentedThen, by definition, you don't have a UUID.
Comment #119
sunThat presumes that online manual pages needs to exist before code is able to reference it.
From a developer's perspective setting up and writing user manuals is a second, delayed step. In an ideal world, I'd be able to reference an online manual topic from my module's code, regardless of whether it already exists or not, because all I know at the point of writing the code is that "this piece could use more elaborate documentation for users".
Comment #120
Aren Cambre CreditAttribution: Aren Cambre commentedWhat I'd like to see:
With that, it is reasonable to require pages to exist before code is able to reference it. Otherwise, the process of reserving a UUID in advance seems cumbersome.
Other alternatives include:
Simple is usually better.
Comment #121
jjkd CreditAttribution: jjkd commentedsubscribe...
Comment #122
LeeHunter CreditAttribution: LeeHunter commentedsubscribe
Comment #123
cweagansTagging.
Comment #124
jhodgdonIssue summary just added.
Comment #125
Sree CreditAttribution: Sree commentedlatest progress can be checked here: http://groups.drupal.org/node/174499
Comment #126
Sree CreditAttribution: Sree commentedPlease feel free to share your suggestions on help system improvements here: http://drupal.org/node/1283496
Comment #127
vaidik CreditAttribution: vaidik commentedSubscribing and interested in contributing.
Comment #128
jhodgdonvaidik: If you are interested in contributing, please check http://groups.drupal.org/node/174499 for available tasks and describe what you are interested in working on.
Comment #129
jhodgdontagging for docs infra
Comment #129.0
jhodgdonAdd issue summary
Comment #130
jhodgdonI just updated the issue summary with an updated task list. Help needed!
Comment #130.0
jhodgdonUpdate task list
Comment #131
jhodgdonUpdated the issue summary with a link to Carolyn's sandbox where she's working on the help entities (work in progress). Thanks Carolyn!
Comment #132
jhodgdonI'm going to close down this issue, which had a great discussion, and now we have really solid specs on http://drupal.org/node/1095012 for the combined Help/curated Docs system that we want to build.
To track the progress of building this system, see new issue:
#1549580: Track progress of building the Help/Docs System
Comment #133.0
(not verified) CreditAttribution: commentedAdd link to Carolyn's sandbox