Subject: Re: License Wizard design, take 1
From: "Alex Rousskov" <rousskov@measurement-factory.com>
Date: Fri, 08 Apr 2005 14:24:36 -0600

On Fri, 2005/04/08 (MDT), <jclift@digitaldistribution.com> wrote:

> Alex Rousskov wrote:
>>      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.
>
> Ok.  I'm thinking "database driven" then.

I do not think we need a database (which implies an extra interface to
update it, among other things). We just have a few semi-structured objects
to deal with. A simple hand-edited XML file would suffice, IMO.

>>    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
>
> Ok.  Examples?

Sure:

   If user wants a reciprocal license, then
     set the weight of all other licenses to "never".

   If user does not care about reciprocity, then
     decrease the weight of all reciprocal licenses by 30%.

The above is trivial to configure via a couple of XML tags. You can see  
how CC does that.

>>  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.
>
> Ok, I need a few examples here to really get a solid, concrete  
> understanding.  When I was thinking about it before, I found it  
> difficult to get an idea of what actual, practical weightings could be  
> used.

For example, if OSI introduces several tiers for all certified licenses,  
then
the initial weights would be higher for licenses in higher tiers.

>>  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.
>
> Wouldn't it be the answers have weights?  I'm thinking "implementation"  
> btw.

Question weights are for deciding which question to ask next and
which questions should not be asked at all. Answers do not have weights
unless we want to support confidence levels of some sort. See above
for an example ("wants a reciprocal license" is an answer).

> Displaying the number of licenses that would remain (etc) feels like a  
> bad idea, as we want to have things appear (visually and mentally)  
> straightforward.  "Clean and simple"

I am not sure. If I am selecting an option that decreases my choice space
to one license, I would think twice about that question. I do not think
this information will make the interface dirty or complex.

> What will the weight terms be?  (I'm thinking "how many dimensions?" but  
> that may be a wrong viewpoint for your concept)

Just one dimension. Weight is a number from 0 to 100, plust two special
cases (mislabeled "always" and "never").

>> 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.
>
> I'd just throw it in a database, with an interface of some sort for it.
>
> i.e. PHP, OpenOffice.org form, or whatever.
>
> Very easy.

"Database" does not sound "easier" than a text file to me, but may be
that just shows my age. For the first version, I would recommend using
a hand-edit config file. Something that OSI folks can actually see and
touch. You can always hide that behind a fancy interface for that later,
I guess.

> Um... I'm not convinced.
>
> To *me* it feels like once of those "nice in theory" idea that is easily  
> bogged down in details.
>
> However, I'm quite willing and open to be proven wrong on this, and it  
> could just be I need it to feel "more concrete" in terms I grok.
>
> Thus my desire for some concrete, practical examples of what weightings  
> we'd use and how they'd be weighted.

Here are a few more examples:

   If user wants GPL compatibility then
     set the weight of all GPL-incompatible licenses to "never" and
     set the weight of questions related to patent-defense to "never".


   If user prefers patent-defense clauses, but does not insist on them, then
     increase the weight of Apache 2.0 license by 50%.


Again, the above is trivial to express in XML (which means we will not have
parsing problems). Creative Commons, for example, already have DTDs for  
license
and question elements. Here is an XML file with CC questions:

         http://cvs.sourceforge.net/viewcvs.py/cctools/chooselicense-xml/questions.xml?view=markup

Do these examples clarify?

Thanks,

Alex.