Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: Andrew Sayers <ffmpeg-devel@pileofstuff.org>
To: ffmpeg-devel@ffmpeg.org
Subject: Re: [FFmpeg-devel] [RFC] 5 year plan & Inovation
Date: Thu, 18 Apr 2024 11:22:09 +0100
Message-ID: <67e5052d-15e1-4c60-aa5f-88bc2a74c8d0@pileofstuff.org> (raw)
In-Reply-To: <45C32695-88F4-4BE0-BA67-F5F4D0187967@gmail.com>

On 18/04/2024 10:13, epirat07@gmail.com wrote:
> On 18 Apr 2024, at 9:52, Stefano Sabatini wrote:
>> On date Wednesday 2024-04-17 17:24:02 +0100, Andrew Sayers wrote:
>>> On 17/04/2024 14:58, Michael Niedermayer wrote:
>> [...]
>>> I've occasionally tried getting into ffmpeg for over a decade now, and have
>>> lurked here for the past few months as I put in the effort to grok it.
>>> On behalf of people who could contribute but don't, I'd like to suggest
>>> ffmpeg focus on *learnability*.
>>>
[...]
>>> But other issues seem like quick wins - for example I've lost count of
>>> all the times I typed two functions into Google, spent hours trying to
>>> make them work together, then finally realised I was looking at the
>>> documentation for 3.0 in one tab and 5.0 in the other.  Surely you can
>>> just add a line to the top of the documentation like "click here to see
>>> the trunk version of this file"?
>> Functions are documented in doxygen, so they depend on the major.minor
>> version, while you seem to refer to the FFmpeg version. Also on the
>> website we usually only have the latest mainline documentation, so I
>> don't understand how can you have different versions in different tabs
>> (unless you didn't update that tab since months/years).
> Thats not true and same things has happened to me multiple times,
> thats why I always have to check the URL to make sure the docs
> are the ones for master or latest release I am working with.
>
> For example see this ancient documentation here:
> https://ffmpeg.org/doxygen/1.2/index.html

I'm glad I'm not the only one making that mistake!  In fact, older versions
don't just exist, they're often the first link in Google.  For example,
typing "avformat_init_output" into Google and clicking on the first link
takes me to [1] (version 3.2).

The website doesn't have documentation for 6.1 or 7.0 ([2] and [3]),
which might have made it look like only trunk is supported?  I agree
older versions should be documented (and 6.1/7.0 added), because
sometimes you need to develop software that works with older versions,
so you *want* to compare documentation between two tabs.

If people reading the documentation should think in terms of major.minor,
how about automatically editing the PROJECT_NUMBER in doc/Doxyfile to
include that information?  That wouldn't be obvious enough to solve
the "two tabs" problem (e.g. I've had it with 1.0 documentation before now,
even though the formatting is completely different), but it would at least
mean the information is available on the page.


> We generate those for each FFmpeg version afaik, not MAJOR-MINOR of the
> libraries:
>
> https://ffmpeg.org/doxygen/6.0/index.html
>
> Maybe Michael can clarify, as I have no way to check how these are actually
> generated for the website, if this is by branch of some other logic or
> completely manual.
>
> I do agree with OP that it would be VERY helpful to have some note there on
> old docs or some overview of the different versions at least, so that its clear
> you are looking at older ones…
Without getting too far off-topic, I would also be interested in knowing 
how docs are actually generated in practice. I've tried generating 
documentation locally and making cross-references between versions, but 
some functionality is hidden behind #ifdef's (e.g. deprecations), and 
I've never been able to work out the exact magic words the site uses. 
Also, the anchors for individual functions on the site don't always 
match the ones generated locally, so I can't e.g. create my own docs and 
link to the public ones. [snip - useful information about contexts] Well 
now I guess I have to stop procrastinating! I'll write up my 
understanding (which is probably still a bit wrong) and send in a patch 
for discussion.
>>> To bring this back to ffmpeg development - I made a note to write a
>>> patch saying they were synonyms and linking that explanation from
>>> e.g. AVCodecContext, but the job has been rotting away in my todo list
>>> for a month now waiting for me to be "sure I've got it right" (i.e. to
>>> give up a perfect excuse for procrastination).  To be blunt, on some
>>> level it feels like I've put more in than I've got out of that problem,
>>> and haven't been able to psych myself up to submit a patch that could
>>> get me laughed out of the room (or worse, politely ignored).  If the
>>> project was otherwise easy-to-learn, I would have felt a much stronger
>>> sense of obligation to pay that back.
>> This looks like the usual pattern: experienced API developers don't
>> feel the need to improve the docs, so they have no real incentives to
>> do so; outsiders might need to improve it, but this means to
>> understand the intricacies of the framework, and by the time they got
>> it they probably don't need it anymore.
>>
>> Also writing good documentation - as writing good prose - is *hard*,
>> but in general bad is better than nothing.

I agree writing good documentation is hard, but IMHO FFmpeg's problem
is just about optimisation, which people round here are excellent at.
Whether optimising code or docs, you step through the process the hardware
(reader) goes through, look for wasted cycles, and fix those places.
Sometimes the solution is highly technical (spend a week learning about
SIMD or active language), but most of the time it's trivial (move a test
to an outer loop or add a link from the place where people look for it).

I bring this up here because I've seen experienced developers on the list
mention the need to bring in newbies, which means improving learnability
(mostly docs, but e.g. all the special cases in the code are problems too).
So hopefully a 5 year plan can emphasise the (indirect) need amongst people
who can do something about it.

 	- Andrew Sayers

[1] https://ffmpeg.org/doxygen/3.2/group__lavf__encoding.html
[2] https://ffmpeg.org/doxygen/6.1/
[3] https://ffmpeg.org/doxygen/7.0/
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

  reply	other threads:[~2024-04-18 10:22 UTC|newest]

Thread overview: 138+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-17 13:58 Michael Niedermayer
2024-04-17 14:22 ` Lynne
2024-04-17 14:34   ` James Almer
2024-04-17 14:50     ` Lynne
2024-04-17 15:24       ` Michael Niedermayer
2024-04-17 15:22   ` Michael Niedermayer
2024-04-17 15:55     ` Jean-Baptiste Kempf
2024-04-17 18:22       ` Michael Niedermayer
2024-04-17 18:31         ` Timo Rothenpieler
2024-04-18  0:22           ` Michael Niedermayer
2024-04-18  0:42             ` Michael Niedermayer
2024-04-17 15:57     ` Frank Plowman
2024-04-17 16:24 ` Andrew Sayers
2024-04-18  7:52   ` Stefano Sabatini
2024-04-18  9:13     ` epirat07
2024-04-18 10:22       ` Andrew Sayers [this message]
2024-04-18 19:50         ` Michael Niedermayer
2024-04-18 19:56           ` James Almer
2024-04-18 22:01           ` Andrew Sayers
2024-04-20 21:26             ` Michael Niedermayer
2024-04-18  2:21 ` Aidan
2024-04-18  6:33   ` Paul B Mahol
2024-04-18  8:19   ` Stefano Sabatini
2024-04-18 10:10     ` Aidan
2024-04-18 20:15     ` Michael Niedermayer
2024-04-18 21:15       ` epirat07
2024-04-18 22:45         ` Michael Niedermayer
2024-04-21 14:36           ` Ondřej Fiala
2024-04-18  8:46 ` Stefano Sabatini
2024-04-18  9:21   ` epirat07
2024-04-18  9:32     ` Roman Arzumanyan
2024-04-23  0:20   ` Michael Niedermayer
2024-04-23  7:47     ` Andrew Sayers
2024-04-23  8:02       ` Lynne
2024-04-23  9:38         ` Andrew Sayers
2024-04-18 14:02 ` Niklas Haas
2024-04-18 20:53   ` Michael Niedermayer
2024-04-18 21:13     ` James Almer
2024-04-18 23:19       ` Michael Niedermayer
2024-04-19  6:02         ` Paul B Mahol
2024-04-19 14:50     ` Niklas Haas
2024-04-19 15:25       ` epirat07
2024-04-19 17:35       ` Zhao Zhili
2024-04-19 18:00         ` Diederick C. Niehorster
2024-04-19 18:06           ` Vittorio Giovara
2024-04-19 19:05             ` Paul B Mahol
2024-04-19 19:45               ` James Almer
2024-04-19 19:55                 ` Paul B Mahol
2024-04-19 19:48             ` Ronald S. Bultje
2024-04-19 21:57               ` Vittorio Giovara
2024-04-19 22:28                 ` Paul B Mahol
2024-04-19 22:31                   ` James Almer
2024-04-20  0:33                     ` Paul B Mahol
2024-04-19 23:23                 ` Ronald S. Bultje
2024-04-20 23:05           ` Michael Niedermayer
2024-04-25  8:03             ` Andrew Sayers
2024-04-29  6:03       ` Davy Durham
2024-04-29 16:37         ` Ondřej Fiala
2024-04-29 16:44           ` Ondřej Fiala
2024-04-29 19:04           ` Davy Durham
2024-04-29 19:25             ` Rémi Denis-Courmont
2024-04-30 19:05             ` Ondřej Fiala
2024-04-30 23:01               ` Andrew Sayers
2024-05-02 13:47                 ` Ondřej Fiala
2024-05-02 14:20                   ` Kieran Kunhya
2024-05-02 14:34                     ` Ondřej Fiala
2024-05-02 17:44                       ` Vittorio Giovara
2024-05-02 18:38                         ` Ronald S. Bultje
2024-05-03  5:53                           ` Rémi Denis-Courmont
2024-05-03 11:28                             ` Ronald S. Bultje
2024-05-03 11:33                               ` Rémi Denis-Courmont
2024-05-03 13:54                                 ` Ronald S. Bultje
2024-05-03 14:33                                   ` Rémi Denis-Courmont
     [not found]                                   ` <3B289095-ED54-4590-B8C0-FF204218876E@cosmin.at>
2024-05-03 15:45                                     ` Cosmin Stejerean via ffmpeg-devel
2024-05-04 19:28                                       ` Michael Niedermayer
2024-05-04 21:25                                         ` Andrew Sayers
2024-05-04 21:51                                           ` epirat07
2024-05-05  0:59                                             ` Zhao Zhili
2024-05-02 19:42                         ` Ondřej Fiala
2024-05-13  6:52                         ` Tomas Härdin
2024-04-30  0:11           ` Hendrik Leppkes
2024-04-30 18:48             ` Ondřej Fiala
2024-04-30 19:06               ` Hendrik Leppkes
2024-04-30 19:15                 ` Ondřej Fiala
2024-05-01  5:27                   ` Rémi Denis-Courmont
2024-05-02 14:25                     ` Ondřej Fiala
2024-05-02 14:38                       ` Rémi Denis-Courmont
2024-05-02 19:32                         ` Ondřej Fiala
2024-05-02 20:06                           ` epirat07
2024-05-03 13:23                             ` Ondřej Fiala
2024-05-03  5:46                           ` Rémi Denis-Courmont
2024-05-03 12:58                             ` Ondřej Fiala
2024-05-03 13:29                               ` Ondřej Fiala
2024-05-03 13:48                               ` Rémi Denis-Courmont
2024-05-03 14:41                               ` Rémi Denis-Courmont
2024-05-03 17:30                                 ` Ondřej Fiala
2024-05-03 17:45                                   ` Rémi Denis-Courmont
2024-05-04 12:48                                     ` Ondřej Fiala
2024-05-02 16:35                       ` Zhao Zhili
     [not found]                         ` <34D9D362-37E5-4BFF-BA5D-01918ED7C171@cosmin.at>
2024-05-02 17:17                           ` Cosmin Stejerean via ffmpeg-devel
2024-05-04  1:11                       ` flow gg
2024-05-04 13:06                         ` Ondřej Fiala
2024-05-04 18:04                           ` Vittorio Giovara
2024-05-04 19:09                             ` Michael Niedermayer
2024-05-04 19:24                               ` Vittorio Giovara
2024-05-04 19:05                         ` Michael Niedermayer
2024-05-12 16:05                           ` Ondřej Fiala
2024-04-21  9:11 ` Rémi Denis-Courmont
2024-04-21 20:40   ` Michael Niedermayer
2024-04-23 12:12     ` Rémi Denis-Courmont
2024-04-24 22:00       ` Michael Niedermayer
2024-04-25 15:15         ` Vittorio Giovara
2024-04-27 10:24           ` Michael Niedermayer
2024-04-27 16:39             ` Vittorio Giovara
2024-05-04 20:35               ` Michael Niedermayer
2024-05-05  3:06                 ` Vittorio Giovara
2024-05-05  8:14                 ` Rémi Denis-Courmont
2024-05-05  9:18                   ` Paul B Mahol
2024-04-27 19:07             ` Ondřej Fiala
2024-04-22  1:12 ` James Almer
2024-04-22 11:07   ` Stefano Sabatini
2024-04-22 11:32     ` Lynne
2024-04-30 17:42       ` Michael Niedermayer
2024-06-17 18:34         ` Michael Niedermayer
2024-06-17 19:00           ` Nicolas George
2024-06-17 19:29             ` Vittorio Giovara
2024-06-17 23:03               ` Andrew Sayers
2024-06-17 19:25           ` Vittorio Giovara
2024-06-17 21:02           ` Rémi Denis-Courmont
2024-06-18 10:44             ` Michael Niedermayer
2024-06-18 22:38           ` Lynne via ffmpeg-devel
2024-04-24 22:50 ` Tomas Härdin
2024-04-24 23:06   ` Diederick C. Niehorster
2024-04-25  0:07   ` Michael Niedermayer
2024-04-25 10:26     ` Tomas Härdin
2024-04-27 10:53       ` Michael Niedermayer
2024-04-27 18:01         ` Tomas Härdin
2024-04-30 18:14           ` Michael Niedermayer

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=67e5052d-15e1-4c60-aa5f-88bc2a74c8d0@pileofstuff.org \
    --to=ffmpeg-devel@pileofstuff.org \
    --cc=ffmpeg-devel@ffmpeg.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

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git