Suggestions for improvement of the emulator

Troy Rollo wine at troy.rollo.name
Mon Sep 5 18:26:44 CDT 2005


On Mon, 5 Sep 2005 20:30, Francois Gouget wrote:

> What makes you say that?
> What would need changing to efficiently accomodate more developpers?

I should preface this by saying that I don't mean any criticism or offence by 
this.  You asked the question and the following reflects my observations of 
current limits to the development model and what would have to be changed to 
improve scalability. That doesn't mean the model has not served well thus far 
or with the available pool of developers to date.

Having to pipe all the changes through one person limits scalability. Until 
recently the facilities didn't even exist for supporting the maximum 
scalability using that model (distributed branching), and even though they 
exist now few people are using them and they are not integrated into the 
central commit process.

Even as things are now there is a disincentive to new developers. Some 
developers don't bother submitting patches because they feel it's too much 
work to get them accepted, and sometimes the patch doesn't get written at all 
because there is not enough certainty that it will be accepted. Before you 
suggest that this is speculative, I have one developer here who has made 
patches to fix Wine bugs experienced at home and not submitted them for that 
exact reason. You can try getting guidance on what is likely to be accepted, 
but again you run into a bandwidth problem with Alexandre - one person cannot 
effectively give guidance to everybody who needs it, and such guidance as he 
is able to give doesn't always help that much. The process requires that 
developers risk their work amounting to nothing because it won't be accepted. 
How many times have you seen people say that "Alexandre doesn't always know 
what he wants, but he knows what he doesn't want"?. That perception is partly 
due to the fact that it is impossible for one person to take the time to 
really understand what is wanted for every area of Wine that is being worked 
on at any one time (humans are linear, it limits them).

I suspect the current model is either at or near its limits. It would 
certainly not cope with a significant number of commercial outfits putting in 
a serious level of contribution, nor does it encourage them to make the 
attempt.

To scale better you would need to divide the project into different areas of 
responsibility and have multiple committers. You could have overall 
guidelines, but you'd need to be willing to trust the managers of each area 
to make final decisions in that area - even so far as to let them make 
mistakes and let them learn from those mistakes. Almost every subdirectory of 
"dlls" could in principle be a separate area of responsibility with a 
separate group of committers, although it might be more convenient to have 
more-or-less related subdirectories under the umbrella of a single group. 
Each group responsible for an area would need to be prepared to give advice 
to people working on some patch in that area that if followed would make it 
virtually certain that the patch would be accepted.

A supporting facility you would probably need would likely include either 
separate mailing lists for each sub-project (things get lost in wine-devel 
*now*) with consolidated read-only lists for people who want a convenient way 
of watching all of the discussions or a shift to an NNTP heirarchy with 
mailing gateways.

These structures are nothing new - most of the really big projects work this 
way - look at Gnome, KDE, and for the insane end of the scale, Debian.

Even with the Linux kernel, which is the only project that I am aware of that 
is comparable in size and follows a similar model to Wine, there appears to 
me to be some greater division of responsibility.

This is all relevant, of course, only *if* significant expansion of the pool 
of developers is a desirable goal.



More information about the wine-devel mailing list