Document Sample
Vision Powered By Docstoc
					Public Domain


   Version <1.3>
Tailor                                                                 Version:     <1.3>
Vision                                                                 Date: <21/Dec/2006>

                                        Revision History
          Date                Version                    Description                  Author
<21/Dec/2006>                <1.0>       First Draft                          Brandon Bergren
<21/Dec/2006>                <1.1>       Major changes                        Brandon Bergren
<21/Dec/2006>                <1.2>       Another batch of changes.            Brandon Bergren
<21/Dec/2006>                <1.3>       Final version                        Hamad Nazir

                                        Table of Contents
1. Introduction                                                                                       1
      Purpose                                                                                         1
      Scope                                                                                           1
      Definitions, Acronyms and Abbreviations                                                         1
      References                                                                                      1
      Overview                                                                                        1

2. Positioning                                                                                        1
      Problem Statement                                                                               1
      Product Position Statement                                                                      2

3. User Descriptions                                                                                  2
      Market Demographics                                                                             2
      Stakeholder Summary                                                                             2
      User Summary                                                                                    2
      Stakeholder Profiles                                                                            3
      User Profiles                                                                                   3
      Key Stakeholder / User Needs                                                                    3
      Alternatives and Competition                                                                    4
           Custom modules                                                                             4
           Code hacks                                                                                 4

4. Product Overview                                                                                   4
      Product Perspective                                                                             4
      Summary of Capabilities                                                                         5
      Assumptions and Dependencies                                                                    5
      Licensing and Installation                                                                      5

5. Product Features                                                                                   5

6. Constraints                                                                                        5

7. Quality Ranges                                                                                     5

8. Precedence and Priority                                                                            5

9. Other Product Requirements                                                                         5
      Applicable Standards                                                                            5

For General Distribution                        Public Domain                                   ii7
Tailor                                                           Version:     <1.3>
Vision                                                           Date: <21/Dec/2006>

      System Requirements                                                                   6
      Performance Requirements                                                              6

10. Documentation Requirements                                                              6
      Handbook pages                                                                        6
      Online Help                                                                           6
      Installation Guides, Configuration, Read Me File                                      6

11. Appendix 1 - Feature Attributes                                                         6
      Status                                                                                6
      Benefit                                                                               6
      Risk                                                                                  7
      Stability                                                                             7
      Target Release                                                                        7
      Reason                                                                                7

For General Distribution                         Public Domain                         37
Tailor                                                                           Version:     <1.3>
Vision                                                                           Date: <21/Dec/2006>

1.      Introduction
1.1     Purpose
        The purpose of this document is to collect, analyze and define high-level needs and features of the Tailor
        module. It focuses on the capabilities needed by the target users, and why these needs exist. The details of
        how the Tailor module fulfills these needs are detailed in the use-case and supplementary specifications.

1.2     Scope
        This document deals with a general overview of the main features of the Tailor module and the features the
        first release will contain.
1.3     Definitions, Acronyms and Abbreviations
        CMS: A “Content Management System.”
        Drupal: A highly flexible PHP CMS.
        Drupal Hook: A term Drupal uses to describe its multiple-dispatch callback based plugin system. Hooks are
        named after the action or object they deal with, and all modules implementing that hook have a chance to
        alter the outcome of the hook invocation.
        Drupal Module: A piece of PHP code that interacts with Drupal via a “hooks” system.
        form_alter: A specific Drupal hook that deals with the modification of form objects prior to the rendering
        and display steps of the FormsAPI process.
        FormsAPI: A flexible form-definition system created for and used extensively by Drupal. Described in the
        FormsAPI Quickstart Guide.
        Handbook: Drupal's user-maintained documentation repository, located at
1.4     References
        Drupal Handbook. Available at
        FormsAPI Quickstart Guide: Available at
1.5     Overview

2.      Positioning
2.1     Problem Statement
        Drupal comes with an extremely powerful method for altering forms. Unfortunately, this functionality is
        not exposed to the user, and may only be exercised by writing so-called “customization” modules.

                  The problem of              Using the form_alter mechanism
                  affects                     Theme developers and advanced users
                                              who are unfamiliar with Drupal module
                                              development and/or PHP coding
                  The impact of which is      Suboptimal solutions to customization
                  A successful solution           1.   Be easy to use
                                                  2.   Expose a majority of form_alter's
                                                  3.   Be general and flexible

For General Distribution                         Public Domain                                                 17
Tailor                                                                            Version:     <1.3>
Vision                                                                            Date: <21/Dec/2006>

2.2     Product Position Statement
        The Tailor module will fill a gap in Drupal functionality, namely, the lack of an interface for altering forms
        (especially system forms.)

                  For                           Site Creators
                  Who                           Need to customize the appearance and
                                                behavior of forms, especially the built in
                  The Tailor module             Is a Drupal module
                  That                          Provides a general interface and engine for
                                                form altering
                  Unlike                        A site specific custom module
                  Our product                   Can be used without needing to learn
                                                Drupal module development or hiring a
                                                consultant to code a custom module.
                                                Changes can be made quickly and easily.

        Previously, site creators had to either learn how to write Drupal modules or hire someone to write a module
        for them to accomplish the task of altering forms.
3.       User Descriptions
3.1     Market Demographics
        There is currently no other general solution available for Drupal to solve this specific problem. The
        problem has been solved many times on various sites, but nobody has developed a general solution to the
        problem. It can be assumed that the Tailor module will quickly become a favorite among site creators and
        consultants who need to get sites customized quickly. The market share of an open source project, if
        assumed to be the percentage of sites using the module, could potentially be quite high. Traditionally,
        Drupal modules that provide extra customization have been extremely popular. Good examples are Views
        and CCK. Views provides customization of how sets of data are displayed, and CCK allows the creation of
        custom content types. Tailor has a good chance of quickly becoming one of the “Must Have” Drupal
3.2     Stakeholder Summary

          Name                  Represents                               Role
          Brandon Bergren       Himself                                  Maintain the project page and
                                                                         releases on, write the first
                                                                         version of the code.
          “Squidgy”             Site Creators                            Provide input from the viewpoint of
                                                                         an actual site creation consultant, beta
                                                                         test the code.

3.3     User Summary
          Name                  Description                                     Stakeholder

For General Distribution                           Public Domain                                                    27
Tailor                                                                         Version:     <1.3>
Vision                                                                         Date: <21/Dec/2006>

          Site Creators       Users who customize Drupal sites.             Represented by “Squidgy.

3.4     Stakeholder Profiles
        Representative        Brandon Bergren
        Description           Drupal module developer / consultant
        Type                  Expert module developer. Familiar with Drupal internals.
        Responsibilities      Create the module and maintain the project page.
        Success Criteria      “I want people to be able to pick this up and use it.”
        Involvement           Developer
        Deliverables          N/A
        Comments / Issues

        Representative        “Squidgy”
        Description           Drupal theme developer / consultant
        Type                  Advanced theme developer. Basic PHP knowledge.
        Responsibilities      Ensure the module solves the correct problem.
        Success Criteria      “I'm going to use this on my sites when it's finished”
        Involvement           How the stakeholder is involved in the project - relate where possible to RUP
                              workers (i.e. Requirements Reviewer etc.)
        Deliverables          The module and documentation.
        Comments / Issues     Available sometimes in the Drupal IRC chat.

3.5     User Profiles
        Representative        “Squidgy”
        Description           Site creators and maintainers who wish to customize forms without the hassle of
                              having a custom module.
        Type                  Advanced user to Expert user. Guru level creators may find Tailor module limiting,
                              and will probably choose to continue using custom modules.
        Responsibilities      Sets up and customizes a Drupal site during the site's development cycle.
        Success Criteria      Site creators want to get the job done and get it online (and get paid, in the case of
        Involvement           End User
        Deliverables          The module and documentation.
        Comments / Issues     The Tailor module will reduce the amount of time needed to get the site live, by
                              eliminating the need to write a custom module to perform the form alterations
                              dictated by the site's purpose.

3.6     Key Stakeholder / User Needs
Need                            Priority   Concerns          Current Solution        Proposed Solutions
Must not affect performance     8          Tailor causes     Cache the list of        Cache the composed
negatively                                 extra SQL         forms to alter so we     variable in the cache table
                                           queries           only take the SQL hit    if this isn't sufficient.
                                                             on the first
Must be secure.                 10         Form_alter        Use of the Drupal        Separating out UI into a
                                           can become                                 separate module so the

For General Distribution                        Public Domain                                                  37
Tailor                                                                            Version:     <1.3>
Vision                                                                            Date: <21/Dec/2006>

                                              an attack         access control API.      alteration creation interface
                                              vector.                                    can be turned off
Must be flexible                   5          There's a lot     Cover the most           Generalized framework for
                                              of different      common cases, and        adding more actions?
                                              things we         add a PHP snippet
                                              need to alter.    action for the others.
Must not affect data integrity     7          “This module      All potentially          A setting to turn off the
                                              gives us          dangerous alterations    more dangerous features?
                                              enough rope       will be behind a
                                              to shoot          message warning the
                                              ourselves in      user of the potential
                                              the foot!”        danger of activating
Must not let the user screw up     5          “What if I        Reliance on the user     Warning if the user is
the entire site accidentally.                 alter the         knowing what he is       altering a particularly
                                              modules page      doing.                   important system form.
Ability to selectively alter       3          “Can I have       None currently.          Add the ability to evaluate
forms.                                        something                                  an additional snippet of
                                              similar to the                             PHP code to decide
                                              block                                      whether to alter a form on a
                                              visibility                                 case-by-case basis.

3.7      Alternatives and Competition

3.7.1    Custom modules
         Custom modules are used on many sites. People already using them are going to tend to continue using
         them. Per hour, custom modules cost much more to create than performing customization through the
         Administrator interface, due to the additional skills required.
3.7.2    Code hacks
         It is always possible to hack the form where it is declared. This is not recommended by the Drupal
         community due to the problems it creates when upgrading to a new release.
4.       Product Overview
4.1      Product Perspective
         Tailor is a Drupal module. It's only purpose is to provide an interface to the Drupal form alteration system.
         Drupal modules (excepting custom modules) follow a standard of code, security, and style that is
         documented in the Drupal Handbook.
         Tailor will be open source under the GPL, as required for all Drupal “contrib” modules.

For General Distribution                           Public Domain                                                   47
Tailor                                                                               Version:     <1.3>
Vision                                                                               Date: <21/Dec/2006>

4.2       Summary of Capabilities
                                              Customer Support System
               Customer Benefit                      Supporting Features
               More flexible way to alter forms.     Database driven form_alter
               Additional alterations may be         Easy to use user interface.
               performed by a non-developer.
               More predictable upgrades due to      Tailor is a proper Drupal “contrib” module.
               reduced dependence on site specific
4.3       Assumptions and Dependencies
          It is assumed that, at most, there will not be a demand for “Tailor in core,” i.e. Inclusion of Tailor in the
          Drupal base distribution. If this assumption is ever proven wrong, Tailor must be redesigned using the
          extremely stringent requirements for core code. Features will need to be stripped out, and the code fully
          audited by the Security Team.
4.4       Licensing and Installation
          As all Drupal “contrib” modules must be licenced under the GPL, the licence is a moot issue.
          Drupal provides an installation interface and standards for installation. Tailor will follow all applicable
          standards, as defined by the current version of the Handbook.
5.        Product Features
      ●   Create alterations to forms with an easy to use interface.
      ●   A small hook implementation to perform all applicable alterations during form generation.
      ●   Internal help and handbook pages describing how to operate the interface.
6.        Constraints
          Must only interact with Drupal through the official hooks API. Must not adversely affect the operation of
          other modules.
7.        Quality Ranges
          The Tailor module must be reasonably performant, usable by advanced users, and follow general quality
          guidelines as set forth in the Handbook.
8.        Precedence and Priority
          The hook implementation is the feature of highest priority. The module is actually usable by people
          familiar with database modification by having only this feature.
          The interface depends on the proper operation of the hook implementation. Without the interface, the
          usefulness of Tailor will be limited to the people who already have the skill to create a custom module.
          Therefore, the interface is high priority.
          Help and handbook pages are medium priority. The initial group of people using Tailor will be the site
          creators who took part in testing, and will already be familiar with its operation. Getting the module
          working comes first.
9.        Other Product Requirements
          Drupal “contrib” modules must have an official maintainer. Brandon Bergren ( username
          “Bdragon”) has volunteered to be the permanent maintainer.
9.1       Applicable Standards
          PHP E_ALL compliant
          valid XHTML

For General Distribution                             Public Domain                                                   57
Tailor                                                                             Version:     <1.3>
Vision                                                                             Date: <21/Dec/2006>

9.2     System Requirements
        Tailor will initially support the Drupal 5.0 series, with a possibility of backporting to the Drupal 4.7 series.
        Tailor will follow the system software requirements of Drupal itself.
9.3     Performance Requirements
        Tailor must not adversely affect page generation performance. Tailor must have near-zero impact on page
        views that do not involve forms.
10.     Documentation Requirements
10.1    Handbook pages
        Tailor's handbook pages will contain a walkthrough, examples of usage, a description of how it works, and
        a section for users to post additional tips.
10.2    Online Help
        All controls generated by the Tailor module must be fully documented via the #title and #description
        properties. All menu locations must have appropriate context help.
10.3    Installation Guides, Configuration, Read Me File
        The Readme document in the root of the module distribution must contain a general description, caveats
        and workarounds, upgrade notes, and a changelog.

11.     Appendix 1 - Feature Attributes
11.1    Status
                             Proposed           Used to describe features that are under discussion but have not yet
                                                been reviewed and accepted by the "official channel," such as a
                                                working group consisting of representatives from the project team,
                                                product management and user or customer community.
                             Approved           Capabilities that are deemed useful and feasible and have been
                                                approved for implementation by the official channel.
                             Incorporated       Features incorporated into the product baseline at a specific point in

11.2    Benefit
                             Critical        Essential features. Failure to implement means the system will not meet
                                             customer needs. All critical features must be implemented in the release
                                             or the schedule will slip.
                             Important       Features important to the effectiveness and efficiency of the system for
                                             most applications. The functionality cannot be easily provided in some
                                             other way. Lack of inclusion of an important feature may affect
                                             customer or user satisfaction, or even revenue, but release will not be
                                             delayed due to lack of any important feature.
                             Useful          Features that are useful in less typical applications, will be used less
                                             frequently, or for which reasonably efficient workarounds can be
                                             achieved. No significant revenue or customer satisfaction impact can be
                                             expected if such an item is not included in a release.

For General Distribution                           Public Domain                                                   67
Tailor                                     Version:     <1.3>
Vision                                     Date: <21/Dec/2006>

11.3    Risk

11.4    Stability

11.5    Target Release

11.6    Reason

For General Distribution   Public Domain                         77

Shared By: