Hi, everyone. Just after the news item got published, user Wes mailed me with a suggestion. While I think someone mentioned it earlier in the bikesheds over ffmpeg, I have completely forgotten about it and now I'd like to reconsider it. For this reason, I've reverted the news item while it's still fresh and p.masked the revbumps.
The idea is that instead of having USE=libav (that's tangential to USE=ffmpeg and confusing) to use a USE_EXPAND like FFMPEG_IMPL taking either ffmpeg or libav. Now, why... First of all, one of the key points in my news item is that users need to keep consistent state of USE=libav throughout all the packages. Wes pointed out that users are more likely to consider a dedicated variable (USE_EXPAND) in make.conf global than a regular USE flag. Which makes it more likely for them to end up in terrible state full of blockers. Secondly, it avoids the confusion of having USE=ffmpeg and USE=libav being used for completely different purposes. This is not only confusing by users who need to set USE='ffmpeg libav' if they want libav, but also confusing to developers who may end up using the two flags to signify the two implementations. Think of the mess of USE='gtk gtk3'. FFMPEG_IMPL feels like a natural extension of USE=ffmpeg. USE=ffmpeg tells to use ffmpeg or a replacement, FFMPEG_IMPL tells what will exactly get used. Much less confusion. Thirdly, this opens space for having more than two different implementations in the future without having to reset the system. Maybe this isn't something worth considering but -- as I see it -- the first big fork starts a precedent, and both current versions suck :). Fourthly, there's the case of implicity. Right now USE=-libav implies ffmpeg. Therefore, USE=-* implies ffmpeg as well -- which is kinda weird since it's supposedly the non-default. With this solution, USE=-* will result in explicit error asking user to select an implementation. As for the downsides: 1. there is a number of non-meaningful flag combinations. FFMPEG_IMPL='', FFMPEG_IMPL='ffmpeg libav'. They will have to be blocked via REQUIRED_USE='^^ ( ffmpeg_impl_ffmpeg ffmpeg_impl_libav )'. 2. There is some more work to get ebuilds correct (REQUIRED_USE). However, this is a minor issue compared to the potential mistakes in interpretation of USE='ffmpeg' and USE='libav'. What are your thoughts? -- Best regards, Michał Górny
pgpeNeJbZBumV.pgp
Description: OpenPGP digital signature
