From: Nicolas George <george@nsup.org> To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] API enhancements / broken promises Date: Mon, 15 Aug 2022 18:47:34 +0200 Message-ID: <Yvp4pljV2v3unqq1@phare.normalesup.org> (raw) [-- Attachment #1.1: Type: text/plain, Size: 4081 bytes --] Hi. Over the years, I have promised quite a few enhancement to FFmpeg's API, some of them connecting to user interface: stored error messages instead of just logging, universal serialization of objects into various formats (JSON, XML, etc.), a way to exfiltrate data from filters and other components, better options parsing avoiding multiple levels of escaping, asynchronous interface for protocols and later formats, avoiding global state including a more reliable control of allowed components, and I might be forgetting a few of them. I will not be able to make good on these promises, mostly for no fault of mine. I have detailed plans on how to achieve any of these goals; I would not have proposed otherwise. I can explain them if somebody is interested. A lot of these projects require a good string API. Unfortunately, my proposal for that is being blocked by a member of the tech committee who, by their own admission, almost never deals with strings and never used BPrint, and whose arguments amount to “I am not convinced we need it”, and the others members of the committee do not care enough to override them. The other projects require other kinds of preliminary framework APIs equally at risk of getting blocked for the same flimsy reasons, and I am not so fond of wasting my time as to start implementing them in these circumstances. I have the hubris to believe that if I am not good at micro-optimizing code and implementing compression standards, my skills as an architect have proved useful to the project in the past and can be useful in the future too, that they cover an area that complements the skills of others. (Regarding past architecture changes, the refcounted packets system and the send/receive libavcodec interface are sound architecture, but they are also quite obvious, not requiring a lot of creativity. Also, I suspect I could have avoided one level of annoying indirection on the refcounted buffers had I had my word to say at the time.) The first steps of all these projects are not fancy, they will not make the code spectacularly simpler. On the other hand, I have made sure they are unobtrusive: a pair of files for the implementation, a few examples of where they already help a little, not 100+ patch series that have to absolutely be applied at once and/or steps on everybody's toes. If they happen to completely fail, we just remove them, no harm done. But they are necessary to move forward. Yet they are blocked. I will not install you a jacuzzi if you do not trust my judgement as an architect that you need proper water drainage first. This project is dying, for lack of leadership and vision. In fact, this project has been dying ever since we wondered how we should change to entice the forkers back instead of wondering how the forkers needed to change to be accepted back. As a result, we changed in the very direction that caused the fork to die. And due to that change, I am more and more losing interest in FFmpeg. I will probably continue to enhance the framework of libavfilter at a snail's pace, because at least the battles I have to lead there are not uphill, but do not expect much more from me. Unless there is a surge of interest from the others core developers and it is made clear that you want to move forward towards a better API and you trust my planning as long as the code itself is good and either unobtrusive or really useful. But I am not holding my breath. Fortunately, I have others projects of my own, and I will have more time to invest into them. A lot of the thinking I have done for FFmpeg I will be able to reuse for my own benefit. Which leads me to my last point: I have confirmation that my appetence as a teacher will be starved in the near future, so if somebody is looking for tutoring in low-level Unix/C system and network programming, a collaboration could be greatly appreciated and mutually beneficial. I think it is all I have to say for now. Regards, -- Nicolas George [-- Attachment #1.2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] [-- Attachment #2: Type: text/plain, Size: 251 bytes --] _______________________________________________ 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".
next reply other threads:[~2022-08-15 16:47 UTC|newest] Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-08-15 16:47 Nicolas George [this message] 2022-08-16 23:16 ` Stefano Sabatini 2022-08-17 17:21 ` Michael Niedermayer 2022-08-17 20:48 ` Nicolas George 2022-08-18 8:48 ` Tomas Härdin 2022-08-18 17:19 ` Jean-Baptiste Kempf 2022-08-19 18:30 ` Michael Niedermayer 2022-08-19 19:35 ` Timo Rothenpieler
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=Yvp4pljV2v3unqq1@phare.normalesup.org \ --to=george@nsup.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