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

Reply via email to