PolicyAndProcess/UFDCodingProcess

Not logged in - Log In / Register

Policy Statement

  1. Form handlers need to accept data that can be entered into forms
  2. Should the form handler encounter unexpected data and it is not seamlessly handled then we must raise a UFD.
  3. A UFD must have an informative OOPS page

SteveA:

  1. Form handlers need only to accept data that can be entered into forms.
  2. Should the form handler encounter unexpected data and it is not seamlessly handled then we must raise a UFD rather than some other kind of exception.
  3. A UFD shall have an informative OOPS page.

The exception to point 1 is where we decide that a particular form handler is a public interface that will be accessed from a Launchpad form and also by other means.

Rationale

The reason for this is that there can be a lot of spaghetti code to handle various different "schemas" of form data. The benefit of supporting many "schemas" is usually outweighed by the costs of creating, maintaining and testing the code. However, this is not true in all cases, so we use a specific exception (UnexpectedFormData) to monitor when a form is used outside of its design parameters.

A consistent UFD process will allow us to see when we get UFD errors so we can deal with them as part of our production QA activities, so we can:

Process Description

Triggers

  1. A Launchpad form handler encounters unexpected data
    • users manually editing URL lines for GETs
    • users caught between server upgrades -- form page rendered on version N, but submitted to version N+1
    • form posts from non-launchpad site
    • other user-agents accesing Launchpad making assumptions about how the forms work
  2. A Launchpad form handler that does not accept data legitimately entered from its form
  3. A bug in Launchpad, for example where an interaction between the redirection machinery and the form machinery led to UFD.

Inputs

  1. Offending Data entered into the form by by a user, a user's browser, or a robot.

Outputs

  1. A UFD produces an informative OOPS page. Customer is both Launchpad user and Launchpad Developers. A good UFD example should be https://beta.launchpad.net/products?text=foo&text=foo however currently it is producing an OOPS instead of a UFD (XXX: Bug#57474)

Participants

Subprocesses

Standard Path Events/Activities

Alternative Path Events/Activities

None.

Supporting Documentation

Comments

PolicyAndProcess/UFDCodingProcess (last edited 2009-11-18 22:28:13 by brianfromme)