Re: Re: about your concept

Thomas <[email protected]> Thu, 22 Jul 2004 20:50:02 -0500
Newsgroups gmane.comp.graphics.y.devel
Message-ID <[email protected]>
Before I get into my reply, I would like to apologize for the length of this 
post (I know i certainly wouldn't read it carefully, or at all, if I were not 
already involved in the discussion, and don't expect many of you to do so) 
and also for fanning the flamewar.  I realize that this is generally off 
topic, but I have tried to avoid personal attacks as much as possible, and I 
believe I have a good reason to post it.

Y seems to be a promising project: I would love to see it succeed, and I would 
also love to contribute to it.  However, it seems to me that the way things 
are currently being done is clearly not working.  This is not to say that I 
think Mark is doing a bad job, it simply means that I believe there is a 
better way to do things.  While I clearly think that my way is a good way, it 
is obviously not necessarily the best way, and my main goal is to promote 
discussion on this topic, instead of having anybody who would like to see 
things improve labeled trolls and flamebaters.

On Thursday 22 July 2004 02:53, Andrew Suffield wrote:
> > And then *you* used the fact that you knew the head developer to merge in
> > a complete reworking of the network protocol without a sentence of
> > discussion on the mailing list until *after* you had merged the code in.
>
> I very much doubt that it was significantly affected by the fact that
> I've known Mark for a while, and rather more by the fact that I
> provided an arch archive and something Mark was interested in.
With absolutely no review outside of the two of you.  Certainly, it is 
possible for Mark to be the sole gatekeeper of all Y development, but that 
doesn't mean that is best for the project.  And certainly, while he is sole 
maintainer of the project, developers may make large, fundamental changes to 
the code base, submit them to him, and have them accepted.  This is not my 
point.

My point is that doing things this way does not attract developers, and will 
even detract current or potential developers.  At the very least, it is nice 
to announce that you are making those changes to the developer mailing list, 
so that other developers won't spend time doing what you are doing, or 
writing code that would be affected by your changes.  I would also like to 
note that this isn't just some rule I made up, but seems to be a common 
suggestion/guideline/rule for most open source projects that have or are 
looking to attract developers outside the core developer base.

> I don't see why you think the mailing list had anything to do with
> it. It is a discussion forum, nothing more. I can talk to people
> without using it quite easily. Not that there was much to discuss; we
> both knew more or less what needed to be done.
The mailing list has everything to do with it exactly because it is a place 
for discussion.  The problem is you are assuming that what you and Mark both 
"knew more or less" was correct.  Unfortunately, this isn't true (or even if 
it has been in the past, it won't be for the life of the project).

As far as off mailing list discussion, it has been my experience that this 
leads to a lot of problems and headaches, from a development perspective, and 
can lead to a rift in project goals.  As an example, I worked on a large open 
source project which had high concentrations of developers in the US and 
Germany, all of whom preferred holding discussions on IRC.  Of course, this 
meant that if a German developer had an idea, only the other German 
developers would be around to discuss it, and vice-versa for the US 
developers.  There where a lot of instances where one group of developers 
would bring up an issue, discuss it, come to a resolution, and implement 
their ideas, only to have the other group wake up the next day and say "Well, 
what about this better way of doing things?" or "Well, that has a problem 
when you do this." or "You just broke everything I did last night."  This 
gets even worse when you move the discussions to IM, private emails or 
in-person discussions.

Note that just because a person does not belong to the core group of 
developers does not mean that they don't have anything to contribute, don't 
have good ideas, or won't have their code severely impacted by changes to the 
core system.

> > At which point
> > you called anybody who thought there was a better or different way
> > "stupid" and "insane" and refused to listen to anybody else's opinion.
>
> Fiction.
Not true at all, here are some choice quotes.  I have taken them from a thread 
titled "Proposal for a minor change in the Y-protocol", specifically 
discussing whether commands between the client and server should be passed as 
strings or as integers, one of the major changes you made to the code without 
any formal announcement or design discussion on the list.

"And this is insane. The protocol would change depending on hardware 
architecture", "What are you smoking? Alignment is as hardware-dependent as 
endianness.", " You have to be really stupid to write socket code with 
alignment issues."

You might have had some good points, but the fact is, you were rude and 
responded to criticism in a way that stifled discussion and discouraged 
people from participating.  After all, who would want to point out a flaw in 
your argument when they know they are going to be called "stupid" and 
"insane."  This does not just affect the people you are replying to directly, 
but anybody who is reading the discussion and considering contributing.

Also, and I am only writing this because I am assuming you are going to attack 
the validity of their argument, and claim that your rudeness was justified 
and that no important talent will be missed, as you have done in the past.  
First, it is not up to you to decide who is too stupid to contribute code, 
especially when you have not seen their code.  And second, I think that any 
on-topic comments in a discussion are perfectly reasonable, even if their 
premise is incorrect, as it lets people see things from a different 
perspective, and can still point out flaws in whatever was thought to be 
"correct" at the time.

In the above case, the suggestion which you claimed would flat out not work 
clearly would work, as it has worked in X for around 20 years or so, even 
between hosts of different endianness.  (I am not trying to resurrect that 
argument, merely pointing out that what, to you, seems completely implausible 
is not, and that you are not the be all and end all of developers, completely 
incapable of making a mistake, a bad design, or an incorrect judgement call.)

> > Now i *dont* contribute code, and its mostly because i assumed that this
> > list was for people to discuss changes to the project, and that there
> > would be some sort of review process for getting code put into the main
> > tree
>
> All of those things are accurate, but it seems like you have little
> experience with free software development. The review process is Mark
> (and occasionally me) looking at the code, and not every discussion
> about the project happens on this list. Not least because of all the
> people who chime in with ill-educated opinions.
First, I don't see how my experience with other projects relates to my 
understanding of how this project is structured.  Second, you have missed my 
point completely, which is not entirely your fault, as I did not express 
myself clearly above.  What I meant by "some sort of review process" was 
actually: "some sort of open review process".  In my opinion, it is 
necessary, especially for a new project still trying to attract developers, 
that they make their goals and guidelines clear and open, and not rely on a 
single developer to review and comment on all code submitted, plus one person 
who "occasionally" reviews code, and who's influence over the acceptance 
process is completely unknown.

Regardless, I am not commenting on how the project is run, but how it should 
be run.  Restating the current form of project management is simply a waste 
of our time, as I understand and have stated what is currently happening (as 
far as I can tell from this discussion, we do not disagree on what is 
currently happening, but the appropriateness of what is currently happening).

> > You have probably lost many smart and talented contributers to
> > the project because you a) ignored them completely, or b) called them
> > idiots as soon as you see what *might* be a better way to do something,
> > or just didnt feel like looking at their code.
>
> I rather doubt that. We've lost a fair amount of dead weight though.
Certainly we have lost a lot of dead weight, that much is obvious from the 
lack of "Y crashes on startup" and "Y wont compile" posts.  However, there 
were also a lot of people discussing and doing development who seem to have 
dissapeared from the discussion and development.

> > In order for such a large project to succeed, there needs to be a large
> > and receptive group of core developers who can lead intelligent
> > discussions and make fair decisions about what to put into the code, or
> > provide good explanations as to why something *doesnt* end up in.
>
> No. I don't know where you got that idea. Quite the opposite really -
> for a large project to succeed, you need a (small) group of
> gatekeepers whose primary task is to say "no". That's the hallmark of
> every successful large free software project (Larry Wall gives a
> rather good talk on the subject).
Perhaps saying that there needs to be a "large" group was an overstatement.  
Certainly there needs to be more than one or two people controlling access to 
the repository.  In another thread where somebody wondered how Linus managed 
the Linux kernel development, you said "they use bitkeeper, we use arch".  
That only matters if more than one person has write access to the repository.  
If only one person can write to it, it doesn't matter that it exists, as far 
as code submission goes, because there is still only one person who can use 
it.

Generally, when a large project (see below) succeeds with only one or two core 
developers, as Linux did for so long, it is because that core was able to 
commit a lot of time to the project, was receptive to suggestions about where 
the project should go, design, etc, and was willing to promote discussion and 
admit they were wrong.  Even in the case of the Linux kernel while Linus was 
the sole maintainer, there was a relatively large (for the size of the 
codebase, etc) group of developers who actively participated in discussions 
and the code review process, and whom Linus was wiling to concede to if they 
were able to convince him of his errors or misjudgements.

This is not to say that the size of the core development team is the only 
problem here.  The openness (or lack thereof) is another issue I believe 
needs to be addressed.  As we saw with the XFree86 project, even though there 
was a reasonably sized (in my opinion) core group of developers, the fact 
that they were unwilling to listen to outside opinions or participate in 
discussions led to the forking of the project.

> This isn't a large project anyway.
Perhaps at this moment there are not many developers and there is a small code 
base, but this is an incredibly ambitious project, and at some point, if the 
project is to succeed and be developed at a reasonable pace, it will have a 
large number of developers and a large codebase.  The project management 
structure needs to be in place before that happens, and it needs to be 
designed to permit and accommodate the growth of the project, not to stifle 
it.

Thomas Stephens
[email protected]