[gst-devel] Re: [Matroska-devel] Why porting Gstreamer to Windows would hurt Redmond .....

Thomas Vander Stichele thomas at apestaart.org
Fri Apr 16 03:03:01 CEST 2004


I think there isn't a real problem at all and it has just been blown out
of proportion a little due to a lack of good communication.  I'll
summarize in a nutshell what, IMO, went wrong, and then I'll try to
explain by replying to parts...

a) The actual implementation discussion was held on the matroska mailing
list when it should have been held on the GStreamer mailing list.  If
the technical problem is about GStreamer code that needs changing to run
on Windows, it should be discussed on the GStreamer mailing list.  To me
that seems clear.

b) When discussing the actual implementation, "the Matroska team" should
regard Ronald's opinions as his own, and not as the GStreamer team's. 
To me that seems fairly clear as well - if Ronald says he doesn't care
about Windows, that doesn't mean GStreamer doesn't care about it. 
Likewise, if Ronald says "a patch will be refused" it doesn't
necessarily mean the GStreamer team will refuse it.  Again, it should
have been discussed on the GStreamer mailing list.

c) There is a huge difference between "not accepting a patch" (for
whatever reason), "refusing the patch", and "refusing the possibility of
patching a certain piece of code".  What Ronald did was say "the patch
done like this cannot go in".  That means you can rework the patch to
address his concerns.

d) Announcing a fork is not a good way to address communication
breakdowns.  It makes both teams look very silly and immature :)

> > So, if anybody here has problems with a Windows port because he wants 
> > Gstreamer to be exclusively usable on Linux desktop's and hates Windows, 
> > well, IMO you should rethink your point of view here.

I am pretty sure there aren't many on our team that feel that way.  What
is true is that some of our developers just don't care about Window,
period.  That is, mind you, quite a different point of view than hating
Windows and wanting GStreamer to be exclusively usable on Linux.

AFAICT, Ronald is one of these people, as he's stated repeatedly on IRC,
and it is his right to do so, and from his POV I can understand.  But
that doesn't mean everyone on our team feels the same way.

To be clear, personally I think it would be incredible if GStreamer
worked on Windows; I'm just not in a good position to help a lot beyond
what we can do on our side to integrate code, since I haven't really
used Windows for 4 years.

> > What i understand from the matroska team is that using GCC is no option 
> > for porting gstreamer, for reasons i dont know and won't comment on. So 
> > please, have an internal meeting and make a decision on how we could 
> > come together. After all, we are still interested a lot in making this 
> > happen, but we wont maintain a parallel MSVC version of Gstreamer, with 
> > the need to rewrite every single plugin to make it compile. I very much 
> > hope you guys could move into our direction in this matter.

As far as I know, the ONLY problem there was was the use of variadic
macros for the debugging system.  If there is something else then please
speak up now.

Now, on that matter, the patch that got proposed by you was one where
you would create, for each GST_DEBUG type macro, a bunch of GST_DEBUG_x
macros where x is the number of arguments.  I think you can see why this
is an ugly hack, and I think you can also see why this would mean we
need to rewrite EVERY piece of code that uses the debug system.  Ronald
proposed to use inline functions as a solution and asked to rewrite the
patch that way, but he says you didn't do so.  Getting a problem
addressed is a matter of communicating and discussing possible
implementations between two people.  It's up to the person trying to get
a patch in to address concerns of the person who is looking at the
patches.  In this case, it wasn't too hard I think to submit a patch
doing just this.  In fact, David (from our team) did just that last
evening, from the looks of CVS.

> Ronald proposed a solution that would work nicely with MSVC... Why not 
> use for all systems ?

Because it's not necessary.  We are trying to get GStreamer building on
Windows as well, with your help.  We now did so by using inline
functions on systems that do not implement variadic macros.  So now it
shouldn't pose a problem anymore on Windows.

>  Because some plugins should be rewritten. But 
> wouldn't these plugins would need to be rewritten for Windows ?

I'm not sure what you mean.  AFAIK none of the plugins need to be
rewritten now, and the solution is implemented at the right level:
systems not supporting variadic macros now use inline functions with the
exact same name and format. (Note to Microsoft: how about implementing
variadic macros as inline functions at the compiler level ?)

>  Yes. So 
> in the end these plugins would run under Windows and Linux. But you 
> don't want this solution, don't you ?

Maybe I didn't understand what you are saying correctly.  So I'll just
say what I think: I very much want a solution where most of the plugins
are completely the same under Linux and Windows.  The only plugins that
should be different are plugins that interface directly with the system;
which would be input and output plugins.

> It seems apparent that for GStreamer to be usable under Windows (in a 
> way that all Windows programmers use) we need some changes. But you 
> don't want them. 

Of course it needs changes, and nobody is against having changes.  All
we want is for the changes to be correct.  Also, again realize that you
said "you don't want them" when the correct sentence is "Ronald didn't
accept our GST_DEBUG_x patches the first time we submitted them."  You
really shouldn't generalize on three levels at once (Ronald != gstreamer
team, accept != refuse, ugly solution != correct solution).  It's an
antagonistic statement that doesn't help us getting closer together :)

> So it might be very possible that we make a fork of 
> GStreamer that would be nice with Windows coders. And that version 
> (CoreStreamer) would *also* run under Linux and all other platforms you 
> support. So any coder willing to work on GStreamer will have the choice 
> between the original GStreamer and CoreStreamer. But one does the same, 
> and more. What do you think will happen ?

I think people will laugh at both of us for making such a huge issue out
of a simple technical problem which is "finding a way to work around
variadic macros not being present on MSVC".  I mean, really.  A fork for
some basic issue that could have been solved by the two teams talking to
each other ?

Let's just promise to talk some more to each other, and please have
these discussions on the GStreamer mailing list instead of somehwere
else.  At least that way everyone besides Ronald knows what's going on,
and you guys also know what we think.  It's a lot better than assuming
things we haven't said are true.  Let's work together to make GStreamer
better on both Linux and Windows.

I have no doubt in my mind that you guys are capable coders and that the
work we can do together will benefit us both.  So let's make a bit more
effort to talk to each other, as teams, and not only as individuals.

And on that note - could you please let us know what else is causing
problems on Windows now that the debugging problem has been resolved
correctly (to the best of my knowledge, since I cannot test on Windows)


Dave/Dina : future TV today ! - http://www.davedina.org/
<-*- thomas (dot) apestaart (dot) org -*->
The girl that I could never hurt
had to go and lose all that power over me
and I claimed victory
<-*- thomas (at) apestaart (dot) org -*->
URGent, best radio on the net - 24/7 ! - http://urgent.fm/

More information about the gstreamer-devel mailing list