License Wizard design, take 1
rousskov at measurement-factory.com
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.
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?
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