On Fri, Dec 14, 2012 at 08:26:33PM -0800, Joe Mistachkin wrote:
> 
> My opinion is that backward compatibility should be retained because various
> people, including several that may not be involved in this discussion, have
> existing scripts and other automation that relies upon the current behavior.

Backward compatibility should be broken sometimes.  It is a decision that
should be undertaken only with great care, but it should sometimes be
undertaken.  That's an important part of how software improves over time.


> 
> Whether the current behavior being "ideal" or not is an entirely different
> debate.
> 
> My ideas on this issue are as follows:
> 
> 1. Retain the existing behavior for all current commands and aliases.
> It is far too dangerous to change the DEFAULT semantics of these
> commands now.

I disagree.  A careful, measured approach to changing default behavior
with a clear, unambiguous understanding of when and how things change
mitigates the potential for problems.  The major version number in
semantic versioning practice, in fact, exists specifically for the
purpose of indicating that backward compatbility has been broken.  Thus,
changes to default behavior that break backward compatibility should only
be released in major version number releases (and their release
candidates, if applicable), additions to the functionality of the
software without destructive changes should only be released on major and
minor version numbers, and fixes can be released on major, minor, or
revision version numbers.  This way, when you consider an upgrade, you
know what you're getting into just by looking at the number.

If you are not ready for changes in default behavior, don't upgrade to
the next major version number.  There is no good argument for software
defaults to be set in stone for all time.  Just use reasonable caution
when releasing changes to default behavior.


> 
> 2. Add entirely new commands named "relocate" (for mv) and "obliterate"
> (for rm) that will perform actions on the repository itself as well as
> the file system.

Apart from the fact that these terms are already used elsewhere with
distinctly different meanings (thus duplicating the problem that already
exists), it does not solve the problem that already exists.


> 
> 5. Optionally, add a -f/-filesystem option to the existing mv/rm
> commands if there is consensus on this point.  This new option will
> cause the exact same behavior as the new commands, including the errors
> as described above.

Honestly, if the repurposing of the rm and mv commands is not to happen
(though it should), this is the only suggestion that I think really makes
sense for the project.  A -f (--force, probably, rather than
--filesystem) is better than `relocate` and `obliterate` commands as you
have suggested, I think.  Of course, the problem of surprising behavior
for `rm` and `mv` would still apply in that case.

-- 
Chad Perrin [ original content licensed OWL: http://owl.apotheon.org ]
_______________________________________________
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users

Reply via email to