From: Drew Adams <drew.adams@oracle.com>
To: Paul Eggert <eggert@cs.ucla.edu>, Eli Zaretskii <eliz@gnu.org>,
"Basil L. Contovounesios" <contovob@tcd.ie>
Cc: emacs-devel@gnu.org
Subject: RE: Predicate for true lists
Date: Sun, 8 Jul 2018 08:15:26 -0700 (PDT) [thread overview]
Message-ID: <3a8f5e42-99fd-4814-bbaf-de6f11866492@default> (raw)
In-Reply-To: <6a48d13f-9d6b-f9a6-3b41-6ea0c8294d81@cs.ucla.edu>
> > We should document the intended behavior, including
> > the error behavior.
>
> Documenting every function's behavior completely, in that function's doc string or manual section, would waste not only our time, but also time spent by users reading the documentation. Nobody does that, for any nontrivial GNU program I'm aware of. Common sense should prevail, and "document every bit of behavior" absolutism would cause more trouble than it'd cure. Thank goodness we don't do that, and have never done that.
Strawman. I never said that every function's behavior needs
to be documented completely. Nor is the text you quoted,
"document every bit of behavior" something I said - it's
just an invention on your part.
That strawman distracts from your argument that not
documenting behavior can protect future changes from being
backward incompatible. And it distracts from my argument
against that (misguided) argument.
First, I specifically distinguished between design (intended
behavior) and implementation (actual behavior, with bugs).
It's not at all about documenting "every bit of behavior".
And yes, this, like all documentation decisions, is always a
judgment call, and yes, such judgment calls for common sense.
The question here is whether (1) documenting error-handling
behavior in this case is useful to users and (2) whether not
documenting it somehow insulates future changes from being
backward-incompatible.
My point was that not mentioning error-handling behavior
does _not_ make a future change less backward-incompatible.
We should own the current design and, yes, document it for
users. And as Eli mentioned, if and when the design changes
we can update the documentation accordingly.
That's part (2) of the overall question - the only part I
actually addressed, as a reply to your ("absolutist"?)
statement to the contrary.
And that part (2) applies generally: No documentation
omission or spin can protect against backward compatibility.
It's a mistake to think or pretend that you're not breaking
backward compatibility just because the behavior you change
was never documented. Compatibility is about behavior, not
just its description.
As for part (1), which I did not speak to, there is no
hard-and-fast rule. Speaking to it now: I think it probably
is useful in this case (for `*').
But that's just one opinion, and given good counter-arguments
I might change it. I don't feel strongly about it - I don't
much care about this particular case. I posted my reply only
because of the wide-ranging, misleading argument you made
about doc silence protecting future changes - IOW, part (2).
Generally speaking, just because makers of non-free software
sometimes try to hide aspects of a design from users, that's
no reason why free software should do the same. We have
nothing to hide.
That does not provide an imperative to pedantically "document
every bit of behavior" - no connection. What it does is
remove any special incentive (commercial, "intellectual
property" related, etc.) to self-censor or otherwise not give
users info that could help them.
That we don't have a need to hide info does not imply that
we need to bore or confuse users with a wall of unhelpful
details.
Whether this or that bit of info actually helps users, and
how much, is a judgment call, on a case-by-case basis. There
is no imperative to pedantically document everything (about
design or implementation) that derives from the argument I
made, nor does my own opinion in this or that case produce
such an imperative.
---
It's probably worth being clear about another aspect of this.
It's quite possible to, by _design_, intend that some part
of the currently implemented behavior is "undefined". In
that case, yes, there is no explicit commitment to users
about that particular bit of behavior.
My own opinion is that it can often be a good idea in such
a case to explicitly call out that that bit is undefined.
That serves as an explicit warning, of sorts, that the
behavior might well change in the future. (Any behavior
might change in the future; this points out that this
particular behavior is undefined.)
In the case at hand, is the error-handling behavior of
arguments part of the design or just something to be
considered undefined - implemented but not really
intended? I think, from the discussion, that it's part
of the design, but perhaps not?
But even in the case where something is considered
undefined, and even with an explicit warning about it,
a backward-incompatible change is just that - it doesn't
become less backward-incompatible just because we excluded
that part of the behavior from the design.
Backward incompatibility is about actual behavior, always.
"The design didn't really change" is not a welcome answer
to "You broke my code". It's pretty much a cop-out.
This is not a legalistic point of view. It's a view
centered on users. It's not about whether the software
producer can be held liable or is better able to resist
a lawsuit. It's about what is most useful for Emacs and
its users.
next prev parent reply other threads:[~2018-07-08 15:15 UTC|newest]
Thread overview: 100+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-16 19:34 Predicate for true lists Basil L. Contovounesios
2018-06-04 12:12 ` Basil L. Contovounesios
2018-06-04 14:08 ` Stefan Monnier
2018-06-04 14:46 ` Basil L. Contovounesios
2018-06-04 15:31 ` Drew Adams
2018-06-04 16:14 ` Basil L. Contovounesios
2018-06-04 16:38 ` Drew Adams
2018-06-04 16:57 ` Stefan Monnier
2018-06-05 1:23 ` Paul Eggert
2018-06-05 2:57 ` Drew Adams
2018-06-05 3:08 ` Drew Adams
2018-06-05 3:12 ` Drew Adams
2018-06-05 3:25 ` Drew Adams
2018-06-05 15:05 ` Basil L. Contovounesios
2018-06-06 7:42 ` Paul Eggert
2018-06-06 9:40 ` Van L
2018-06-06 13:44 ` Stefan Monnier
2018-06-06 17:40 ` Stefan Monnier
2018-06-07 7:03 ` Van L
2018-07-05 22:31 ` Basil L. Contovounesios
2018-07-06 5:57 ` Eli Zaretskii
2018-07-06 17:16 ` Drew Adams
2018-07-06 17:38 ` Eli Zaretskii
[not found] ` <<83601sl0wo.fsf@gnu.org>
2018-07-06 18:00 ` Drew Adams
2018-07-07 6:54 ` Eli Zaretskii
[not found] ` <<<83601sl0wo.fsf@gnu.org>
[not found] ` <<95fda70b-5893-4788-83c5-a0bb5d708304@default>
[not found] ` <<8336wvleml.fsf@gnu.org>
2018-07-07 14:42 ` Drew Adams
2018-07-06 18:04 ` Paul Eggert
2018-07-07 6:58 ` Eli Zaretskii
2018-07-07 7:20 ` martin rudalics
2018-07-07 8:41 ` Paul Eggert
2018-07-07 10:04 ` Eli Zaretskii
2018-07-07 15:04 ` Basil L. Contovounesios
2018-07-07 16:12 ` Eli Zaretskii
2018-07-07 16:52 ` Basil L. Contovounesios
2018-07-07 17:07 ` Eli Zaretskii
2018-07-07 17:14 ` Paul Eggert
2018-07-07 17:34 ` Eli Zaretskii
2018-07-08 0:15 ` Drew Adams
2018-07-08 4:48 ` Paul Eggert
2018-07-08 15:15 ` Drew Adams [this message]
2018-07-08 16:00 ` Paul Eggert
2018-07-08 17:42 ` Drew Adams
2018-07-08 17:47 ` Paul Eggert
2018-07-07 17:06 ` Basil L. Contovounesios
2018-07-09 19:25 ` Basil L. Contovounesios
2018-07-09 19:40 ` Basil L. Contovounesios
2018-07-10 2:02 ` Paul Eggert
2018-07-10 5:46 ` Basil L. Contovounesios
2018-07-11 3:02 ` Paul Eggert
2018-07-11 6:27 ` Basil L. Contovounesios
2018-07-15 22:55 ` Wilfred Hughes
2018-07-16 1:37 ` Paul Eggert
2018-07-11 14:01 ` [Emacs-diffs] master babe0d4: Rearrange definition of zerop in subr.el Karl Fogel
2018-07-11 17:12 ` Basil L. Contovounesios
2018-07-11 17:33 ` Paul Eggert
2018-07-12 15:34 ` Basil L. Contovounesios
2018-07-12 15:43 ` Basil L. Contovounesios
2019-04-09 12:51 ` Predicate for true lists Basil L. Contovounesios
2019-04-09 15:33 ` Stefan Monnier
2019-04-09 16:20 ` Basil L. Contovounesios
2019-04-09 16:32 ` Stefan Monnier
2019-04-09 16:54 ` Daniel Colascione
2019-04-09 17:27 ` Basil L. Contovounesios
2019-04-09 17:27 ` Basil L. Contovounesios
2019-04-09 20:08 ` Unused value of error-free function warning (was: Predicate for true lists) Basil L. Contovounesios
2019-04-09 20:40 ` Unused value of error-free function warning Stefan Monnier
2019-04-09 20:12 ` Predicate for true lists Basil L. Contovounesios
2019-04-09 20:41 ` Stefan Monnier
2019-04-10 2:32 ` Eli Zaretskii
2019-04-10 14:16 ` Alex Branham
2019-04-10 14:34 ` Basil L. Contovounesios
2019-04-10 15:01 ` Drew Adams
2019-04-10 15:45 ` Basil L. Contovounesios
2019-04-10 16:04 ` Eli Zaretskii
2019-04-17 17:56 ` Basil L. Contovounesios
2019-04-17 18:11 ` Stefan Monnier
2019-04-21 21:42 ` Basil L. Contovounesios
2019-04-17 18:55 ` Drew Adams
2019-04-21 21:24 ` Basil L. Contovounesios
2019-04-22 0:03 ` Drew Adams
2019-04-22 1:12 ` Michael Heerdegen
2019-04-22 9:39 ` Drew Adams
2019-04-18 14:37 ` Eli Zaretskii
2019-04-21 18:30 ` Basil L. Contovounesios
2019-04-21 19:39 ` Eli Zaretskii
2019-04-21 21:37 ` Basil L. Contovounesios
2019-04-22 0:06 ` Drew Adams
2019-04-22 7:49 ` Eli Zaretskii
2019-04-22 12:59 ` Basil L. Contovounesios
2019-04-22 13:12 ` Eli Zaretskii
2019-04-22 15:19 ` Basil L. Contovounesios
2019-04-21 19:41 ` Eli Zaretskii
2019-04-21 21:41 ` Basil L. Contovounesios
2019-04-22 6:39 ` Eli Zaretskii
2019-04-22 12:58 ` Basil L. Contovounesios
2018-07-06 17:00 ` Drew Adams
2018-07-06 17:20 ` Paul Eggert
2018-07-06 17:33 ` Eli Zaretskii
2018-07-08 22:38 ` Basil L. Contovounesios
2018-07-06 17:30 ` Paul Eggert
[not found] <<<87fu3vdjjk.fsf@tcd.ie>
[not found] <<87fu3vdjjk.fsf@tcd.ie>
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3a8f5e42-99fd-4814-bbaf-de6f11866492@default \
--to=drew.adams@oracle.com \
--cc=contovob@tcd.ie \
--cc=eggert@cs.ucla.edu \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).