All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Fedyk <mfedyk@matchmail.com>
To: Grigor Gatchev <grigor@serdica.org>
Cc: Christer Weinigel <christer@weinigel.se>, linux-kernel@vger.kernel.org
Subject: Re: A Layered Kernel: Proposal
Date: Mon, 08 Mar 2004 10:41:16 -0800	[thread overview]
Message-ID: <404CBE4C.2040502@matchmail.com> (raw)
In-Reply-To: <Pine.LNX.4.44.0403081311020.21912-100000@lugburz.zadnik.org>

Hi Grigor.

Theodore Ts'o pretty much summed it up, but let me add a couple things...

Grigor Gatchev wrote:
> 
> On Sun, 7 Mar 2004, Mike Fedyk wrote:
> 
> 
>>Grigor Gatchev wrote:
>>
>>>Here it is. Get your axe ready! :-)
>>>
>>>---
>>>
>>>Driver Model Types: A Short Description.
>>>
>>>(Note:  This is NOT a complete description of a layer,
>>>according to the kernel layered model I dared to offer.  It
>>>concerns only the hardware drivers in a kernel.)
>>>
>>
>>Looks like you're going to need to get a little deeper to keep it from
>>being OT on this list.
>>
>>What is the driver designs of say, solaris, OS/2, Win32 (NT & 9x trees)
>>and how are they good and how are they bad?
>>
>>What specific (think API changes, nothing generalized here *at all*)
>>changes could benefit linux, and why and how?  Nobody will listen to
>>hand waving, so you need a tight case for each change.
>>
>>HTH,
>>
>>Mike
> 
> 
> Dear Mike,
> 
> An year ago, I was teaching a course on UNIX security. After the
> first hour, a student - military man with experience of commanding PC-DOS
> users - interrupted me: "What is all that mumbo-jumbo about? Users,
> groups, permissions - all this is empty words, noise! Don't you at least
> classify your terminal, and issue orders on who uses it? Man, either talk
> some real stuff, or I am not wasting anymore my time on you!"
> 
> Of course, I was happy to let him "stop wasting his time on me".
> 

Yes, I can understand.  Dealing with users as a sysadmin isn't much 
different.

> Reading some of the posts here, I get this deja vu. I know the driver
> designs of some OS, and don't know others. I may waste a month or two of
> work, and post a huge description of all big OS driver models that I
> know, or waste an year of work, and give you a description of all big OS
> driver models. Will this give you anything more than what was already
> posted? Wouldn't you read my hundreds of pages, then try to summarise all,
> and eventually come to the same?

The descriptions were for my benefit, as whenever you were asked for 
specific, you were a little more specific in *design* terms, not code terms.

> Or you will try to pick this from one model, that from another, and end up
> assembling a creature with eagle wings, dinosaur teeth, anthelope legs and
> shark fins, and wondering why it can neither fly nor run nor swim really
> well, why it has bad performance? This can't be, I must have misunderstood
> you.
> 
> 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.)
> 

No.  The designs you are talking about are *far* too generalized. 
Meaning, every proposal on this list that gets anywhere is for code 
modifications.  You need to have your *design* proposal in *code* speak. 
  Anything else will just be called hand waving.

> OK. Let's try explain it once more:
> 
> While coding, think coding. While designing, think designing. Design comes
> before coding; otherwise you design while coding, and produce a mess.
> Enough of such an experience, and you start believing that design without
> coding is empty words, noise. Hand waving.
> 
> What I gave is more than enough to start designing a good driver model.
> After the design is OKed, details of implementation, eg. API changes, may
> be developed. Developing them now, however, is the wrong time, for the
> reasons explained just above. Let's not put the cart ahead of the horse.
> 

I'm not a kernel programmer.

> Or I am wrong?

Maybe.  If you can have you design describe the current linux model as 
"in order to write to this SCSI disk I need to call foo(),..." and 
describe your new change as "if foo() called bar() I could do...".

Basically, you need to describe everything in programming terms.  A 
great example is the BIO design document from Jens Axboe.  That's an 
example of a design before code project (but I only happened to hear 
about it when 2.5.1 came out, and the code was ready to be merged...) .

Mike

  parent reply	other threads:[~2004-03-08 18:41 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
2004-03-09 23:24                               ` Mike Fedyk
2004-03-08 18:41                           ` Mike Fedyk [this message]
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=404CBE4C.2040502@matchmail.com \
    --to=mfedyk@matchmail.com \
    --cc=christer@weinigel.se \
    --cc=grigor@serdica.org \
    --cc=linux-kernel@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.