Re: On shipping more of our technical docs as manpages
- From
Jonathan Nieder <jrnieder@gmail.com>
- Date
- Sep 27, 2018, 06:34 UTC
- Message-ID
- <20180927063404.GB220288@aiede.svl.corp.google.com>
- In-Reply-To
- <20180927062011.GA1318@sigill.intra.peff.net>
Hi,
Jeff King wrote:
> On Wed, Sep 26, 2018 at 10:44:33PM +0200, Ævar Arnfjörð Bjarmason wrote:
Show 17 quoted lines
>> In terms of getting an overview it's indistinguishable from >> comments. I.e. there's nothing like an index of: >> >> man git-api-strbuf ==> working with strings >> man git-api-sha1-array ==> list, iterate and binary lookup SHA1s > > I agree that is a problem, especially for contributors less familiar > with the code base. But I think generating an index is a separate (and > much easier) problem than formatting all of the documentation. > > We already have the /** convention I mentioned above. Could we have > another micro-format like: > > /** API:strbuf - working with strings */ > > in each header file? That would make generating such an index pretty > trivial.
Can you spell out the problem for me a little more? E.g. if we had a convention that the first comment in strbuf.h should say
/* strbuf - Git's standard string type */
or even just
/* Git's standard string type */
would that do the trick?
Show 8 quoted lines
>> I'm also not in the habit of opening the *.h file for something, I >> usually just start reading the *.c and only later discover there's some >> API docs in the relevant *.h (or not). > > Interesting. I'm not totally opposed to putting the documentation > alongside the actual code. It does feel a bit cluttered to me, but I > think you're right that it keeps everything as close together as > possible.
I've experienced projects following both conventions. One thing I like a lot about documentation in the header file is that it encourages people to make the API documentation self-contained. That is, you describe the contract in a way that doesn't require reading the implementation for details.
It took me a while to get used to this kind of convention but now I really like it. So I really do prefer to keep putting API documentation in the header files in Git. (Implementation documentation in the source files is of course also very welcome.)
Show 11 quoted lines
>> It means you can't avoid seeing it or updating it when source >> spelunking, and it leaves header files short, which is useful when you'd >> like to get a general API overview without all the docs. Our documented >> headers are quite fat, e.g. strbuf.h is 60% of the size of strbuf.c, but >> less than 20% when you strip the docs. > > I don't use folds in my editor, and I guess nobody else in this thread > does, either. But they may be a reasonable tool for "wow, there are > comments, declarations, and definitions all together and I just want to > view one of them". In vim, try "set foldmethod=syntax" and then "zc" to > close the folds.
I use kythe to get an outline view of the header files.
[...]
Show 6 quoted lines
>> E.g. on Debian you can "apt install git-doc" and browse stuff like >> file:///usr/share/doc/git-doc/technical/api-argv-array.html which is the >> HTML formatted version, same for all the other api-*.txt docs. > > IMHO this is just silly. What am I as an end user going to do with > api-argv-array.html?
In Debian we just ship all the docs. For something like technical/pack-heuristics, it's quite nice. For the API docs, I think they belong in the headers.
Thanks, Jonathan