Firefox3/Web Based Help System

From MozillaWiki
Jump to: navigation, search

Requirements

Client Side Requirements

These are the requirements for the parts of the system that will be part of FF.

  • Must be usable by extensions
    • extension help should show up just like "core" Firefox help.
      • but they should be able to look a little different, right?
    • extension help maybe on a server controlled by moz and should still be accessible
  • users must be able to give feedback on whethere a particular article was helpful.
    • it would probably be helpful to track people over time somehow too

Server Side Requirements

  • Must serve properly localized content based on browser's locale
    • if content for that locale is missing then serve the content from another locale (e.g. if fr content is missing serve de content. if de content is missing serve en content).
      • this needs to be controllable
      • if content is missing in one language the user must be warned that they are viewing content from another one. "Sorry, showing you help in Dwarvish because there is no Klingon"
    • based on accept_lang
  • Content Management facilities.
    • must be easy to add, edit, and organize content.
    • full l10n and i18n support, ofcourse.
    • Who gets to edit and publish?
      • The issue of vandalism is very important here since the people viewing this content are coming for help so a link to goatse or some such would be very bad.
      • Everyone is able to add and edit content. However before content is published it must be reviewed. This must be enforced in the CMS
      • Version control
        • This means that the version that is published may not be the latest version. We must also be able to delete versions and rollback to older version.s
      • Not everyone is able to
    • who sets doc id? Should they be human readable.
  • Intelligent search

Possible Solutions

Client Side Solutions

XUL Help Widget

The widget would know how to retrieve and display help by itself. Might come in two varieties:

  • Help button
  • Help Menu Item

XUL Help Display widget

This is needed only if help is retreived from a web service.

The major boon here is the ability to control the look and feel on the client.

Servers Side Solutions

The big worry for the server is whether it can scale since there is a potential for a lot of hits.

Joomla & Joom!fish

Joom!fish is an extension to Joomla which helps with multi lingual content.

There is the question of whether it can scale to the level we require.

The security audit is available on the Joomla! website.

Media Wiki

This is used for other moz sites, wikipedia, and others. It is very likely to scale.

CakePHP

Remora uses this. It is likely to scale.

Webservice & backend with one of the above

The major boon of this idea is that it make it easy for non Moz controlled sites to provide help for extensions while still maitaining a consistent look and feel inside the browser.

With the other options if someone else is to host documentation for the extension look and feel is likely to suffer.

By using a web service anyone will be able to provide documentation for any aspect of the browser using a single interface (e.g. the XUL Help widget proposed above) and it will give the client the greatest control over look and feel.

Load Testing ToDo

  • Get code into a repository
    • Status: Done Not Done Done.
    • Need to add and configure SEF/SEO extension
      • This will give pretty urls like foo.com/firefox/faq.html insteald foo.com/index.php?component=com_content&id=323523&....
      • turns out this kinda sucks for our purposes. We want id based urls not named ones.
    • code is at svn://svn.mozilla.org/projects/help.mozilla.com
  • Document server installation process
  • Create a data set that has a reasonable amount of records to reflect estimated production data
  • Determine an estimated requests/second target
    • Status: Done (but could do with revision)
    • According to discussions with morgamic, we should be looking at between 1 million and 4 million hits per day.
    • Might need revision based on results of bug 372065.
  • Work with IT to get application installed on stage and database set up on stage
  • Decide which high-traffic pages you want to test
  • Create a simple shell script to test using AB (until grinder issues are worked out)
  • Run said shell script from another machine that has available resources