Linux: CML2, ESR & The LKML

Submitted by Jeremy
on February 17, 2002 - 9:51am

A recent thread on the Linux kernel mailing list (lkml) started off by generally bashing Eric S Raymond (ESR). Sifting through the many insults and round trip name calling, though, there was some constructive debating.

The thread was initiated by Jeff Garzik, in response to a message on the kbuild developer's list. The message, from ESR, is a four-point list of suggestions, asking members of the kbuild developer's list to speak with Dirk Hohndel about CML2 and kbuild-2.5, who in turn was to speak with Linus. That thread continues constructively, discussing the pro's and con's of both new systems.

With Jeff's email, the thread was essentially moved to the lkml, an often less-than-friendly environment. Involved in the ensuing debates were many kernel hacker notables, including Alan Cox, Dave Jones, Robert Love, Alexander Viro, Rob Landley, and of course Jeff Garzik and Eric S Raymond. Many of the arguments on both sides seemed a bit ridiculous and melodramatic, in my humble opinion (more personality conflicts than anything), but the ultimate issue is interesting and worth talking about: CML2 is a complete re-write of CML1, so different that it doesn't even attempt to be backward compatible. In the end, is CML1 broken enough and is CML2 superior enough to justify the effort required to make the upgrade?

Before diving into the debate, perhaps a little background is in order. CML1 is the original Configuration Menu Language, currently used to configure the Linux Kernel. CML2 was written by ESR to address short comings in CML1, and ultimately to make kernel configuration a simpler process. (So much so, that people complain of the 'Aunt Tillie Factor' - i.e.: why do we care if Aunt Tillie can compile a kernel?)

One of the "problems" people keep bringing up in regards to CML2 is its reliance on Python 2. However, some time ago Linus made it clear that this was in and of itself not an issue. As per the March 30, 2001 Kernel Summit, following a presentation by Keith Owens and ESR, Linus agreed to include CML2, deciding that the switch, when occurring, would be sudden - simply dropping CML1 and replacing it with CML2. However, much arguing has continued since then, and CML2's inclusion in the 2.5 kernel still seems to be up in the air.

If CML2 is ever to be included in 2.5, it sounds like most feel it needs to be broken up into a series of smaller patches. It would then be possible for the development community to choose which they wanted and which they didn't. (As it stands - it's all or nothing.) And, as noted by Alan Cox, CML1 can be fixed. Many agree that CML2 offers some nice improvements, but that it also brings in far too many changes. Many of which are completely unnecessary, such as user interface changes.

You can find much information about CML2 on Eric's CML2 Resources Page. On that page, there is information on migrating from CML1 to CML2, an informative white paper, a reference guide, and much more.


The thread started off with a round of insults:

From: Jeff Garzik
Subject: Disgusted with kbuild developers
Date: Fri Feb 15 2002 - 11:55:54 EST

Ladies and gentlemen,

I would find this pathetic, if it didn't make me so mad.
Making an end run around the system, are we, Eric?

Small wonder the message below didn't make it to linux-kernel:
suggestions would have been made that CML2 is DOA.

ESR's message to the kbuild list:
        http://marc.theaimsgroup.com/?l=kbuild-devel&m=101373619625183&w=2
The rest of the thread:
        http://marc.theaimsgroup.com/?t=101373623000001&r=1&w=2

For an open source "guru", Eric, you sure seem to like to turn to
cronyism and secret meetings when the going gets tough.

        Jeff

-- 
Jeff Garzik      | "I went through my candy like hot oatmeal
Building 1024    |  through an internally-buttered weasel."
MandrakeSoft     |             - goats.com



From: Rik van Riel
Subject: Re: Disgusted with kbuild developers
Date: Fri Feb 15 2002 - 12:02:21 EST

This makes me wonder whether Eric works in a cathedral
or in an ivory tower ...

Rik

-- 
"Linux holds advantages over the single-vendor commercial OS"
    -- Microsoft's "Competing with Linux" document



From: Alexander Viro
Subject: Re: Disgusted with kbuild developers
Date: Fri Feb 15 2002 - 12:35:03 EST

Judging by usual Eric's intellectual erm... output the word you are looking
for is "outhouse".

Eric was quick to reply to many of these comments: From: Eric S. Raymond (esr@thyrsus.com) Subject: Re: Disgusted with kbuild developers Date: Fri Feb 15 2002 - 11:51:47 EST Jeff Garzik: > I would find this pathetic, if it didn't make me so mad. > Making an end run around the system, are we, Eric? No. I'm doing what Dirk Hohndel recommended I do during a phone call that happened at his initiative, last Friday morning. What "system" would you be referring to, anyway, Jeff? Is there some reason a respected open-source developer like Dirk who has concerns should not have a conversation with Linus to address problems he thinks are significant? Is there some reason I should not have asked the kbuild team members to give him appropriate background? I don't understand what is upsetting you. Is there some rule that all conversations with Linus must go through Jeff Garzik? If so, I was never informed of it. -- Eric S. Raymond From: Dave Jones Subject: Re: Disgusted with kbuild developers Date: Fri Feb 15 2002 - 12:25:07 EST On Fri, Feb 15, 2002 at 11:51:47AM -0500, Eric S. Raymond wrote: > I don't understand what is upsetting you. Is there some rule that all > conversations with Linus must go through Jeff Garzik? If so, I was never > informed of it. No, but at the least keeping Linux-Kernel in the loop would be considered not just nice, but a somewhat more courteous method than 'sending someone around to go see Linus' when your pet project isn't getting the acceptance you hoped for. -- | Dave Jones. http://www.codemonkey.org.uk | SuSE Labs From: Eric S. Raymond Date: Fri Feb 15 2002 - 14:01:01 EST No sending around is involved. Dirk approached me, not the other way around.

From: Larry McVoy
Subject: Re: Disgusted with kbuild developers
Date: Fri Feb 15 2002 - 12:25:56 EST

On Fri, Feb 15, 2002 at 11:51:47AM -0500, Eric S. Raymond wrote:
> Jeff Garzik:
> > I would find this pathetic, if it didn't make me so mad.
> > Making an end run around the system, are we, Eric?
>
> What "system" would you be referring to, anyway, Jeff? Is there some
> reason a respected open-source developer like Dirk who has concerns
> should not have a conversation with Linus to address problems he thinks
> are significant? Is there some reason I should not have asked the kbuild
> team members to give him appropriate background?

Yeah, there is. The point of *open* source is that it is *open*, Eric.
Jeff, if I understand him correctly, is making the point that if a
system can't stand up to public scrutiny, trying to get it in by private
campaigning is lame, not the open source way, and a little bit sleazy.

The open source development model depends on peer review, you might go
back and read some of your many essays on the topic. Don't you take
commercial companies to task for doing exactly what you are doing?
Your actions are confusing, do your writings apply to other people but
not to you? If there is some misunderstanding about your actions,
please clear it up. If not, practice what you preach.

-- 
---
Larry McVoy            	 lm at bitmover.com           http://www.bitmover.com/lm



From: Eric S. Raymond
Subject: Re: Disgusted with kbuild developers
Date: Fri Feb 15 2002 - 12:13:15 EST

So what "private campaigning" is going on here, exactly?

Dirk approached me because he was concerned that politics and poor
communication might be getting in the way of some valuable work. He
asked me to have the kbuild team fill him in on the background, and I
relayed that request. The kbuild team's discussion with Dirk is
taking place on a public mailing list.

I'm bewildered. What's the problem here?

Later in the thread, Alan Cox and ESR had a debate. Alan seems to be of the mind that CML1 can be fixed, so there is no need to migrate to CML2.
From: Alan Cox
Subject: Re: Disgusted with kbuild developers
Date: Fri Feb 15 2002 - 16:34:52 EST

> Sure CML2 fixes some bits that are not easily fixed in CML1,
> but I wonder sometimes how much of it is/was fixable.

Pretty much all of it. I wrote a proof of concept parser that can deduce
the set of rules that must be enforced and what must be changed when you
hit an option



From: Eric S. Raymond
Subject: Re: Disgusted with kbuild developers
Date: Fri Feb 15 2002 - 15:59:46 EST

Alan. It didn't work. It couldn't have -- among other things, the old
language can't tell visibility from implication.



From: Alan Cox
Subject: Re: Disgusted with kbuild developers
Date: Fri Feb 15 2002 - 16:47:03 EST

The prototype generates a very convincing table set, and the tables generate
very convincing graphs. The information to work out what option needs another
as I've said for months



From: Eric S. Raymond
Subject: Re: Disgusted with kbuild developers
Date: Fri Feb 15 2002 - 16:46:10 EST


I've *solved* this problem. I understand the constraints. I know
exactly what you will have to do to get the rest of the way, *because
I did it*.

I have built not just a "proof of concept" but a working
implementation so robust that it is in production use by three
different projects. And a substantial number of kernel developers are
using it now and reporting it good.

The good thing about working with developers like you and Dave Jones
and many of the other loonies on this list is that you are fucking
brilliant. The bad thing is that because you're fucking brilliant,
you're often also ungodly arrogant about second-guessing other
peoples' work -- you think your snap judgment or "proof of concept" is
somehow equivalent to two years of design, coding and testing by
someone who has been concentrating on the problem.

News bulletin: IT'S NOT.

Alan, don't talk to me about "proof of concept". Tell me about a
production-quality system, proven in use by people like Embedsys,
Webmachines, and the Compache project. Tell me you can duplicate what
CML2 does successfully before you run around implying my design
assumptions are full of crap.



From: Alan Cox
Subject: Re: Disgusted with kbuild developers
Date: Fri Feb 15 2002 - 17:40:41 EST

No you've replaced the system with one thats much harder to understand and
forces new tools on people. The *interesting* problem to solve is keeping

the existing infrastructure there and getting the same kind of results.

Since the information is there in CML1 to generate the list of constraints
for any given option, its a reasonable assertion that the entire CML2
language rewrite is self indulgence from a self confessed language invention
freak.

Alan



From: Eric S. Raymond
Subject: Re: Disgusted with kbuild developers
Date: Fri Feb 15 2002 - 17:08:14 EST

Alan Cox:
> Since the information is there in CML1 to generate the list of constraints
> for any given option,

False assumption...

> its a reasonable assertion that the entire CML2
> language rewrite is self indulgence from a self confessed language invention
> freak.

leading to a false result.

If you want to refute me, build it yourself. You'll get a valuable learning
experience. At the end of it, I'll have earned your apology. Not that I
expect to get it.



From: Alan Cox
Subject: Re: Disgusted with kbuild developers
Date: Fri Feb 15 2002 - 17:52:00 EST

> Alan Cox:
> > Since the information is there in CML1 to generate the list of constraints
> > for any given option,
>
> False assumption...

Do you have anything more constructive that "doesnt" to say

> If you want to refute me, build it yourself. You'll get a valuable learning
> experience. At the end of it, I'll have earned your apology. Not that I
> expect to get it.

Been there, done that, got the pretty graphs. Possibly the next step is to
redo the work into mconfig which already does pretty much anything we need
with the existing config files parsed using a real 100% genuine yacc grammar

Here's another example thread from the debate, one of the many arguments: From: Nicolas Pitre Subject: Re: Disgusted with kbuild developers Date: Sat, 16 Feb 2002 11:06:49 -0500 (EST) On Sat, 16 Feb 2002, Eric S. Raymond wrote: > Jeff Garzik: > > I consider CML2 an albatross now, and the maintainer does not listen to > > feedback. > > New FAQ entry: > > * Eric doesn't listen to feedback. > > Bill Stearns observed in February 2002 that "Eric has been very good > about folding in changes". In response to feedback from the kernel > mailing list, Eric has: [...] Eric has selectively listened to feedback he found interesting and still persist in resisting most others. You ignored mine so far, even if they are like the ones made by many others. Make the whole thing ___***IDENTICAL***___ to CML1. Do a formal translation of CML1 into CML2. Show us that you are clever enough to do so, even if it's not particularly interesting and challenging to you. Show us that you can listen to this simple feedback. Acknowledge that the feedback went through. Don't tell us that's not doable. Do it and show us that you can do a perfect translation of CML1 into CML2 with all CML1 structural flaws. Submit that, and only that. Do you copy? Please acknowledge that you listened to this very feedback. Nicolas From: "Eric S. Raymond" Subject: Re: Disgusted with kbuild developers Date: Sat, 16 Feb 2002 11:08:57 -0500 I listened. Would you ask someone designing a new VM to make it crash and hang exactly the same way the old one did? Do you demand that a rewrite of a disk driver have the same data-corruption bugs as the original before it can go into the tree, and tell the developer to add fixes later? Pragmatically, the point of rewriting a system is to *fix bugs*. Let's suppose we ignored this point for a moment. Let's also suppose that what you were demanding were not rendered horribly painful and perhaps impossible by the difference between CML1's imperative style and CML2's declarative one. How the hell do you possibly think I could possibly stay motivated under that constraint? Nobody is paying me to do this. I'm a volunteer; I need to produce good art, not waste time slavishly recreating old errors just because a few people are unreasonably fearful of change. From: Nicolas Pitre Subject: Re: Disgusted with kbuild developers Date: Sat, 16 Feb 2002 12:34:41 -0500 (EST) On Sat, 16 Feb 2002, Eric S. Raymond wrote: > Nicolas Pitre: > > Do you copy? Please acknowledge that you listened to this very feedback. > > I listened. Good. We therefore can make progress. By your comments below we now know that you listened and that it's extremely painful for you to admit the truth. But you must understand the nuances if you want to go somewhere with CML2. > Would you ask someone designing a new VM to make it crash and hang exactly > the same way the old one did? > > Do you demand that a rewrite of a disk driver have the same data-corruption > bugs as the original before it can go into the tree, and tell the developer > to add fixes later? Your examples are flawed. The person who fix bugs in the VM doesn't use any other language than the original one. The person who do a rewrite of a disk driver doesn't change anything in the struct rational purpose of reading and writing blocks of bytes on a media. > Pragmatically, the point of rewriting a system is to *fix bugs*. Indeed! However CML2 is __way__ more than only bug fixing. If you qualify your current CML2 inclusion proposal as only "bug fixes" it's much too much under estimating the work you did and the effort you put in it. I'm sure people will agree with the fact that the CML2 syntax is much more enjoyable to read and work with. The fact that all frontends are using the same parser eliminates bugs already. That's the part most people have nothing against. For god sake submit those parts and leave the rest for a later discussion! Admit that in the tremendous work you did, there are parts that people will disagree with. Don't spoil it all by not separating things and only presenting it as a big unknown blat! For people to have confidence in CML2 it must be proposed in multiple incremental changes -- changes that are small enough (either conceptually or physically) for people to be able to grok them without too much effort. You must also be prepared to see people wanting to modify things in some ways you didn't think about along the process. That's why only producing a strict CML1 --> CML2 translation would already be a big enough step for now. > Let's suppose we ignored this point for a moment. Let's also suppose > that what you were demanding were not rendered horribly painful and > perhaps impossible by the difference between CML1's imperative style > and CML2's declarative one. Do what's necessary so the translation is a near as possible and the result in say 'make config' is the same (same questions as before). You certainly can do that with some bits of awk. If you can't come with something similar, you're then already admitting yourself that CML2 is so big a change that people are right to be afraid of it. > How the hell do you possibly think I could possibly stay motivated under > that constraint? Nobody is paying me to do this. I'm a volunteer; I > need to produce good art, not waste time slavishly recreating old errors > just because a few people are unreasonably fearful of change. First, by doing what I described above, you'll please more people than you can imagine. Next you must be prepared to face the possibility that your art might not be adopted integrally. You should be motivated by the percentage that gets adopted in the end. When Al Viro decides to rewrite the VFS, he doesn't submit it to Linus as a single big opaque patch to replace the old code at once. If he did, he would probably still be waiting for Linus to merge his art. Note the nuance: we don't criticize your art but rather the way you present it. It might be the best configuration tool ever, but introduce it in incremental steps and leave some slack between them for those who didn't work on it for the last year to digest them. Please be wise so not to waste your art. Nicolas From: Jeff Garzik Subject: Re: Disgusted with kbuild developers Date: Sat, 16 Feb 2002 11:37:14 -0500 "Eric S. Raymond" wrote: > Let's suppose we ignored this point for a moment. Let's also suppose > that what you were demanding were not rendered horribly painful and > perhaps impossible by the difference between CML1's imperative style > and CML2's declarative one. > > How the hell do you possibly think I could possibly stay motivated under > that constraint? Nobody is paying me to do this. I'm a volunteer; I > need to produce good art, not waste time slavishly recreating old errors > just because a few people are unreasonably fearful of change. If you are not prepared to evolve the system, you are not familiar with kernel development... Prove that CML2 is good and needed by breaking it up into steps, reaching the final goal... Good ole Al Viro's patch progressions are an excellent example to emulate :) Jeff From: Alexander Viro Subject: Of Bundling, Dao and Cowardice Date: Sat, 16 Feb 2002 13:29:57 -0500 (EST) On Sat, 16 Feb 2002, Eric S. Raymond wrote: > Would you ask someone designing a new VM to make it crash and hang exactly > the same way the old one did? > > Do you demand that a rewrite of a disk driver have the same data-corruption > bugs as the original before it can go into the tree, and tell the developer > to add fixes later? > > Pragmatically, the point of rewriting a system is to *fix bugs*. That, folks, is a fine example of very common problem. It's very tempting to try and force your ideas of How The Things Should Be Done(tm) into the tree by bundling them with genuine bug fixes and (more or less gracefully) refusing to split the patch. Anybody who had done serious work on the tree had felt that temptation at one point or another. No arguments - it's very attractive. Indeed, you don't have to defend every point of your design and implementation - you can always point to Bad Bugs(tm) that are fixed by the entire thing and obfuscate the objections away. The trouble being, _SUCH_ _BUNDLING_ _IS_ _NOT_ _A_ _VALID_ _STRATEGY_. It had been tried. Many times. Sometimes it even got the thing into the tree. _All_ such cases had lead to trouble. There is another way. It takes more efforts, it requires readiness to defend every damn part of your design and it means that you will have to deal with the sad fact that parts of that design need to be redone. It will take more time. It will look less sexy. It may very well mean that somebody else will get alternative design into the tree on the top of your efforts. There are only two positive things about it - it is honest and it leads to better tree. How does it work? Simple - look at the path from original tree to tree with your modifications. And no, "one big jump" doesn't count. Think of the way your ideas can be split into parts. Think of the way obstructions to the changes can be split into parts. Find small and simple changes that can go in right now, would improve the tree and would make the rest of path easier. And merge them. If you find that it can't be done - think what needs to be changed in the tree (or in your modifications) to make the split possible. If you see that something is ugly and stands in the way - help the thing to achieve the form it wants. That may change all your ideas about the right design for your modifications. That's OK - it's a Good Thing(tm). And merge the small changes. Step by step. _That_ works. Less glory; more time; more work. And better tree afterwards. The code wants to get cleaner. In many directions. The trick is to pick the right ones and let the thing grow into natural form. Do that many times in the right order and you will get it where you want it to be. Quite possibly - in a better place than you thought originally. Before you start saying that it's impossible - THAT HAD BEEN DONE. Between 2.3.40 and 2.5.2 (about two years) we got pretty much complete redesign of VFS, along with the stuff that was plain impossible with the old design. Get the old tree. Get the current tree. Compare. And realize that more than half of the way was covered during 2.4. Yes, the total size of patches had been about 2 times larger than the size of combined patch. Definitely took a lot of extra efforts. You know what? It was worth the trouble. Result is better than what I've expected. And a lot of things in the first iteration of design had turned out to be useless - stuff that was there to work around the problems that got _fixed_ by cleanups at some point during these two years. And I fully expect to see the same thing happening with the stuff I'm planning and doing now. While we are at it, look what Rik is doing right now. He has a huge patch pretty much rewriting (what a coincidence) VM. He had tried to shove its previous incarnations into the tree whole-sale. Saying that it didn't work is putting it _very_ mildly - resulting fight is in l-k archives and boy, was it nasty... Look what's going on now - same splitup and gradual merge strategy. Sure, extra work. Guess what? The thing had already become better from that work. As for your motivations... If you are doing that for bragging rights ("I've thought up a new design and now it's in the tree, exactly as I envisioned it") - find something else to brag about. Your strategy is basically a sign of cowardice - you are fighting tooth and nail to avoid gradual changes and the only way I can interpret it is that you are afraid to let parts of your design stand on their own. Not exactly a bragging material, that...

And, skipping to where the thread seems to have ended, fortunately on a constructive note:
From: "Eric S. Raymond"
Subject: Re: Disgusted with kbuild developers
Date: 	Sat, 16 Feb 2002 09:52:02 -0500

Jeff Garzik:
> Impacting kernel developers' productivity and workflow because of this
> is more of what I object to...

I still don't get why you think CML2 is going to interfere with your
workflow.  Would you explain this to me, please?



From: Jeff Garzik
Subject: CML2 feedback (was Re: Disgusted with kbuild developers)
Date: 	Sat, 16 Feb 2002 10:33:53 -0500

"Eric S. Raymond" wrote:
> What problems do you have with CML1?  Name them and I will make sure
> they are not issues in CML2.
> 
> I've been begging for feedback for many months.  Pleases *get specific*.
> Instead of muttering that Eric refuses to listen, *give me something
> to listen to*!

(cc'ing Linus)

1) Remove global dependencies.
> source "arch/um/rules.cml"
> source "arch/i386/rules.cml"
> source "arch/alpha/rules.cml"
> source "arch/sparc/rules.cml"
[...]

All symbols should not be included on every config run.  The
architectures currently create their own master rules file, which then
selectively includes other config files.  You break this and remove
control (and flexibility) by enforcing something globally which was
previously done on a per-arch basis.


2) As discussed in December (as well as before and after that thread),
the --eventual-- direction to go is that a single file will contain all
meta information about a driver or set of drivers.  Config.help entries,
Config.in entries, Makefile rules, etc.  The idea is to group
information about a particular object in the same location.  So,
considering (a) that Config.help now exists and (b) this eventual
direction, splitting up rules and symbols into completely separate files
is not the greatest idea... when we eventually want to integrate rules
and symbols.


Take a look at what we find in Donald Becker's virgin source tree, in
winbond-840.c:
> /* Automatically extracted configuration info:
> probe-func: winbond840_probe
> config-in: tristate 'Winbond W89c840 Ethernet support' CONFIG_WINBOND_840
> 
> c-help-name: Winbond W89c840 PCI Ethernet support
> c-help-symbol: CONFIG_WINBOND_840
> c-help: The winbond-840.c driver is for the Winbond W89c840 chip.
> c-help: This chip is named TX9882 on the Compex RL100-ATX board.
> c-help: More specific information and updates are available from 
> c-help: http://www.scyld.com/network/drivers.html
> */

All the information is in one location.  Now, Linus said not to embed
this information in the source, but put it in a metadata file.  But
other than that, this is a small and simple example of what the metadata
config files might eventually look like.


So, my own personal opinion is that CML2 should follow these suggestions
:)

Regards,

	Jeff



From: Jeff Garzik
Subject: Re: Disgusted with kbuild developers
Date: 	Sat, 16 Feb 2002 10:36:21 -0500

"Eric S. Raymond" wrote:
> 
> Jeff Garzik:
> > Impacting kernel developers' productivity and workflow because of this
> > is more of what I object to...
> 
> I still don't get why you think CML2 is going to interfere with your
> workflow.  Would you explain this to me, please?

(please read "CML2 feedback" message before this...)

Ideally in the future I can add and update a driver's makefile and
configuration information by patching drivers/net/netdriver.c and
drivers/net/netdriver.conf, and touch absolutely no other files.

	Jeff



From: Eric S. Raymond
Subject: Possible breakthrough in the CML2 logjam?
Date: 	Sat, 16 Feb 2002 10:52:19 -0500

Jeff Garzik:
> Ideally in the future I can add and update a driver's makefile and
> configuration information by patching drivers/net/netdriver.c and
> drivers/net/netdriver.conf, and touch absolutely no other files.

That's very much the direction I'd like to go in, Jeff.  I'm
surprised and delighted to hear you say this.  You're actually
anticipating my plans for six months down the road.  Maybe we
have some common ground here.

One of the objectives of the CML2 language design is to make it
amenable to being generated by a metadata analyzer.  I mean some very
specific things by this.

One important property which CML2 declarations have that CML1 syntax
does not is that (a) they're not order-dependent, and (b) they have
strong locality (that is, the syntactic context of a single
declaration holds all the semantic information -- you don't have to go
monkey-climbing up a bunch of enclosing syntax to parse it, or
*generate* a bunch of enclosing syntax to express it).

These properties tremendously simplify generating a rulebase from
(so far hypothetical) analysis tools.  My first step would be to 
automatically generate CML2 bus-guard information from annotations
in the driver sources.  Once I write a tool that can do that, I can whack
about 25% of the rulebase, including most of the parts that are a 
maintainance headache.

My longer-term plan is to whittle away at the manually-maintained
rulebase until nothing but menu structure and a handful of cross-
directory requirements are left.  Everything else should be generated
by a program that turns source-code metadata into stereotyped CML2
markup.  

Even a lot of the menu structure might be generatable, requiring it
to be specified only in exception cases where as a matter of UI design
choice you don't want to track the code hierarchy.

This has been part of my long-term plan since about eighteen months
ago.  It's had a major, *major* impact on the language design.  In
particular it's one of the reasons visibility and implication 
can be declared separately from the menu structure.

If you go back and look at the language design from this point of view,
I think many things you might not have seen the point of before will
become clearer.

Note well two points:

1.  This can't practicably be done in CML1.  CML1 markup has crappy
locality; the metadata analyzer would have to carry around way too
much state about other symbols in order to generate the markup for any
given one.

2. This design basically demands a single-apex tree.  Otherwise I don't
think you can get the consistency-checking right -- I haven't been 
able to invent a method to do it, anyway.

So if you want this, please start backing CML2 and contributing in a
positive way.  I know how to get where you want to go.  CML2 is
specifically intentionally designed to make it possible, and I have the
will to follow through.

But for these good things to happen, CML2 *got to go in*.  I cannot both
continue the enormous effort of maintaining a parallel rulebase
and move the ball forward towards automatic rule generation from metadata
and other good things.  That's what I want to be working on.



From: Jeff Garzik
Subject: Re: Possible breakthrough in the CML2 logjam?
Date: 	Sat, 16 Feb 2002 11:34:29 -0500

"Eric S. Raymond" wrote:
> But for these good things to happen, CML2 *got to go in*.  I cannot both
> continue the enormous effort of maintaining a parallel rulebase
> and move the ball forward towards automatic rule generation from metadata
> and other good things.  That's what I want to be working on.

Global dependencies...  CML1 doesn't have this now, and it needs never
to have it.  This is no point in merging a design change of that
magnitude only to take it away later on.  Further, merging a rulebase
which contains such dependencies would be a huge mistake that might take
years to undo.  drivers/net/rules.cml doesn't need S/390 stuff in it,
AFAICT, and that is a simple example of a bug found in many of the
rules.cml files.

	Jeff



From: Eric S. Raymond
Subject: Re: Possible breakthrough in the CML2 logjam?
Date: 	Sat, 16 Feb 2002 11:57:39 -0500

All right.  There are a couple of ways we can attack this -- I have
some ideas.  But I want a meta-question answered first.  If we solve
this issue, *are you on board*?

I've got to get off the fscking treadmill I'm on now where I'm spending
so much time on the parallel-rulebase maintainance and the flaming
politics that I can't really get anything else done.  

After what you wrote upthread, I don't think you want me to be stuck
either.  Fact: ain't nobody else visible with both the motivation and
skills to tackle what you want done.  I've been thinking about
metadata-centered configuration and consciously bending CML2's design
towards it for longer than anyone else has even been considering the
problem.

I *will* get us there -- I think the last two years have demonstrated
my determination.  But to do it, I need alliance rather than
obstruction. I need you to tell Linus that your concerns have been met
and sponsor CML2 to go in, so I can stop perpetually re-fighting old
battles.

Because we agree on getting to metadata-centered configuration, your
requirements list now appears to have shrunk to one.  You want to
"eliminate global depencies".  I hear that.  I got it.  

What I want to know is that this is not a proxy for "CML2 can never be
good enough" and that you'll be pulling more objections out of your butt
till the Sun goes nova.  Because if that's true there's no point in
my trying to work with you. 

But if "eliminate global depencies" is it, we can be allies, because 
ultimately we both want to get the config system to the same place. 
I've taken the first, biggest step -- from imperative code to 
declaration/constraint language.  The second -- from a
declaration/constraint language to a metadata-centered system -- 
will be easier.

A positive answer may be "Yes, that's it, let's go forward", or
"Almost, there are a couple other minor and negotiable issues *which I
will now list*" (where "Minor and negotiable" = "I don't have to scrap
my architecture").



From: Jeff Garzik
Subject: Re: Possible breakthrough in the CML2 logjam?
Date: 	Sat, 16 Feb 2002 12:29:59 -0500

"Eric S. Raymond" wrote:
> But if "eliminate global depencies" is it, we can be allies, because
> ultimately we both want to get the config system to the same place.
> I've taken the first, biggest step -- from imperative code to
> declaration/constraint language.  The second -- from a
> declaration/constraint language to a metadata-centered system --
> will be easier.

Well, let's simmer things down a bit and see what other people have to
say.  Maybe I'm completely off base.

But to answer the question which the subtext seemed to asking (at least
to me), no, there is no vendetta against you.  And for the record on a
specific detail, I have no problem with python use.  If I have no major
objection based purely on technical grounds, that what you'll be hearing
from me.

And further, in 2.5.x series at least, minor objections can be worked
through after a kernel merge.  But major objections... that's not the
time when something -must- -go- -in-.

Regards,

	Jeff



From: Eric S. Raymond
Subject: Re: Possible breakthrough in the CML2 logjam?
Date: 	Sat, 16 Feb 2002 12:32:52 -0500

Jeff Garzik:
> Well, let's simmer things down a bit and see what other people have to
> say.  Maybe I'm completely off base.

Jeff, I'm not asking "other people".  I'm asking *you*.  

You're one of the people Linus says he trusts.  Linus has said,
explicitly, to myself and Dave Jones, on this very issue, "get me out
of the loop".  My take is that if you switch from opposing CML2 to
supporting it, the political wars will probably be about over.

I hope the prospect of actually getting to a metadata-centered
configuration system in our lifetime will be sufficient incentive for
you to do so.  Oh lovely dream...I could have a prototype
metadata-to-CML2-bus-guards translator in less than two weeks, I
think, if I didn't have to maintain the CML2 rulebase all by myself.  I
want to go there.

> But to answer the question which the subtext seemed to asking (at least
> to me), no, there is no vendetta against you.  And for the record on a
> specific detail, I have no problem with python use.  If I have no major
> objection based purely on technical grounds, that what you'll be hearing
> from me.

OK.  Is "global dependencies" your sole technical showstopper?  If so,
can we dispose of the ill-defined "CML2 will fuck up my workflow" thing?

If you tell me yes, we can move to a discussion of why global
dependencies are a problem and how to solve it.



From: Jeff Garzik
Subject: Re: Possible breakthrough in the CML2 logjam?
Date: 	Sat, 16 Feb 2002 14:01:09 -0500

"Eric S. Raymond" wrote:
> 
> Jeff Garzik:
> > Well, let's simmer things down a bit and see what other people have to
> > say.  Maybe I'm completely off base.
> 
> Jeff, I'm not asking "other people".  I'm asking *you*.
> 
> You're one of the people Linus says he trusts.  Linus has said,
> explicitly, to myself and Dave Jones, on this very issue, "get me out
> of the loop".  My take is that if you switch from opposing CML2 to
> supporting it, the political wars will probably be about over.

Shit... don't inflate my stock more than it's worth.

I'm not giving a pre-blessing to any, but I'm willing to give something
an honest and fair review.

	Jeff

To find the full thread, search for "Disgusted with kbuild developers" in any of the many online lkml archives. For example, you can find the start of the thread here or here.

What a load of crap

Anonymous
on
February 17, 2002 - 10:46am

With people like Jeff Garzik spewing crap, it's no wonder a lot of people look at the Free Software community as a bunch of unwashed, communist hippies. What's wrong with having a private conversation with someone about the technical merits of a package? Why is that any of his business? Would he like to see my tax returns while he's at it? There was nothing subversive going on here, and I'd really like to know why Jeff feels the need to start fights over NOTHING.

Not a pre-blessing...

Anonymous
on
February 17, 2002 - 12:09pm

Jeff,

I don't think that ESR is asking for a pre-blessing. He's asking for the requirements for project success. Unless you tell him exactly what defines success, you're holding a carrot in front of him without telling him how to get to it.

It's not unreasonable to ask for the requirements necessary to succeed. That's decidedly different than asking for a pre-blessing on a project.

$.02

Sort of a pre-blessing...

Anonymous
on
February 17, 2002 - 2:04pm

It sort of is. Jeff basically said the global database problem was a prime example of how it upset his workflow. ESR is converting this into a "if I solve this problem and metadata which is on your feature list, will you support me 100% and be my ally against everyone else" issue.

Jeff's response was reasonable. Basically he said he'd feel more comfortable being an ally if there were more people buying into his vision. He's also implicitly admitted that although he has other objections besides the global configuration, the advantages of metadata *may* be enough to sway him. It may not.

In either case, he agrees that it's a definite step in the right direction since it makes the migration to the new system more incremental. This was his point all along.

I disagree

Anonymous
on
February 17, 2002 - 7:53pm

ESR said that there are some possible responses to the "will you support me 100%" question. One is yes. Another is "No, you also need to do X". ESR is simply trying to get a full set of requirements for what it will take to fix the problem that he, and others see.

So it's not on the single issue. ESR gave the guy an oppurtunity to say there are more issues than just the one. The guy still doesn't want to commit to what it will take for ESR to succeed?

IMHO, he's being unreasonable.

Not really

Anonymous
on
February 18, 2002 - 8:25am

> So it's not on the single issue. ESR gave the guy an oppurtunity to
> say there are more issues than just the one. The guy still doesn't
> want to commit to what it will take for ESR to succeed?
> IMHO, he's being unreasonable.

Take a look at the section of text he replied to:

> You're one of the people Linus says he trusts. Linus has said,
> explicitly, to myself and Dave Jones, on this very issue, "get me out
> of the loop". My take is that if you switch from opposing CML2 to
> supporting it, the political wars will probably be about over.

ESR's asking for political support, not technical specifications. The key requirements have been made: "get rid of global information". Since he doesn't know the code as well as ESR does, it's not unreasonable for him to request that ESR makes the techical specs before he approves. This is especially true, when he's asking for techical *and* political support.

Viro's commment addresses root of the problem

Anonymous
on
February 17, 2002 - 12:23pm

See the comment:

Subject: Of Bundling, Dao and Cowardice

He's dead on.

root of the problem

Anonymous
on
February 17, 2002 - 2:51pm

And why the hell is including some cleanup with new features so absolutely ver boten? Sure I know the so-called technical reasons for it... I've been pissed and annoyed by it myself.

The reason you work on the new feature is it scratches your itch... the reason you do the cleanup/re-org is the unsightly mess some people leave. Yeah, after the fact, you agree, you should have cleaned up the mess first and got that checked in... but that wasn't the itch or your motivation. And sure, to be honest, your cleanup still could be wanting... someone will then argue that "why fix it if it ain't broke?"

Crap, we're sick of these arguments. The Code Is Not A Sacred Text. The code has had many, many sexual partners, it's disease ridden. If someone wants to shave it and make it presentable and teach it a few more tricks... why the heck not? If it even breaks the first time, who the heck cares, it'll be fixed a few hours later.

CML2 is a very nice trick... everyone will love it. It boggles me that some folks will defend CML1. They must still be using DOS.

I'd love to see a s/w project that uses Wiki to manage the code... you can add modules and change any line... then just hit "Run" and see what happens.

Other roots

Anonymous
on
February 17, 2002 - 3:31pm

> you should have cleaned up the mess first and got that checked
> in... but that wasn't the itch or your motivation. And sure, to be
> honest, your cleanup still could be wanting... someone will then
> argue that "why fix it if it ain't broke?"

Okay, it's not your itch, but there *are* people with that itch. I'd be willing to bet that if you posted the job to the kernel janitors lists, you've have several people volunteering. Why? Because while the janitors are cleaning up, they're learning something and getting their names known to the community. Sure it's not elegant work, but it's one of the easiest way to get the kernel hacker's trust and respect.

> Crap, we're sick of these arguments. The Code Is Not A Sacred Text.

The issue isn't the code, the issue is the configuration files. If CML2 worked with the old configuration files and provided most of its features, the only arguments would come from the whiny but "I don't like Python" group. As someone said elsewhere, the way to deal with this group is just to throw a "dead Parrot" at them.;-)

*A lot* of things depend on those configuration files. By scratching an itch that doesn't belong to him, he's made many people's lives more difficult.

That's the sad part. Eric did a lot of good work with CML2. He should be basking in praise, but instead he's getting criticised. Shakespeare, has much to say about this sort of predicament.

value

Anonymous
on
February 17, 2002 - 12:46pm

this kind of debate is almost never seen in the commercial world. this is where open source beats the pants off commercial process. here all the viewpoints are debated !!! whether anyone 'likes them" or not, and with all the information to hand the best answer will become clear.

In the commercial world the pet idea of the most senior person gets the airtime with managment and that is the way forward, generally everyone else can shutup and get on with what they are paid to do

suggetsing that this is childish etc etc is to completly miss the point of debate.

Walter

Anonymous
on
February 17, 2002 - 2:56pm

This is exactly the sort of thing that goes on inside companies... the difference with free software is that it's out in the open. Trust me. Jamie Zawinski (www.jwz.org) has some interesting examples from inside Netscape when they were still important.

> this kind of debate is almo

Anonymous
on
February 17, 2002 - 3:30pm

> this kind of debate is almost never seen in the commercial world. this is where open source beats the pants off commercial process.

They sure as hell do, but they aren't seen *outside the meeting rooms/hallways* of the companies in which they happen.

There is the same kind of debate, but it's not public.

Joe Black

Anonymous
on
February 17, 2002 - 1:04pm

I thought Viro's comments were great too. It also seems that Eric is disbelieving that Alan has proven (to himself anyway) that CML1 has enough potential to address it's current limitations without "changing everything". I tried CML2 and thought the user interface was cumbersome and non-intuitive. It was also slower than the current system. If you compile the tree several times a day, you want the system to be as fast as possible. Also, that Eric changed the language to python, instead of the current tools is also a demerit. Eric would get more traction if he improved CML1 first, then let CML2 stand on it's own. Also, CML2 in 2.4.x really doesn't seem to be on the radar now, so if he is concerned about maintenance, he should just focus on:
1) improving the current code base, then
2) fitting CML2 in if it is truly better.

John Macy

Anonymous
on
February 17, 2002 - 2:15pm

Being based on Python really isn't an issue, especially since Parrot will be common to both Perl and Python.

The real issue for most people is that it's an all or nothing deal. If there was a feature for feature and bug for bug CML1->CML2 translator, people who prefered CML1 could use it, and people who prefered CML2 would use that. It would be a fair comparison.

CML2 advocates say that CML1 doesn't contain enough information. No problem. If that information couldn't be added to CML1 (even as a structured comment in CML1 code), it could be maintained in a separate "enhanced metadata" file.

If CML2 is truly better (as many people seem to say it is), then CML1 will die off naturally as the problems you mention disappear. If not, CML1 will continue to grow, get more functionality, be cleaned up, until it has all the important features of CML2.

Knowing Eric's history of ma

Anonymous
on
February 18, 2002 - 9:25am

Knowing Eric's history of making simple things overly-complex and hard to understand (ie fetchmail), I really hope someone else does the work on CML, not Eric.

Jeff Garzik is a coward at the end

Anonymous
on
February 17, 2002 - 2:10pm

Well, it looks like there are some good points against ESR (like being able to split the patch), but ESR is not exactly a dummy either and shows himself more reasonable and better controlled than 90% of the lkml participants, which, imo, is a great merit.

But, it was pretty disappointing for me when Jeff brushed off personal responsibility at the end. WHAT A COWARD!!! BOOOOOOOOOO BOOOOOOOOO JEFF GARZIK!!! Horrible!! ESR is asking, *will you ***PERSONALLY*** support CML2*, YES OR NO?! FYI, non-obscruction is a NO answer. If you are neutral, THAT'S A NO. Why don't you have the balls to answer ESR? At first I thought, wow, Jeff is a reasonable guy, but the last post dispelled my illusions. As soon as it was time for Jeff to make a *real* decision, he couldn't make one... can't commit.

Jeff, in real life you have to COMMIT to a decision that IS SOMETIMES BAD AND WRONG. But it's better to make a WRONG decision occasionally than to ever be indecisive. You're affraid that your support of CML2 will tarnish your name. That's all there is to it. "Pre-blessing" is not even a word. You know if you have to invent non-words, you don't have a leg to stand on. (same goes to ESR with his idiotic flurble concept or whatever).

Look at Linus. He put in a whole new VM in 2.4. MAYBE THAT'S WRONG. Sure. But it is decisive! This is a mark of a good leader. Linus was willing to *take a risk*. Jeff, if you ever want to grow up and be like Linus, you have to *take risks* and put your ass on the line for others, EVEN IF IT MAY BE WRONG TO DO SO IN HINDSIGHT.

Jeff is a guttless coward. Jeff is affraid of being wrong. Boooo.

Jeff Garzik is NOT a coward at the end

Anonymous
on
February 17, 2002 - 2:17pm

See my "Sort of a pre-blessing..." comment.

On the topic of inventing words

nimrod
on
February 17, 2002 - 2:18pm

>You know if you have to invent non-words, you don't have a leg to
>stand on. (same goes to ESR with his idiotic flurble concept or
>whatever).

IIRC, it's "flerbage". ;D

Eddy Ko

Anonymous
on
February 17, 2002 - 3:41pm

Yep. It's a case of "I am smart. Not you. You are sneaky. He on the otherhand is Macheavelic." logic.

Why MARC?

nimrod
on
February 17, 2002 - 2:29pm

Why link to marc.theaimsgroup.com for the full thread? I usually use it for browsing LKML, but i've noticed it is a bit screwy getting the pages in the right chronological order; which is not good if you want to browse a single thread.

So here is an alternate link for start the thread.

Unfortunately, they seem to split their archives into weeks, so to see the messages after Feb15, you'll have to go here.

Wow. Didn't take long for the lamers to show up here...

Anonymous
on
February 17, 2002 - 2:52pm

Hahaha... I get a kick out of the kernel hacker wannabes flaming Jeff Garzik. A person who has contributed much to kernel development and is a developer of a leading distribution (I'd love to see the pathetic resumes of the anonymous detractors here).

Jeff was justifably pissed by the whole ordeal and people rip on him for not blinding saying he'll support ESR because ESR says he'll fix something? Jeff is wrong for wanting to see actual code and changes before he'll lend support (of a political nature)? Such comments are of a political nature and should not be in linux-kernel... ESR got caught playing politics.

For the anons who feel the need to comment: STFU and show your contributions to the kernel before ripping on actual kernel developers who comment on something they feel someone is trying to force upon them.

BTW, I loved one anonymous idiots comment to the mailing list about how Al Viro should STFU and write his own if he didn't like ESR. I really love that argument... yes, Al Viro is the man... not only should he continue his work on _rewriting_ VFS and other core subsystems, but he should temporarily stop that work and do other peoples jobs too because some punk says so... haha

Nice attitude

Anonymous
on
February 17, 2002 - 10:24pm

After all, unless you're Linus or can write kernel code, your opinion doesn't matter. But don't worry, if you CAN write kernel code, you're free to be a complete asshole! Welcome to the real world, gentlemen, start acting like human beings.

50/50

Anonymous
on
February 18, 2002 - 1:43am

No one should be told STFU when in public forum.
YSYAA(you're showing your ass again)

People are smart, sometimes, and just because they may/may not hack Linux kernels is no reason they can't call it like they see it. If so, then Jon Katz should stop writing movie reviews. He's not a movie producer you know. Nor does he participate in the making of movies. ;)

Chill, and try to be a little more adult next time.
--The GrandMaster

Re: 50/50

Anonymous
on
February 18, 2002 - 12:13pm

1) JonKatz should stop writing movie reviews

2) You saw it wrong. Jeff Garzik knew immediately what was happening, and if he had turned out wrong, there would have been half a dozen "WTF?" comments (not from Eric) and that would have been the end of the thread. The fact that you have half the kernel maintainers weighing in on it as well should mean something.

the problem with Jeff is...

Anonymous
on
February 18, 2002 - 2:38pm

The problem with Jeff is not that he has a weak resume or failed to provide a YES answer to ESR. If that's what you think you're an idiot.

The problem is that he failed to provide ANY real answer! I think a simple "NO, your code can't fly with me ESR" would have been infinitely better than "please don't inflate my stock, I can't make any real decisions around here, because I'm just pissing away the decision-making power Linus gives me via his trust".

ESR asked a very reasonable question, "*IS* so and so your *only* objection, and IF YES, and IF this objection is remedied, will you GIVE YOUR SUPPORT?" Listen, it doesn't matter if ESR is a complete idiot or what. It's a really simple question that deserves a really quick and simple answer, especially from a guy who appears to have read the source and is familiar with the issues, AND whom Linus trusts and thus, indirectly transfers his decision-making power, THUS making it his JOB to DECIDE (it means, NO is also a decision).

The problem is Jeff is affraid of, "What if ESR really fixes all my objections? Do I want to support CML2 then?" He just doesn't have an opinion, and for a decision maker, that's horrible. If I were Linus, I wouldn't entrust decision making power to an indecisive man.

what??!!!

KiTaSuMbA
on
September 8, 2002 - 10:54pm

Oh, I get it. You code, you are a genious. I don't code, I'm a lamer... Riiiiiighhhhttt... Your Highness!
First of all, why do you think the only persons that have a right to talk about the kernel are those writing it? How about those fscking USING it? If that was the case, why the fsck should anyone release his work (code or other) to the public? If anyone using his work but not _directly_ contributing should STFU...
World domination without the world... Great! Go for a beer or something man, you NEED to see the real world!
Do you know what's lame? ELITISM is lame!
On the real issue here, CML1 has terrible shortcommings and that is a FACT. If Cox can get to fix the mess without requiring a continuous "fight with the beast" then fine, let's keep it. But ESR claims that it will be a forever uphill trying that because of the very design of CML1. So he proposes CML2. But his position is not the best either... Perhaps python is not the best language for the job... Fine! Someone else could implement the idea on a better suited language. But I didn't see any... He shouldn't push the whole thing down the throat... Obviously mixing CML1 with CML2 is not an easy job nor a pleasent one. Fine! Just separate the back end from the front end. If ppl don't like the interface they could write a new one. But I didn't see that either... I just saw ppl bitching about not being able to use that beauty of menuconfig! Are you people NUTS?!!? What's wrong with you? Don't tell me your Highnessies of Kernel Hackers can't get around to work out a new interface for fsck's sake! You know, you remind me of people with a bleeding edge system idling at 100% refusing to run X because the freaking console is "better" as if the rest of us got those xterms all over the place for the looks. All I saw was people being extremely insulting, uneducated and bitching around not by discussing actual merits and demerits of the new system proposed but because they LOOOOVE SOOO much the current one and would like the new one if it *looked* and *behaved* like the old one. So why put it together in the first place?
As they say, you can't teach an old dog new tricks... Are you, your Highnessies of Fine Coders, old dogs? Because you seem stuck to those old tricks...

Just found over the i-net...

Anonymous
on
February 18, 2002 - 7:24am

And it may well apply here...

>JP> So after a lot of heated discussion

> After some constructive exchange of ideas performed in an atmosphere of proactive synergy.

Hehe.

Nothing like a flamefest to promote a flamefest :-)

alex
on
February 18, 2002 - 7:31am

Either the sites been /.ed recently or posting a flamefest brings out the hordes to comment on the story.

As far as I see it the arguments over CML2 are the same as over the ALSA patches or whatever other new change wants to get into the development kernel. At the end of the day what we are seeing on lkml is a bun fight for people trying to get there stuff in as soon as possible before the next feature freeze is called and they have to wait for the next bleeding edge development.

Alex

it got /.ed

KiTaSuMbA
on
September 8, 2002 - 10:25pm

Actually I was afraid it would be down or crawling after I saw the /. post...

The ESR Rap

Anonymous
on
February 28, 2002 - 7:13am

I think this little ditty should clear up any confusion.

The ESR Rap

(Chorus:)
I am EEE ESS ORR, elite hack-ORR, hear me ROAR!
1.
I am of the hacker elite, can't you see?
fetchmail, blindfolds in nethack, er... (hum-hum diddle dee)
Bow down on your knees, don't you diss me!

(chorus)
2.
I am an author, I "wrote" New Hacker's Dictionary
Well, shit, so what if I done stole it from MIT?
I didn't get in there, so I figured they owed me!

(chorus)
3.
I am founder and leader of OSI
Now my Open Source show is really on the road!
Free Software? Hah! Show me dat code!

(chorus)
4.
I am ESR Skywalker, elite Jedi Knight
I'm packing mah gun and I'm ready to fight
You diss me and I'll send you to eternal night!

(chorus)
5.
I am wealthy board member, VA Something-or-other
Got plenty dollar bills, at least on paper
What's that? Dot.com crash? Oh fuck! See you later!

(chorus x 2)

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.