public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Timothy Miller <miller@techsource.com>
To: Grigor Gatchev <grigor@serdica.org>
Cc: "Theodore Ts'o" <tytso@mit.edu>,
	Mike Fedyk <mfedyk@matchmail.com>,
	Christer Weinigel <christer@weinigel.se>,
	linux-kernel@vger.kernel.org
Subject: Re: A Layered Kernel: Proposal
Date: Tue, 09 Mar 2004 16:03:20 -0500	[thread overview]
Message-ID: <404E3118.8020608@techsource.com> (raw)
In-Reply-To: <Pine.LNX.4.44.0403091953001.32687-100000@lugburz.zadnik.org>



Grigor Gatchev wrote:
> 
> On Mon, 8 Mar 2004, Theodore Ts'o wrote:
> 
> 
>>On Mon, Mar 08, 2004 at 02:23:43PM +0200, Grigor Gatchev wrote:
>>
>>>Also, does "think API changes, nothing generalised *at all*" mean anything
>>>different from "think code, no design *at all*"? If this is some practical
>>>joke, it is not funny. (I can't believe that a kernel programmer will not
>>>know why design is needed, where is its place in the production of a
>>>software, and how it should and how it should not be done.)
>>
>>So give us a design.  Make a concrete proposal.  Tell us what the
>>API's --- with C function prototypes --- should look like, and how we
>>should migrate what we have to your new beautiful nirvana.
> 
> 
> Aside from the beautiful nirvana irony, that is what I am trying not to
> do. For the following reason:
> 
> When you have to produce a large software, you first design it at a global
> level. Then you design the subsystems. After that, their subsystems. And
> so on, level after level. At last, you design the code itself. Only then
> you write the code actually.
> 
[snip]

As one of the people who has been told "show me the code" before, let me 
try to help you understand what the kernel developers are asking of you.

First of all, they are NOT asking you to do the bottom-up approach that 
you seem to think they're asking for.  They're not asking you to show 
them code which was not the result of careful design.  No.  Indeed, they 
all agree with you that careful planning is always a good idea, in fact 
critical.

Rather, what they are asking you to do is to create the complete 
top-down design _yourself_ and then show it to them.  If you do a 
complete design that is well-though-out and complete, then code (ie. 
function prototypes) will naturally and easily fall out from that. 
Present your design and the resultant code for evaluation.

Only then can kernel developers give you meaningful feedback.  You'll 
notice that the major arguments aren't about your design but rather 
about there being a lack of anything to critique.  If you want feedback, 
you must produce something which CAN be critiqued.

Follow the scientific method:
1) Construct a hypothesis (the document you have already written plus 
more detail).
2) Develop a means to test your hypothesis (write the code that your 
design implies).
3) Test your hypothesis (present your code and design for criticism).
4) If your hypothesis is proven wrong (someone has a valid criticism), 
adjust the hypothesis and then goto step (2).

Perhaps you have not done this because you feel that your "high level" 
design (which you have presented) is not complete.  The problem is that, 
based on what you have presented, no one can help you complete it. 
Therefore, the thing to do is to complete it yourself, right or wrong. 
Only when you have actually done something which is wrong can you 
actually go about doing things correctly.  Actually wrong is better than 
hypothetically correct.

Then, you may be thinking that this will result in more work, because 
you'll create a design and write come code just to find out that it 
needs to be rewritten.  But this would be poor reasoning.  It would be 
extremely unrealistic to think that you could create a design a priori 
that was good and correct, before you've ever done anything to test its 
implications.

Mostly likely, you would go through several iterations of your spec and 
the implied code before it's acceptable to anyone, regardless of how 
good it is to begin with.  Just think about how many iterations Con and 
Nick have gone through for their interativity schedulers; they've had 
countless good ideas, but only experimentation and user criticism could 
tell them what really worked and what didn't.  And these are just the 
schedulers -- you're talking about the architecture of the whole kernel!



  reply	other threads:[~2004-03-09 20:49 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-02-24 20:05 A Layered Kernel: Proposal Grigor Gatchev
2004-02-24 22:31 ` Rik van Riel
2004-02-25  9:08   ` Grigor Gatchev
2004-02-25 12:52     ` Rik van Riel
2004-02-25 13:23       ` Richard B. Johnson
2004-02-25 15:08         ` Grigor Gatchev
2004-02-25 15:42           ` Richard B. Johnson
2004-02-25 16:01             ` Nikita Danilov
2004-02-25 19:25               ` Christer Weinigel
2004-02-25 19:46                 ` Grigor Gatchev
2004-02-25 23:40                   ` Timothy Miller
2004-02-26  0:55                     ` Rik van Riel
2004-02-26 15:43                       ` Jesse Pollard
2004-02-26 17:12                         ` Rik van Riel
2004-02-27  9:45                           ` Grigor Gatchev
2004-02-26 11:03                     ` Grigor Gatchev
2004-02-26  5:59                   ` jw schultz
2004-02-29 12:32                   ` Christer Weinigel
2004-02-29 14:48                     ` Grigor Gatchev
2004-03-01  6:07                       ` Mike Fedyk
2004-03-06 18:51                     ` Grigor Gatchev
2004-03-08  3:11                       ` Mike Fedyk
2004-03-08 12:23                         ` Grigor Gatchev
2004-03-08 17:39                           ` Theodore Ts'o
2004-03-08 20:41                             ` viro
2004-03-09 19:12                             ` Grigor Gatchev
2004-03-09 21:03                               ` Timothy Miller [this message]
2004-03-09 23:24                               ` Mike Fedyk
2004-03-08 18:41                           ` Mike Fedyk
2004-03-08 21:33                           ` Paul Jackson
2004-02-25 14:44       ` Grigor Gatchev
2004-02-24 22:54 ` Mike Fedyk
2004-02-25 10:03   ` Grigor Gatchev
2004-02-25 19:58     ` Mike Fedyk
2004-02-25 21:59       ` Grigor Gatchev
2004-02-25 22:22         ` Mike Fedyk
2004-02-26 11:46           ` Grigor Gatchev
2004-02-26 12:17             ` Jens Axboe
2004-02-26 16:37               ` Grigor Gatchev
2004-02-26 18:12                 ` Christoph Hellwig
2004-02-26 19:23             ` Mike Fedyk
2004-02-27 11:18               ` Grigor Gatchev
2004-02-27 18:05                 ` Tim Hockin
2004-02-27 18:34                   ` Richard B. Johnson
2004-02-27 18:27                 ` Mike Fedyk
2004-02-28  0:26                 ` Rik van Riel
  -- strict thread matches above, loose matches on Subject: below --
2004-02-24 20:28 Carlos Silva

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=404E3118.8020608@techsource.com \
    --to=miller@techsource.com \
    --cc=christer@weinigel.se \
    --cc=grigor@serdica.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mfedyk@matchmail.com \
    --cc=tytso@mit.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox