Sorry, I've been a bit absent for a while but I feel I need to say a thing or two about UDI since I'm familiar with it.
@Brendan: Interesting note but the failing history of UDI isn't related to the piece of technology it represents IMHO.
Kevin said that UDI is far too complex to implement. But is it, just because its specification has 3 core volumes? I have played a little with UDI and even used the reference implementation to port the environment to my OS. Not only that, but with the headers they provide, I also wrote a few drivers that have been tested not only under my OS, but also Linux (yes, I'm aware the environment is not part of the git tree but it
was ported by STG. UDI environments can also be found for Mac OS, FreeBSD, Solaris, UnixWare and others).
Like Solar said, UDI is a framework. If you take a look at the specification, you will find a lot of macros, types, etc. that it defines. It's like saying "hey, I can't use C, did you see all the functions they provide in the standard library?". You can use the UDI framework or rewrite it just like you can use the standard library that comes with the compiler or write your own.
Why is UDI good? Compatibility is vital - I don't have time to write hundreds of drivers for every piece of hardware I want to support. Do you, Brendan? Ok, this doesn't make it
good, it just makes it useful. Now let's take a look at what makes it useful: it's synchronization model for MP scalability is worth mentioning. Benchmarks have shown increased performance over legacy drivers such as DDI drivers (and not just on MP systems). I've seen more than enough driver interface bottlenecks around to know when something like UDI hits the right spot. UDI drivers are also easy to develop since the design actually eliminates the risks for some common bugs (at least, partly) like deadlocks.
How many of you support the Multiboot specification? Do you think that is any good? On the other hand, UDI actually is if you take the time to have a close look. How many of you have even read the UDI specification?
If I sound a bit tough in the text above, I'm sorry. It's wasn't my intention at all.