1 |
Hi, everyone. |
2 |
|
3 |
Just after the news item got published, user Wes mailed me with |
4 |
a suggestion. While I think someone mentioned it earlier |
5 |
in the bikesheds over ffmpeg, I have completely forgotten about it |
6 |
and now I'd like to reconsider it. For this reason, I've reverted |
7 |
the news item while it's still fresh and p.masked the revbumps. |
8 |
|
9 |
The idea is that instead of having USE=libav (that's tangential to |
10 |
USE=ffmpeg and confusing) to use a USE_EXPAND like FFMPEG_IMPL taking |
11 |
either ffmpeg or libav. Now, why... |
12 |
|
13 |
|
14 |
First of all, one of the key points in my news item is that users need |
15 |
to keep consistent state of USE=libav throughout all the packages. Wes |
16 |
pointed out that users are more likely to consider a dedicated variable |
17 |
(USE_EXPAND) in make.conf global than a regular USE flag. Which makes |
18 |
it more likely for them to end up in terrible state full of blockers. |
19 |
|
20 |
Secondly, it avoids the confusion of having USE=ffmpeg and USE=libav |
21 |
being used for completely different purposes. This is not only |
22 |
confusing by users who need to set USE='ffmpeg libav' if they want |
23 |
libav, but also confusing to developers who may end up using the two |
24 |
flags to signify the two implementations. Think of the mess of USE='gtk |
25 |
gtk3'. |
26 |
|
27 |
FFMPEG_IMPL feels like a natural extension of USE=ffmpeg. USE=ffmpeg |
28 |
tells to use ffmpeg or a replacement, FFMPEG_IMPL tells what will |
29 |
exactly get used. Much less confusion. |
30 |
|
31 |
Thirdly, this opens space for having more than two different |
32 |
implementations in the future without having to reset the system. Maybe |
33 |
this isn't something worth considering but -- as I see it -- the first |
34 |
big fork starts a precedent, and both current versions suck :). |
35 |
|
36 |
Fourthly, there's the case of implicity. Right now USE=-libav implies |
37 |
ffmpeg. Therefore, USE=-* implies ffmpeg as well -- which is kinda |
38 |
weird since it's supposedly the non-default. With this solution, USE=-* |
39 |
will result in explicit error asking user to select an implementation. |
40 |
|
41 |
As for the downsides: |
42 |
|
43 |
1. there is a number of non-meaningful flag combinations. |
44 |
FFMPEG_IMPL='', FFMPEG_IMPL='ffmpeg libav'. They will have to be |
45 |
blocked via REQUIRED_USE='^^ ( ffmpeg_impl_ffmpeg ffmpeg_impl_libav )'. |
46 |
|
47 |
2. There is some more work to get ebuilds correct (REQUIRED_USE). |
48 |
However, this is a minor issue compared to the potential mistakes in |
49 |
interpretation of USE='ffmpeg' and USE='libav'. |
50 |
|
51 |
|
52 |
What are your thoughts? |
53 |
|
54 |
-- |
55 |
Best regards, |
56 |
Michał Górny |