unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Dmitry Gutov <dgutov@yandex.ru>
Cc: philip@warpmail.net, theo@thornhill.no, emacs-devel@gnu.org
Subject: Re: master 1e3b0f2: Improve doc strings of project.el
Date: Sun, 12 Jul 2020 17:47:51 +0300	[thread overview]
Message-ID: <83a704okmg.fsf@gnu.org> (raw)
In-Reply-To: <cb001438-3d86-c6a7-a891-501b890254d4@yandex.ru> (message from Dmitry Gutov on Sun, 12 Jul 2020 17:16:19 +0300)

> Cc: theo@thornhill.no, philip@warpmail.net, emacs-devel@gnu.org
> From: Dmitry Gutov <dgutov@yandex.ru>
> Date: Sun, 12 Jul 2020 17:16:19 +0300
> 
> If I said something is a bad idea, don't go ahead and ignore me. This is 
> extremely rude.

This goes both ways.

> Not documenting internal information is a valid choice.

It isn't internal.  Anyone who wants to use the return value will need
to understand its possible form(s).

> > But other than that, if someone needs to write code for the VC project
> > backend, how can they NOT rely on the form of the object that
> > project-try-vc returns?
> 
> Nobody should "write code for the VC project backend" except its 
> author(s).

This is a community project, and everybody is welcome to contribute
code to any part of Emacs.  Restricting some parts of code to a single
person is not a good way of ensuring Emacs's future.

> Whatever fuctionality users need to implement, should target the open 
> API. Which does not depend on the shape of the return value of 
> project-try-vc.

With respect, I disagree, having read the code and having considered
how I would implement something related to it.  That is the single
most important reason why I'm trying to improve the documentation of
this package: to make it easier for others to expand and extend it.

> > Why should that form, which is important for
> > handling any VC project, and is thus part of a public API, be left
> > undocumented?
> 
> No, they can't. That information can freely change between versions, so 
> any reliance on it will create compatibility problems when upgrading.

Then let's say that.  But concealing the information will not solve
the problem, because you cannot conceal it.  By not mentioning it and
the caveats to go with it we will be punished twice: we will make it
harder for people to understand the current code and contribute to it,
and we will not make sure they realize that relying on these details
is not a good idea.

> > You anyway cannot conceal from users information about the innards of
> > a Lisp implementation: since the source code is there for everyone to
> > see and study, any information you try to conceal will be eventually
> > found.  All you can do is cause users aggravation by forcing them to
> > hunt for that information through many rabbit holes.  There are no
> > advantages to doing this, only disadvantages.
> 
> If my method of saying "don't rely on this format" is insufficient, 
> please go ahead and add some more clarifications on that part. But 
> without documenting this said value format.

You cannot usefully tell people to not rely on something without
describing that something.  And there's the other disadvantage to
concealing information: obfuscation of the code.

> > More generally, please put yourself in the shoes of someone who wants
> > to extend an existing backend, or add a new backend, and try to read
> > the documentation through their eyes.
> 
> If they create a new backend, they will read the code of the existing 
> one.

That's not how we encourage extending Emacs.  Some minimal
documentation is needed before we can in good faith tell users to read
the code, and project.el currently falls short of that minimum, IMO.

> > They will need to know
> > something about the methods they should implement/extend, about which
> > ones are and which ones aren't mandatory.
> 
> That is orthogonal to this issue.

I don't think it's orthogonal, I think it's all part of the same
issue.

> > They will need to know
> > something about what the project object is or can be, and what minimum
> > capabilities should it have.
> 
> Hence the description in my latest commit.

It was insufficient.  And what we have now, after my changes, is still
insufficient, IMO.  More work is needed.

> >> We have enough trouble with user-defined functions returning (cons 'transient some-root-dir) already.
> > 
> > Which trouble is that?
> 
> People try to customize the root-finding logic this way, and as a result 
> get a project backend that behaves more slowly than the VC one. And that 
> affects all of project-* commands that they might like to use.

People learn by doing and by making mistakes.  It is not a catastrophe
if their first attempt is suboptimal.  Making the documentation better
might be one way of helping them understand how to DTRT.

> > And as long as we are talking about this: you mentioned the
> > "transient" project without defining what it is.  That is not useful.
> > I tried to add some minimal explanation of that, and also fixed
> > another related omission.
> 
> I would say thank you, but you again documented the return value there.

Of course.  It's a value that others need to be aware of.

> The value is *irrelevant*, and it is, again, internal to the backend.

Which backend is that?  AFAICT, project-current is backend-agnostic.



  reply	other threads:[~2020-07-12 14:47 UTC|newest]

Thread overview: 149+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20200619075401.21856.16524@vcs0.savannah.gnu.org>
     [not found] ` <20200619075402.CE1D220A27@vcs0.savannah.gnu.org>
2020-06-19 11:01   ` master 1e3b0f2: Improve doc strings of project.el Dmitry Gutov
2020-06-19 11:24     ` Eli Zaretskii
2020-06-19 11:37       ` Basil L. Contovounesios
2020-06-19 11:50         ` Eli Zaretskii
2020-06-19 12:30       ` Dmitry Gutov
2020-06-19 12:44         ` Eli Zaretskii
2020-06-19 12:54           ` Dmitry Gutov
2020-06-19 13:27             ` Philip K.
2020-06-19 13:34               ` Dmitry Gutov
2020-06-19 14:11               ` Eli Zaretskii
2020-06-19 14:18                 ` Dmitry Gutov
2020-06-19 14:24                   ` Eli Zaretskii
2020-06-19 14:41                     ` Philip K.
2020-06-20  7:22                       ` Eli Zaretskii
2020-06-19 14:25                 ` Theodor Thornhill
2020-06-19 14:37                   ` Eli Zaretskii
2020-06-19 14:49                     ` Dmitry Gutov
2020-06-19 15:11                       ` Eli Zaretskii
2020-06-19 18:33                         ` Dmitry Gutov
2020-06-19 19:01                           ` Eli Zaretskii
2020-06-19 19:28                             ` Dmitry Gutov
2020-06-20  6:43                               ` Eli Zaretskii
2020-06-20  7:43                                 ` Theodor Thornhill
2020-06-20  8:55                                   ` Eli Zaretskii
2020-06-20  9:29                                     ` Theodor Thornhill
2020-06-20 10:07                                       ` Eli Zaretskii
2020-06-20 10:19                                         ` Theodor Thornhill
2020-06-20 11:37                                           ` Dmitry Gutov
2020-06-20 11:35                                         ` Dmitry Gutov
2020-06-20 12:32                                           ` Eli Zaretskii
2020-06-20 22:21                                             ` Dmitry Gutov
2020-06-20 11:29                                     ` Dmitry Gutov
2020-06-20 11:46                                       ` Kévin Le Gouguec
2020-06-20 11:57                                         ` Dmitry Gutov
2020-06-20 12:37                                           ` Eli Zaretskii
2020-06-20 21:18                                             ` Dmitry Gutov
2020-06-20 12:25                                       ` Eli Zaretskii
2020-06-20 23:17                                         ` Dmitry Gutov
2020-06-20 11:25                                 ` Dmitry Gutov
2020-06-20 12:12                                   ` Eli Zaretskii
2020-06-20 12:30                                     ` Basil L. Contovounesios
2020-06-20 12:42                                       ` Eli Zaretskii
2020-06-20 23:11                                     ` Dmitry Gutov
2020-06-21 15:08                                       ` Eli Zaretskii
2020-06-21 22:24                                         ` Juri Linkov
2020-06-22  2:27                                           ` Eli Zaretskii
2020-06-28  0:56                                         ` Dmitry Gutov
2020-06-28 14:28                                           ` Eli Zaretskii
2020-06-28 22:35                                             ` Dmitry Gutov
2020-06-29 14:50                                               ` Eli Zaretskii
2020-06-29 15:07                                                 ` Stephen Leake
2020-06-29 22:35                                                   ` Juri Linkov
2020-07-01 22:02                                                     ` Dmitry Gutov
2020-07-01 22:07                                                   ` Dmitry Gutov
2020-07-01 22:57                                                 ` Dmitry Gutov
2020-07-04  7:15                                                   ` Eli Zaretskii
2020-07-04 22:22                                                     ` Dmitry Gutov
2020-07-05 14:26                                                       ` Eli Zaretskii
2020-07-05 19:45                                                         ` Dmitry Gutov
2020-07-07 15:04                                                           ` Eli Zaretskii
2020-07-07 15:23                                                             ` Dmitry Gutov
2020-07-10 14:27                                                               ` Eli Zaretskii
2020-07-10 14:57                                                                 ` Dmitry Gutov
2020-07-10 18:14                                                                   ` Eli Zaretskii
2020-07-10 19:36                                                                     ` Dmitry Gutov
2020-07-11  6:58                                                                       ` Eli Zaretskii
2020-07-11 11:29                                                                         ` Dmitry Gutov
2020-07-11 12:35                                                                           ` Eli Zaretskii
2020-07-12  0:48                                                                             ` Dmitry Gutov
2020-07-12 14:00                                                                               ` Eli Zaretskii
2020-07-12 14:16                                                                                 ` Dmitry Gutov
2020-07-12 14:47                                                                                   ` Eli Zaretskii [this message]
2020-07-12 15:08                                                                                     ` Dmitry Gutov
2020-07-12 15:36                                                                                       ` Eli Zaretskii
2020-07-12 16:17                                                                                         ` Eli Zaretskii
2020-07-13  1:51                                                                                           ` Dmitry Gutov
2020-07-13  4:40                                                                                             ` Eli Zaretskii
2020-07-13  7:11                                                                                               ` Gregory Heytings via Emacs development discussions.
2020-07-13  7:21                                                                                                 ` Eli Zaretskii
2020-07-13  7:52                                                                                                   ` Gregory Heytings via Emacs development discussions.
2020-07-13  8:53                                                                                                     ` Eli Zaretskii
2020-07-13 18:26                                                                                                       ` Dmitry Gutov
2020-07-13  7:58                                                                                                 ` tomas
2020-07-17 10:27                                                                                                   ` Dmitry Gutov
2020-07-17 15:27                                                                                                     ` tomas
2020-07-18  0:55                                                                                                       ` Dmitry Gutov
2020-07-18  9:05                                                                                                         ` tomas
2020-07-18 10:10                                                                                                           ` Eli Zaretskii
2020-07-18 11:58                                                                                                             ` Dmitry Gutov
2020-07-18 19:14                                                                                                           ` Dmitry Gutov
2020-07-19  2:27                                                                                                             ` Richard Stallman
2020-07-19 21:59                                                                                                               ` Dmitry Gutov
2020-07-20  2:44                                                                                                                 ` Richard Stallman
2020-07-13 19:51                                                                                               ` Dmitry Gutov
2020-07-16 16:34                                                                                                 ` Eli Zaretskii
2020-07-16 18:55                                                                                                   ` Dmitry Gutov
2020-07-16 19:57                                                                                                     ` Eli Zaretskii
2020-07-16 21:02                                                                                                       ` Dmitry Gutov
2020-07-17  1:07                                                                                                     ` Richard Stallman
2020-07-17  1:30                                                                                                       ` Dmitry Gutov
2020-07-16 18:56                                                                                                   ` Dmitry Gutov
2020-07-16 19:59                                                                                                     ` Eli Zaretskii
2020-07-16 20:53                                                                                                       ` Dmitry Gutov
2020-07-13  2:51                                                                                         ` Richard Stallman
2020-07-13 10:47                                                                                           ` Dmitry Gutov
2020-07-13 13:00                                                                                             ` Eli Zaretskii
2020-07-13 15:24                                                                                               ` Dmitry Gutov
2020-07-13 16:30                                                                                                 ` Eli Zaretskii
2020-07-13 19:01                                                                                                   ` Dmitry Gutov
2020-07-13 19:41                                                                                                     ` Eli Zaretskii
2020-07-13 21:39                                                                                                       ` Dmitry Gutov
2020-07-11 12:59                                                                           ` Michael Albinus
2020-07-12 14:49                                                                             ` Dmitry Gutov
2020-07-12 17:19                                                                               ` Michael Albinus
2020-06-28 22:14                                         ` Dmitry Gutov
2020-06-29 14:32                                           ` Eli Zaretskii
2020-06-19 15:02                     ` Dmitry Gutov
2020-06-19 15:13                       ` Eli Zaretskii
2020-06-19 18:23                         ` Dmitry Gutov
2020-06-19 18:44                           ` Eli Zaretskii
2020-06-19 18:49                             ` Dmitry Gutov
2020-06-19 19:07                               ` Eli Zaretskii
2020-06-19 15:02                     ` Theodor Thornhill via Emacs development discussions.
2020-06-19 15:19                       ` Eli Zaretskii
2020-06-19 15:39                         ` Theodor Thornhill
2020-06-19 17:11                           ` Eli Zaretskii
2020-06-19 17:46                             ` Theodor Thornhill
2020-06-19 18:03                               ` Eli Zaretskii
2020-06-19 18:19                                 ` Dmitry Gutov
2020-06-19 18:36                                   ` Eli Zaretskii
2020-06-19 18:49                                     ` Dmitry Gutov
2020-06-19 18:22                                 ` Theodor Thornhill
2020-06-19 18:41                                   ` Eli Zaretskii
2020-06-19 18:57                                     ` Theodor Thornhill
2020-06-19 19:10                                       ` Dmitry Gutov
2020-06-19 20:08                                         ` theo
2020-06-19 19:04                                     ` Dmitry Gutov
2020-06-19 19:12                                       ` Eli Zaretskii
2020-06-19 19:33                                         ` Dmitry Gutov
2020-06-20  7:20                                           ` Eli Zaretskii
2020-06-20 11:41                                             ` Dmitry Gutov
2020-06-20 12:36                                               ` Eli Zaretskii
2020-06-20 21:58                                                 ` Dmitry Gutov
2020-06-19 18:21                           ` Dmitry Gutov
2020-06-19 18:30                             ` Theodor Thornhill
2020-06-19 14:07             ` Eli Zaretskii
2020-06-19 14:23               ` Dmitry Gutov
2020-06-19 14:28                 ` Eli Zaretskii
     [not found] <<87bllfqj82.fsf@warpmail.net>
     [not found] ` <<83o8pfxhzq.fsf@gnu.org>
     [not found]   ` <<I2nnldrvYQuQLpqgZyK7owqcMuP8kMtAdgkVXzq66i2hg6TgDaYFJe4RMj19j0J9Z1WqR9_vbifeegWNOLS3BBv-R34nJLuXYurqIVrefNE=@thornhill.no>
     [not found]     ` <<83imfnxgt3.fsf@gnu.org>
     [not found]       ` <<626efe11-0f9c-081b-11dd-0d61cee8168d@yandex.ru>
     [not found]         ` <<83h7v7xf7w.fsf@gnu.org>
     [not found]           ` <<b7f4a9ba-4320-b7b2-e150-74d667943ecd@yandex.ru>
     [not found]             ` <<831rmayj55.fsf@gnu.org>
     [not found]               ` <<6dc2c2ac-8e17-f044-dc78-8c109f936ad2@yandex.ru>
     [not found]                 ` <<83wo42w83e.fsf@gnu.org>
     [not found]                   ` <<6762abf5-71c1-aa54-1bac-d4c90c20870b@yandex.ru>
     [not found]                     ` <<831rmavsuq.fsf@gnu.org>
2020-06-20 22:55                       ` Drew Adams

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=83a704okmg.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=dgutov@yandex.ru \
    --cc=emacs-devel@gnu.org \
    --cc=philip@warpmail.net \
    --cc=theo@thornhill.no \
    /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).