[asdf-devel] The issue at hand
Pascal Costanza
pc at p-cos.net
Sat Jan 25 09:39:09 UTC 2014
On 24 Jan 2014, at 19:56, Robert P. Goldman <rpgoldman at sift.info> wrote:
> Pascal Costanza wrote:
>>
>>> The new ASDF will break systems that subclass OPERATION. Those
>>> libraries' maintainers will have to look at their code, based on the
>>> error message, and see what needs to be done. For the vast majority of
>>> them, five minutes work will suffice. For those that take more... well,
>>> as you point out, the bug fix had to be made, and I stand ready to help
>>> those who need assistance adjusting.
>>
>> It's good to signal an error or a warning for this case.
>>
>> It would have been better if asdf:operation would have kept its old semantics, maybe with a deprecation warning when it's used, and that the new semantics would have been provided by, say, asdf3:operation. People who see the warning and care about keeping things up to date could react to the warning and move from asdf:operation to asdf3:operation, which is not much more work than what is necessary now. People who care less (maybe because other things are more important - asdf is not the center of the universe after all) would not need worry, because everything would work as before, even in a setting where both asdf2 and asdf3 semantics would be needed side by side.
>
> I believe that the issue was that Faré couldn't preserve both:
>
> 1. OPERATION is the universal superclass so that methods on it could do
> things like introspection, collect statistics, etc. and
>
> 2. OPERATION provides a certain expected set of behaviors to those who
> wish to provide their own subclasses.
>
> He had to choose one or the other, so he chose 1, and sacrificed 2. He
> has successfully convinced me, at least, that he couldn't do both.
>
> This suggests as a lesson for the future that one might wish to always
> distinguish between class FOO and class FOO-EXTENSION where the library
> user is to subclass only FOO-EXTENSION (but may, for special cases,
> define methods on FOO).
This is what the CLOS MOP already does (object -> standard-object, class -> standard-class, method -> standard-method, etc.).
Pascal
--
Pascal Costanza
The views expressed in this email are my own, and not those of my employer.
More information about the asdf-devel
mailing list