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

Attachment: pgpeNeJbZBumV.pgp
Description: OpenPGP digital signature

Reply via email to