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!
next prev parent 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