On Sun, Jan 20, 2002 at 08:33:33AM +0200, Shlomi Fish wrote:
> 
> I disagree with your claims. And by raising the flag of mutiny I do not
> intend to demand them. I intend to implement a system that will make them
> a reality.
> 
> This is a productive mutiny, in which people do something instead of just
> whine, attack, or spread FUD.

I know you disagree with our clainms. Again: why would your 
suggestion not lead to a reduction in kernel coherence and quality as 
we described? 

> Like I said, I believe it's impossible for Linus to pass his decision for
> each and every patch that goes in. OK - whether the VM should be replaced
> - should be ultimately his decision. However, if there's a patch to the
> VM, then the VM maintainer or its architect should be able to apply it
> without consulting LT.

Alright. Right now it is Linus who is the maintainer of the VM. Can 
you suggest someone who would do the job better?

> As of now, from what Moshe Bar said, there were many patches, which fix
> important bugs, and were rejected by Linus, since only he has an ultimate
> repsonsibility on what goes into linux-2.[45].x-vanilla. Moshe said that
> the S.u.s.e kernel had 200 patches to apply. By definition (according to
> the Joel test which I referenced) the kernel should be at any point
> bug-free. This is why using a CVS and delegating responsibility for
> applying patches is a must.

I don't think you completely understand the nature of VM debugging.
More often than not, it's not a straightforward business like "Oops, 
NULL pointer dereference -- I forgot to initialize", where it's very
clear both where the bug is and what the fix does. VM debugging can,
perhaps, more often be described as "tuning". No VM can behave
perfectly, or even well, in all circumenstances, so the simplistic
goal of "bug free" does not apply. Instead, the VM hackers try to 
have the system general enough and yet respond well to all 
reasonable cases. That's very hard to do because you can't really
know in advance which tuning directions truely solve the problems
and which only appear to do so due to the by-definition limited 
range of behavior models that the developer's initial testing
covered. That was exactly the problem with Rik's original 2.4.0 VM 
-- it appeared to be perfect, but the larger user base introduced
by the even version number uncovered serious problems with it.

So you can't really separate the global policy making with taking
in VM patches when it comes to VM tuning. Thinking, in advance, 
which VM patches would improve the system in the long run and which
would not require such qualities as complete understanding of the 
entire system, complete understanding of the usage patterns by 
userspace code and by users, consulting the contradicting suggested
ways to solve the problem, ability to weigh the existing arguments
and testing results for and against a patch, and, of course, a great 
deal of intuition. I doubt that in the last months before he passed
the kernel on to Marcelo Linus did much for the kernel other than
just this. Now, you can say his judgement was mistaken in some 
choices, perhaps he should have been more aggressive in accepting 
patches or less aggressive at other times. But if Linus didn't do 
this job, someone else would still have to. You can't evade that.

> > > to see that I'm not the only person who thinks so. And give me another
> > > example for a project with the scope and number of developers of the Linux
> > > kernel that does not use a source control system.
> >
> > Give me another example for an open source operating system that
> > captured a significant market share.
> >
> > Give me another example for a successful major operating system in
> > the market that is not controlled by a single vendor.
> >
> > Give me another example of successful operating system developed in
> > the last 10 years that uses monolothic kernels.
> >
> > Give me another example of a successful operating system that does
> > not include any management utilities or libraries.
> >
> 
> These are all non-sequitors. I don't see how they are derived from the
> original request for an example.

They intend to show that the existence or the lack of an example 
of other projects working similarly to Linux has no relevancy to the 
issue at hand, unless one is willing to consider every uniqueness of
Linux a weakness.

> My article referenced the Joel Test, which Joel Spolsky claims is a better
> alternative than SEMA. I don't know if the Joel Test is about top-down or
> bottom-up software. In fact, I think it applies to software in general.

It can't be used with the bottom-up development model as it requires 
writing code according to a specification and a schedule.

> My model can be used whether for bottom-up or top-down software
> development.

No, it cannot. Your model assumes that the role of the top developer
is to direct the project (since that is his only way to control it),
while in a bottom-up approach the top developer /selects/ a 
direction from among the many suggsted by independent factions, and 
which make their suggestions in the form of source code.

> I'm not saying Linus should not lead the Linux kernel development and be
> the ultimate authority on what goes into Linux-vanilla and what stays out.
> Despite the fact that I don't like many of his decisions (especially the
> kdb one) I think we are better off with him remaining in this role.
> However, one man, especially a family man like LT, cannot humanly commit
> all the patches by himself.

Perhaps you have the wrong mental image of what Linus does. Please
correct me if I am wrong. It appears to me that you think most of
his significant work is to read the code, talk to people, and think 
what should be done, or possibly code some of the changes himself. In
fact, he does none of those things, at least according to what can be
seen on list and what he says publicly. Although it does happen from
time to time that Linus makes pronouncements and everybody follows
(e.g., kdev_t), this is the exception rather than the rule. Mostly
Linus sits with his mailer (I suspect Pine), reading patches, and 
saying to himself "Like it" [copies mail to his "to-apply" folder] or 
"Don't like it" [presses D]. He has a very clear idea of what the 
source code is and sometimes where he wants it to go, but the way for 
him to judge an actual change is by source code, and the way for him 
to approve or disapprove is to accept or not accept the patch.

So if you take that away from Linus, he won't actually be doing much 
at all.

> Like I said earlier, I don't have a problem with Linus being ultimately
> responsible for what goes in or stays out of the kernel. Someone has to do
> this, and it may just as well be him, and if anybody does not like his
> decisions - fork or _maintain his own branch at the source control
> repository_.

Maintaining a kernel tree requires much more than the ability to fork
it to start with, because there are numerous patches than need to be
synchronized. An unmaintained tree becomes uncompileable very quickly.
You can't just open another branch to show your alternative exists, you 
have to continuously merge in the mainline tree's changes and change 
your code to make sure it still works. The work of actually running 
the merge commands or downloading the changes of the other trees 
dwarfs in comparison. There are trees of maintainers (e.g., Dave Jones)
that do nothing else but keep 2.4.x patches and bug fixes compatible
with the 2.5.x changes.

I don't see why keeping those alternative trees as CVS branches would
be much different than the current situation, much less how they are
relevant to the problems that 2.4.x had in practice.

> > > Linus can take a look at the patch between the CVS repository and what he
> > > checked last time, and pass his comments. And he could do it all the time.
> >
> > So what? Then he'll okay patches he likes, and revert any change he's
> > not yet sure of, and developers would have to recommit them from time
> > to time so that he re-examines their patches. You've changed the
> > mechanism, but kept all the problems.
> >
> 
> No. If Foo Bar who is the architect or maintainer of subsystem Mosesium
> (just for the pun - ;-)) commited a patch, and Linus does not like it -
> he won't have the authority to immidiately revert it. Besides, like I
> said, LT would not need to go over the entire kernel patch.

This means that the kernel would no longer have a central 
authority. It also shows that CVS versus mailing patches is not the 
central issue, since both development models can be reasonably used 
with either method.

> > Now, there /have/ been attempts to write software that works
> > according to Linus's development methodology (e.g., BitKeeper), but
> > they have more to do with patch management than source control.
> 
> I want a source control system to be used.

I figured as much :)

> If Linux is not modular enough - then I think one of the first priorities
> should be to make sure the opposite becomes the fact. The question is -
> why the code became so unmodular in the first place?

I am certain that all kernel hackers are very well aware that that
modularity is a Good Thing. But you can't say "let's make it 
modular" and have it so any more than you can say "let's make it
bug-free" and have it so. Linus commented on the problems with 
increasing modularity a number of times in interviews as well as 
on-list.

> From what I read somewhere and from my impression the kernel or at least
> some parts of it were actually well-written. They are very scarcely
> commented (which is another thing that should be remedied)

Also consider that over-commenting can be a problem as well, and
that this is often a very individual issue. I don't know how your 
idea of the approproate amount of comments compares with my idea 
of it or of the kernel developers'; you can take a look at various 
kernel pieces and decide for yourself.

> So I'll add the following items to the mutiny's agenda:
> 
> 1. Make the kernel components modular enough.
> 
> 2. Comment the code.

I think you will have a better baragining position if you actually
have a patch or two (written by you or others) implementing your
suggested changes. Asking for changes to done by others will not
be effective if those from whom you request the changes disagree.
Besides, everybody will have a much better idea exactly what do 
you mean by your suggestions (how much commenting, which APIs 
between the modules, and so forth).

=================================================================
To unsubscribe, send mail to [EMAIL PROTECTED] with
the word "unsubscribe" in the message body, e.g., run the command
echo unsubscribe | mail [EMAIL PROTECTED]

Reply via email to