License Wizard design, take 1

Alex Rousskov rousskov at
Fri Apr 8 04:39:32 UTC 2005


	Here is an outline of a License Finder wizard design I promised.
I tried to keep it relatively high-level, given this list audience. If
this design is acceptable (after some polishing), it would be easy to
implement it; we can reuse some of the Creative Commons XML schemas and,
possibly, some of their rendering code.  If this design is bad, somebody
else should take the lead and propose a better design.

Design goals:

    a) Fully configurable set of questions and licenses.

    b) Configurable effects of each answer to a given question:  what
       license(s) now seem to match user preferences "better" or "worse",
       and what questions to ask next

    c) Hard-coded algorithm for asking the next "best" question and
       eventually recommending the "best" license(s).

    d) Hard-coded HTML rendering engine (with CSS-configurable "skin"?)

The wizard operates on the following "objects":

1. Licenses that the wizard may recommend. Each licenses has a URL for
    the license text and a comment field rendered when the license is
    recommended by the wizard. Licenses are assigned weights depending on
    user answers to wizard questions. Licenses can be grouped (e.g., all
    reciprocal licenses can be referred to by a single ID).

2. Questions that the wizard may ask. Each question has question text
    and a comment field explaining the question. Questions are assigned
    weights depending in user answers to wizard questions. Each question
    has two or more possible answers.

3. Each possible answer includes answer text and a comment field
    explaining the answer effect or meaning. Each answer has a set of
    actions that change weight of licenses and/or other questions. When
    displaying a possible answer, the wizard may show the number of
    licenses that would remain in the candidate pool if that answer is
    selected by the user.

4. Weights are numbers ranging from 0 to 100. In addition to those
    numbers, there are two special weights: "never" (the item will never
    be used) and "always" (the item is guaranteed to be used).

Configuration: An administrator (e.g., OSI) can configure the wizard
installation with arbitrary set of licenses, questions, and answer
actions.  All via a simple XML file (or files). It should be easy to
take one configuration and produce another by tweaking default weights,
questions, or actions. The configuration does not have to include all
OSI certified licenses, of course.

Overall operation: The wizard asks questions in their weight order. When
there are no more questions with positive weight, the wizard recommends
licenses in their weight order (with a reasonable cutoff algorithm).
Starting weights are provided for questions and licenses.

The above design should be a decent starting point, IMO. Eventually, the
wizard interfaces and functionality can be made more powerful and
feature-full: A user may be able to specify his certainty level when
answering a question. Actions may depend on more than one past answer.
The wizard can provide interesting stats. After recommending license(s),
the wizard can print a list of weight-changing action comments to
explain why a certain license was recommended [or not]. Etc., etc.

IMO, it would take 10-20 hours of work to implement the above, without
a fancy interface and without a well-thought set of actual questions.
The latter can be done on this list, in parallel with the development

What do you think?

Thank you,


P.S. In theory, the wizard can help the user select any "good object(s)"  
a set of configured object candidates, using configured questions and  
There is pretty much nothing specific to licenses here.

More information about the License-discuss mailing list