On 07/31/09 06:31, Dave Miner wrote:
>
>>>
>>>>>
>>>>> The solution in use case 3 tries to infer format based on the 
>>>>> attributes specified, and misses existing and future options.  For 
>>>>> example, it's possible to install SVR4 packages from an http URL, 
>>>>> and IPS will have an on-disk format in the future.  I strongly 
>>>>> recommend making declaration of package type explicit, if that's 
>>>>> necessary, or have it automatically resolved by your solution 
>>>>> based on a recognition of the location's format (which may be 
>>>>> relatively simple).
>>>> Good point.  Better not to assume a certain format or location type 
>>>> for different kinds of packages.  I think being explicit about the 
>>>> type of package is better than resolving it automatically for the 
>>>> following reasons:
>>>> - It makes the package type explicit in the manifest, with no extra 
>>>> effort on the user's part. (Instead of "package" elements, we can 
>>>> have "IPS", "legacy" and "DU" elements to call out the specific 
>>>> types.)
>>>> - It is more maintainable, since if some new format of a package is 
>>>> introduced, the installers won't have to be updated to recognize them.
>>>>
>>>> Additionally, it is simpler for us to implement at the outset.
>>>
>>> I would not use "package" elements.  Perhaps call it a 
>>> "driver_bundle" or something of the sort with an additional "type" 
>>> attribute.  This avoids further overloading the package term, and 
>>> limits the amount of change to the schema required for additional 
>>> types, should any future ones be needed.
>> I changed "package" elements to "IPS", "legacy" and "DU" elements.
>
> That would still leave the problem of needing a schema update to add 
> additional types, though, wouldn't it?  I think it would be preferable 
> to not need that.
>
Either way there would need to be a schema update if we add additional 
types, but it is true that the change would be less. 

Looking at this with fresh eyes this morning, what I like more about 
your approach is that it is more understandable to the user.

So I'll change the example to:
    <add_drivers>
       <bundle type="IPS", name="SUNWraiddev",
            location="http://myrepo";, noinstall/>
       <bundle type="legacy" name="SUNWtata,SUNWtata2",
            location="/media/usbstick/tatadir"/>
       <bundle type="DU", name="*",
            location="/media/du_volume"/>
    </add_drivers>

    Thanks,
    Jack

Reply via email to