Hi,

ok, so do we continue here?

1) Do we version the language and add a "requires version X" statement to
the language and into scripts? I saw objections to it, although I would
consider this the only way how ever could evolve commands while still being
somehow backwards compatible.
2) Extend the language and "deprecate" the incorreclty implemented commands
(as Karl suggested), but still leave them functioning? I think that this
approach backfires as soon as we extend already existing commands, because
we need to implement them as completely new commands (my suggestion). But
of course we don't have issues with backwards compatibility at all.
3) For this specific case we fix the implementation and log WARNINGS, in
case it seems that the old (incorrect) behavior was expected. Not really
backwards compatible and might break existing implementations.

I could imagine that we use (3) only in this specific case, not as a
general pattern. For any future extension of the repoinit language (be it a
modification of the existing semantic or even just a simple extension) we
have to find another way, and (1) seems the only solution to me.

WDYT?

Jörg


Am Mi., 3. Okt. 2018 um 13:24 Uhr schrieb Jörg Hoh <jhoh...@googlemail.com>:

> Hi,
>
> Am Di., 2. Okt. 2018 um 07:46 Uhr schrieb Karl Pauls <karlpa...@gmail.com
> >:
>
>> Can’t we stay BC and just introduce a new command that has the new
>> behavior
>> and keep the old one as is?
>>
>> Something like:
>>
>> DELETE REAL USER
>>
>> or similar would be consistent with the service user delete at least.
>>
>
> So you would add some additional commands to the language, which finally
> do what the original version promised to do?
>
> * DELETE USER foo -> removes both real and service users (as today)
> * DELETE SERVICE USER foo -> removes both real and service users (as today)
> * DELETE REAL USER foo -> would delete only a real user?
> * DELETE REAL SERVICE USER foo -> would delete only a service user?
>
> Looks absurd to me. I agree the backward-compatibility is highly
> important, but here it prevents to fix bugs. Also I haven't found any
> documentation which clearly explains the operations in detail, so I had to
> guess from the repoinit examples what the operations are supposed to do. So
> the current implementation does not contradict the documentation or
> specification because there is none. But it contradicts the expectation I
> got from reading the command. If there is a "DELETE USER" and a "DELETE
> SERVICE USER" command, there must be different implementation behind it
> (otherwise there would be only 1 command), and the obvious difference is
> the the "DELETE SERVICE USER" deletes a service user.
>
> I would also assume that any user of repoinit, who started based on the
> existing documentation has the impression as I have and used the commands
> in the same way; but I would question even that, because then this flaw in
> the implementation would have been found much earlier.
>
> So my proposal is to fix the bug, change the implementation in the
> incompatible way (maybe add some log messages for the cases where the old
> implementation would done the wrong thing) and document it properly. And
> that's it.
>
>
> --
> Cheers,
> Jörg Hoh,
>
> http://cqdump.wordpress.com
> Twitter: @joerghoh
>


-- 
Cheers,
Jörg Hoh,

http://cqdump.wordpress.com
Twitter: @joerghoh

Reply via email to