Re: [patch 05/11] syslets: core code

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Thu, 15 Feb 2007, Evgeniy Polyakov wrote:
> 
> Userspace_API_is_the_ever_possible_last_thing_to_ever_think_about. Period
> . // <- wrapped one

No, I really think you're wrong.

In many ways, the interfaces and especially data structures are *more* 
important than the code.

The code we can fix. The interfaces, on the other hand, we'll have to live 
with forever.

So complex interfaces that expose lots of implementation detail are not a 
good thing, and it's _not_ the last thing you want to think about. Complex 
interfaces with a lot of semantic knowledge seriously limit how you can 
fix things up later.

In contrast, simple interfaces that have clear and unambiguous semantics 
and that can be explained at a conceptual level are things that you can 
often implement in many different ways. So the interface isn't the bottle 
neck: you may have to have a "backwards compatibility layer" for it 

> If system is designed that with API changes it breaks - that system sucks 
> wildly and should be thrown away. Syslets do not suffer from that.

The syslet code itself looks fine. It's the user-visible part I'm not 
convinced about.

I'm just saying: how would use use this for existing programs?

For something this machine-specific, you're not going to have any big 
project written around the "async atom" code. So realistically, the kinds 
of usage we'd see is likely some compile-time configuration option, where 
people replace some specific sequence of code with another one. THAT is 
what we should aim to make easy and flexible, I think. And that is where 
interfaces really are as important as code.

We know one interface: the current aio_read() one. Nobody really _likes_ 
it (even database people would apparently like to extend it), but it has 
the huge advantage of "being there", and having real programs that really 
care that use it today. 

Others? We don't know yet. And exposing complex interfaces that may not be 
the right ones is much *worse* than exposing simple interfaces (that 
_also_ may not be the right ones, of course - but simple and 
straightforward interfaces with obvious and not-very-complex semantics are 
a lot easier to write compatibility layers for if the internal code 
changes radically)

		Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux