diff mbox

[FFmpeg-devel] configure: don't build ffserver unless explicitly enabled

Message ID 20160910212557.6215-1-timo@rothenpieler.org
State Superseded
Headers show

Commit Message

Timo Rothenpieler Sept. 10, 2016, 9:25 p.m. UTC
---
 configure | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

Comments

Josh Dekker Sept. 10, 2016, 9:40 p.m. UTC | #1
On 10/09/2016 22:25, Timo Rothenpieler wrote:
> [...]
> +DEPRECATED_PROGRAM_LIST="
> +    ffserver
> +"
 > [...]

I don't really see the point of this, the other programs are unlikely to 
be deprecated soon, and this list will be removed after ffserver is. I 
think it'd just be best to leave it in PROGRAM_LIST.

--
Josh
Timo Rothenpieler Sept. 10, 2016, 9:50 p.m. UTC | #2
On 9/10/2016 11:40 PM, Josh de Kock wrote:
> On 10/09/2016 22:25, Timo Rothenpieler wrote:
>> [...]
>> +DEPRECATED_PROGRAM_LIST="
>> +    ffserver
>> +"
>> [...]
> 
> I don't really see the point of this, the other programs are unlikely to
> be deprecated soon, and this list will be removed after ffserver is. I
> think it'd just be best to leave it in PROGRAM_LIST.

It being in PROGRAM_LIST is what enables it by default, as there is an
"enable $PROGRAM_LIST".
So moving it to another variable is neccessary.
Josh Dekker Sept. 10, 2016, 10:09 p.m. UTC | #3
On 10/09/2016 22:50, Timo Rothenpieler wrote:
> On 9/10/2016 11:40 PM, Josh de Kock wrote:
>> On 10/09/2016 22:25, Timo Rothenpieler wrote:
>>> [...]
>>> +DEPRECATED_PROGRAM_LIST="
>>> +    ffserver
>>> +"
>>> [...]
>>
>> I don't really see the point of this, the other programs are unlikely to
>> be deprecated soon, and this list will be removed after ffserver is. I
>> think it'd just be best to leave it in PROGRAM_LIST.
>
> It being in PROGRAM_LIST is what enables it by default, as there is an
> "enable $PROGRAM_LIST".
> So moving it to another variable is neccessary.

Oh, sorry, yes I see now. This looks fine then.

--
Josh
Carl Eugen Hoyos Sept. 10, 2016, 11:22 p.m. UTC | #4
2016-09-10 23:25 GMT+02:00 Timo Rothenpieler <timo@rothenpieler.org>:

> -  --disable-ffserver       disable ffserver build
> +  --enable-ffserver        enable ffserver build

This is not ok and you are not explaining it.

Carl Eugen
Timo Rothenpieler Sept. 10, 2016, 11:48 p.m. UTC | #5
On 9/11/2016 1:22 AM, Carl Eugen Hoyos wrote:
> 2016-09-10 23:25 GMT+02:00 Timo Rothenpieler <timo@rothenpieler.org>:
> 
>> -  --disable-ffserver       disable ffserver build
>> +  --enable-ffserver        enable ffserver build

ffserver is unmaintained for a very long time now.
It's been discussed about deprecating or even straight up removing it
for a while now.

As a first step to actually get somewhere with that, this patch stops
building ffserver by default, unless it's explicitly requested via
--enable-ffserver.

It's not intended to deprecate ffserver (yet), just a signal to users
that they really want to switch to/use something else, or pick up
maintainership of it.
Carl Eugen Hoyos Sept. 11, 2016, 12:59 a.m. UTC | #6
2016-09-11 1:48 GMT+02:00 Timo Rothenpieler <timo@rothenpieler.org>:

> It's not intended to deprecate ffserver (yet), just a signal to users
> that they really want to switch to/use something else, or pick up
> maintainership of it.

A sufficient signal is already on the homepage.

Carl Eugen
Carl Eugen Hoyos Sept. 11, 2016, 1:07 a.m. UTC | #7
2016-09-11 2:59 GMT+02:00 Carl Eugen Hoyos <ceffmpeg@gmail.com>:
> 2016-09-11 1:48 GMT+02:00 Timo Rothenpieler <timo@rothenpieler.org>:
>
>> It's not intended to deprecate ffserver (yet), just a signal to users
>> that they really want to switch to/use something else, or pick up
>> maintainership of it.
>
> A sufficient signal is already on the homepage.

Or actually: Don't you agree that a deprecation message printed by
the program would make much more sense?

Carl Eugen
Sven C. Dack Sept. 11, 2016, 6:53 a.m. UTC | #8
On 11/09/16 02:07, Carl Eugen Hoyos wrote:
>
> Or actually: Don't you agree that a deprecation message printed by
> the program would make much more sense?
>
> Carl Eugen

This could interfere with users' current scripts for running ffserver and turn 
into "adding insult to injury" for the time it is still around.
Nicolas George Sept. 11, 2016, 7:39 a.m. UTC | #9
Le sextidi 26 fructidor, an CCXXIV, Sven C. Dack a écrit :
> This could interfere with users' current scripts for running ffserver and
> turn into "adding insult to injury" for the time it is still around.

Deprecation messages go to stderr. If users' scripts rely on the format of
stderr, breaking them is not insult or injury, it's didactic.

Regards,
Sven C. Dack Sept. 11, 2016, 9:41 a.m. UTC | #10
On 11/09/16 08:39, Nicolas George wrote:
> Le sextidi 26 fructidor, an CCXXIV, Sven C. Dack a écrit :
>> This could interfere with users' current scripts for running ffserver and
>> turn into "adding insult to injury" for the time it is still around.
> Deprecation messages go to stderr. If users' scripts rely on the format of
> stderr, breaking them is not insult or injury, it's didactic.
>
> Regards,

Error messages go to stderr and one sometimes parses these to respond to an error.

Excluding it from the default build rules is a good idea. Let the code still be 
around while it works and only when it proofs it no longer does do you drop it. 
Who knows when this will be and if not somebody steps up. If you feel strongly 
about doing something then how about maintaining it?
Nicolas George Sept. 11, 2016, 9:45 a.m. UTC | #11
Le sextidi 26 fructidor, an CCXXIV, Sven C. Dack a écrit :
> Error messages go to stderr and one sometimes parses these to respond to an error.

This is bogus and should not be considered a reason for design decisions.

If there are cases where this is actually necessary, then report them and we
can reflect on a correct solution.

Regards,
Sven C. Dack Sept. 11, 2016, 10:20 a.m. UTC | #12
On 11/09/16 10:45, Nicolas George wrote:
> Le sextidi 26 fructidor, an CCXXIV, Sven C. Dack a écrit :
>> Error messages go to stderr and one sometimes parses these to respond to an error.
> This is bogus and should not be considered a reason for design decisions.
>
> If there are cases where this is actually necessary, then report them and we
> can reflect on a correct solution.

No, it's not bogus. It's what sometimes must be done. For example, just this 
morning did I again have to pipe the output of ffprobe through "|&" because it 
likes to print its findings to stderr and not simply stdout. Not meaning to 
derail the topic, but to make a point close "to home".

All I am really saying is that I don't quite agree with Carl. However seeing how 
you feel so strongly about what to put into ffserver are you volunteering to 
become it's new maintainer (... congrats!).

If one doesn't want to be its maintainer than I don't see how one can afford to 
have this opinion. Rather should one follow the general coding rule of FFmpeg to 
keep changes minimal and to check if these cannot be made even smaller.

Sven
Nicolas George Sept. 11, 2016, 2:12 p.m. UTC | #13
Le sextidi 26 fructidor, an CCXXIV, Sven C. Dack a écrit :
> No, it's not bogus.

Yes, it is.

>		      It's what sometimes must be done. For example, just this
> morning did I again have to pipe the output of ffprobe through "|&" because
> it likes to print its findings to stderr and not simply stdout. Not meaning
> to derail the topic, but to make a point close "to home".

Are you sure you should not have been using ffprobe?

> All I am really saying is that I don't quite agree with Carl. However seeing
> how you feel so strongly about what to put into ffserver are you
> volunteering to become it's new maintainer (... congrats!).

I do not care at all about ffserver, but the argument of parsing stderr to
revuse a warning is completely void, period.

Regards,
Sven C. Dack Sept. 11, 2016, 3:04 p.m. UTC | #14
On 11/09/16 15:12, Nicolas George wrote:
> I do not care at all about ffserver, but the argument of parsing stderr to
> revuse a warning is completely void, period.
>
> Regards,

Please no foot stomping of opinions. When you cannot see how changing the output 
can confuse scripts of users then that's ok, but you then shouldn't act like a 
child. Show some more maturity, please.

Sven
Nicolas George Sept. 11, 2016, 3:31 p.m. UTC | #15
Le sextidi 26 fructidor, an CCXXIV, Sven C. Dack a écrit :
> Please no foot stomping of opinions. When you cannot see how changing the
> output can confuse scripts of users then that's ok

I see how it can do that, but you refuse to understand that this part of the
output is not meant to be parsed, unlike, for example, the output of
ffprobe.

If some information is only available in stderr output, then we can consider
adding a clean solution for that. Please share any precise information you
have on the matter. Otherwise, it is just idle handwaving.

>						      but you then shouldn't
> act like a child. Show some more maturity, please.

I leave to you the responsibility of name calling.

Regards,
Hendrik Leppkes Sept. 11, 2016, 3:32 p.m. UTC | #16
On Sun, Sep 11, 2016 at 5:04 PM, Sven C. Dack <sven.c.dack@sky.com> wrote:
> On 11/09/16 15:12, Nicolas George wrote:
>>
>> I do not care at all about ffserver, but the argument of parsing stderr to
>> revuse a warning is completely void, period.
>>
>> Regards,
>
>
> Please no foot stomping of opinions. When you cannot see how changing the
> output can confuse scripts of users then that's ok, but you then shouldn't
> act like a child. Show some more maturity, please.
>

All the text output of the CLI tools goes to stderr, and we have never
considered it to be "stable" for the sake of people that parse
arbitrary log output - and nor should we, because that would be a
terrible situation to be in if we can't even change, add, or adjust
the log output of our tools.

- Hendrik
Sven C. Dack Sept. 11, 2016, 5:17 p.m. UTC | #17
On 11/09/16 16:31, Nicolas George wrote:
> I see how it can do that, but you refuse to understand that this part of the
> output is not meant to be parsed, unlike, for example, the output of
> ffprobe.

Nonsense. All messages, regardless if send to stdout or stderr, can be parsed. 
There is no rule in this world that says you shouldn't or couldn't do so.

But regardless of this, when you are no longer maintaining the code then you can 
also no longer insist on users having to accept the consequences of changes. The 
change, to print a single message, has no gain to the users who are still using 
ffserver. They will not thank you for abandoning the program, they may even feel 
annoyed by the message each time it prints, and as I pointed out before can 
cause them problems. You really want to leave the code untouched and provide it 
"as is" until the time it gets dropped.

Put the message into configure, put it into the manpage, on the webpages and the 
--help documentation, but please don't just pop it out onto stderr.

Sven
Clément Bœsch Sept. 11, 2016, 5:27 p.m. UTC | #18
On Sun, Sep 11, 2016 at 06:17:01PM +0100, Sven C. Dack wrote:
> On 11/09/16 16:31, Nicolas George wrote:
> > I see how it can do that, but you refuse to understand that this part of the
> > output is not meant to be parsed, unlike, for example, the output of
> > ffprobe.
> 
> Nonsense. All messages, regardless if send to stdout or stderr, can be
> parsed. There is no rule in this world that says you shouldn't or couldn't
> do so.

Aside from the stdout output in ffprobe, no stdout/stderr output is
standardized in FFmpeg and thus can be changed at will (and does
regularly). You can try to parse it, but there is zero warranty that it
will work the next day.

Regards,
Sven C. Dack Sept. 11, 2016, 5:52 p.m. UTC | #19
On 11/09/16 18:27, Clément Bœsch wrote:
> Aside from the stdout output in ffprobe, no stdout/stderr output is
> standardized in FFmpeg and thus can be changed at will (and does
> regularly). You can try to parse it, but there is zero warranty that it
> will work the next day.
>
> Regards,

Did you at least read the second part of my mail? Because I sure do get you 
don't care. It's all you, Nicolas and Hendrik have been saying here really. What 
I want you to do is to snap out of it and to start caring. Put the message where 
it belongs, meaning, put it into the documentation. ffserver is not dead just 
yet and you should really follow the regular coding rules until it is. And of 
course do users often have to accept the consequences of a changes, but they 
also only ever will do so when a change brings an actual gain. Nobody wants to 
accept a useless change. Your change, to put a message to stderr into the code, 
just has no gain for anyone who is using it and can only upset. Can we agree on 
this or am I talking to a wall?

Sven
Clément Bœsch Sept. 11, 2016, 5:57 p.m. UTC | #20
On Sun, Sep 11, 2016 at 06:52:50PM +0100, Sven C. Dack wrote:
> On 11/09/16 18:27, Clément Bœsch wrote:
> > Aside from the stdout output in ffprobe, no stdout/stderr output is
> > standardized in FFmpeg and thus can be changed at will (and does
> > regularly). You can try to parse it, but there is zero warranty that it
> > will work the next day.
> > 
> > Regards,
> 
> Did you at least read the second part of my mail? Because I sure do get you
> don't care. It's all you, Nicolas and Hendrik have been saying here really.
> What I want you to do is to snap out of it and to start caring. Put the
> message where it belongs, meaning, put it into the documentation. ffserver
> is not dead just yet and you should really follow the regular coding rules
> until it is. And of course do users often have to accept the consequences of
> a changes, but they also only ever will do so when a change brings an actual
> gain. Nobody wants to accept a useless change. Your change, to put a message
> to stderr into the code, just has no gain for anyone who is using it and can
> only upset. Can we agree on this or am I talking to a wall?

I think we disagree, because no user of a working setup will ever read the
documentation just to check for deprecated tools. Having the warning at
runtime is the most efficient way to reach out a maximum of users as soon
as possible so they have time to migrate their setup. A bit like
deprecation warning in API at build time.
Nicolas George Sept. 11, 2016, 6:45 p.m. UTC | #21
Le sextidi 26 fructidor, an CCXXIV, Sven C. Dack a écrit :
> Did you at least read the second part of my mail? Because I sure do get you
> don't care. It's all you, Nicolas and Hendrik have been saying here really.

Not really.

>								    ffserver

Please stop about ffserver. This branch of the discussion is not about
ffserver, it is about you not understanding 40+ years of good software
design, namely the separation between normalized reliable output on stdout
and human-readable diagnosis output on stderr.

stderr is not for parsing. If you do not understand why, ask Ken Thompson,
or really any good book on system programming.

But if you are parsing the stderr output of ffmpeg, you are doing something
wrong. Not ffmpeg: you. We can probably help you to fix your programs if you
tell us exactly your issue, but until now you have only been vague.

And accommodating wrong practices will never be a motivation in the
evolution of ffmpeg.

This is the second time I explain this with different words. There will be
no third time.

Regards,
Sven C. Dack Sept. 11, 2016, 6:47 p.m. UTC | #22
On 11/09/16 18:57, Clément Bœsch wrote:
> I think we disagree, because no user of a working setup will ever read the
> documentation just to check for deprecated tools. Having the warning at
> runtime is the most efficient way to reach out a maximum of users as soon
> as possible so they have time to migrate their setup. A bit like
> deprecation warning in API at build time.
>
You are trying to cater to the wrong people. There sure are people who don't 
read the documentation, but who are they? ... There are those who don't upgrade 
and consequently have no need to read NEWS or the documentation - them you don't 
need to care for obviously. They will read about it in the documentation when 
the time comes for them to upgrade. Then there are those who expect everything 
to stay the same only to learn the hard way of a change - them you don't need to 
care for and they also won't appreciate it when you do. Then there are those who 
don't read the output of ffserver, because of how they run it (i.e. from a 
script as a daemon) and who only occasionally check their logs - they either 
belong to the group of "hard learners" or they have read the documentation. Your 
point really only makes sense if you wanted to care for people who care for 
documentation, which means you should properly document it.

People who need to migrate have nothing to migrate to - they will try to use the 
existing releases as long as it works for them. They may be seeing the printed 
message for a lot longer than you would want them to. They won't find anything 
good about the loss of ffserver or having to find a replacement. They won't like 
the message, only a few will ever be actually grateful for it, but even they 
will not like it or care for it after seeing it for the hundredth time.

Sven
Sven C. Dack Sept. 11, 2016, 7:20 p.m. UTC | #23
On 11/09/16 19:45, Nicolas George wrote:
> Please stop about ffserver. This branch of the discussion is not about
> ffserver, it is about you not understanding 40+ years of good software
> design, namely the separation between normalized reliable output on stdout
> and human-readable diagnosis output on stderr.
>
> stderr is not for parsing. If you do not understand why, ask Ken Thompson,
> or really any good book on system programming.
>
> But if you are parsing the stderr output of ffmpeg, you are doing something
> wrong. Not ffmpeg: you. We can probably help you to fix your programs if you
> tell us exactly your issue, but until now you have only been vague.
>
> And accommodating wrong practices will never be a motivation in the
> evolution of ffmpeg.
>
> This is the second time I explain this with different words. There will be
> no third time.

This isn't how a discussion works where you get to stomp your opinion down onto 
others and get to make it personal. But if you want it personal, I can give you 
personal, because if you haven't learned in 40 years that users do parse error 
messages then you have only proven how little you know and what an ignorant you 
are. Luckily are you a coward, too, and have walked out of the discussion, which 
seems to be the upside to your character.

Was this personal enough for you?

Sven
Hendrik Leppkes Sept. 11, 2016, 8:41 p.m. UTC | #24
On Sun, Sep 11, 2016 at 7:52 PM, Sven C. Dack <sven.c.dack@sky.com> wrote:
> On 11/09/16 18:27, Clément Bœsch wrote:
>>
>> Aside from the stdout output in ffprobe, no stdout/stderr output is
>> standardized in FFmpeg and thus can be changed at will (and does
>> regularly). You can try to parse it, but there is zero warranty that it
>> will work the next day.
>>
>> Regards,
>
>
> Did you at least read the second part of my mail? Because I sure do get you
> don't care. It's all you, Nicolas and Hendrik have been saying here really.
> What I want you to do is to snap out of it and to start caring. Put the
> message where it belongs, meaning, put it into the documentation. ffserver
> is not dead just yet and you should really follow the regular coding rules
> until it is. And of course do users often have to accept the consequences of
> a changes, but they also only ever will do so when a change brings an actual
> gain. Nobody wants to accept a useless change. Your change, to put a message
> to stderr into the code, just has no gain for anyone who is using it and can
> only upset. Can we agree on this or am I talking to a wall?
>

We don't care because "caring" would severly limit the things we can
change in the code. Do we have to argue everytime we want to extend a
warning or error message in the future? No, we really do not want to
start doing that, and thus we will also not now.
There are limits to how much "stability" we can realistically provide,
and warnings/errors on the console are not part of that.

- Hendrik
Sven C. Dack Sept. 11, 2016, 9:39 p.m. UTC | #25
On 11/09/16 21:41, Hendrik Leppkes wrote:
> We don't care because "caring" would severly limit the things we can
> change in the code.

Your logic would be sound if the code hadn't been declared as deprecated. I do 
agree that for live code the users have to accept changes when it means there is 
a real gain from it, but because it has been declared as deprecated are you 
trying to make changes to code when you officially no longer want to make changes.

You then wouldn't put a message into ffmpeg to point out that it hasn't been 
declared as deprecated. Although I am sure there may be a some users who could 
be happy about such a message, maybe some may even be worried about the news of 
ffserver and find such direct message useful. Yet would I not consider this to 
be a real gain or an acceptable change.

I am guessing for once you wish to be lazy and by sticking the message into 
ffserver, thinking since it is going away anyway why care? But it's not actually 
user friendly, because anyone who is using it will now get this message each and 
every time they starting the server. And it's not like there aren't good places 
to put the announcement.

Sven

PS: I swear I've sent the last message only once! :)
diff mbox

Patch

diff --git a/configure b/configure
index b11ca7f..d67d8a2 100755
--- a/configure
+++ b/configure
@@ -116,7 +116,7 @@  Program options:
   --disable-ffmpeg         disable ffmpeg build
   --disable-ffplay         disable ffplay build
   --disable-ffprobe        disable ffprobe build
-  --disable-ffserver       disable ffserver build
+  --enable-ffserver        enable ffserver build
 
 Documentation options:
   --disable-doc            do not build documentation
@@ -1615,10 +1615,13 @@  LICENSE_LIST="
 PROGRAM_LIST="
     ffplay
     ffprobe
-    ffserver
     ffmpeg
 "
 
+DEPRECATED_PROGRAM_LIST="
+    ffserver
+"
+
 SUBSYSTEM_LIST="
     dct
     dwt
@@ -1644,6 +1647,7 @@  CONFIG_LIST="
     $LICENSE_LIST
     $LIBRARY_LIST
     $PROGRAM_LIST
+    $DEPRECATED_PROGRAM_LIST
     $SUBSYSTEM_LIST
     fontconfig
     incompatible_libav_abi
@@ -6492,7 +6496,7 @@  test -n "$random_seed" &&
 echo
 
 echo "Enabled programs:"
-print_enabled '' $PROGRAM_LIST | print_in_columns
+print_enabled '' $PROGRAM_LIST $DEPRECATED_PROGRAM_LIST | print_in_columns
 echo
 
 echo "External libraries:"
@@ -6682,7 +6686,7 @@  print_program_libs(){
     eval echo "LIBS-${1}=${program_libs}" >> config.mak
 }
 
-map 'print_program_libs $v' $PROGRAM_LIST
+map 'print_program_libs $v' $PROGRAM_LIST $DEPRECATED_PROGRAM_LIST
 
 cat > $TMPH <<EOF
 /* Automatically generated by configure - do not modify! */