On December 28th, 2005 - a day which will live in anonymity - OSNews published an editorial of mine urging hobby and research operating system developers to implement Project UDI, because otherwise we (the small/ non-mainstream/ hobby/research OS community) would always wind up stuck with mutually incompatible sets of drivers for doing the same exact things. I also proclaimed that I would implement UDI for my own operating system kernel. Bad decision.

Except that implementing Linux's driver API also requires that drivers code for a monolithic kernel. Oops, there go all those interesting microkernel projects where the drivers can't access symbols inside the kernel.

I don't see how this is relevent. The situation is identical on Syllable: a driver can not access symbols inside the kernel unless they are made available via. the kernel API (O.K, sure, the driver shares the same memory space as the kernel so you could hack your way around it, but that's irelivent to this discussion)

Linux's driver API also can't work on microkernels..

Agreed. Getting it to work would be possible but you'd have to make a lot of compromises. Although doesn't HURD try to offer some sort of Linux-like driver API?

I don't see how this is relevent. The situation is identical on Syllable: a driver can not access symbols inside the kernel unless they are made available via. the kernel API (O.K, sure, the driver shares the same memory space as the kernel so you could hack your way around it, but that's irelivent to this discussion)

Except that not all systems have the driver share memory spaces with the kernel. A good driver interface doesn't impose design decisions on operating system developers.

Although doesn't HURD try to offer some sort of Linux-like driver API?

At that point you might as well implement EDI, which will run fine on a microkernel with hacks and crocks to imitate drivers existing in the kernel's address space on a microkernel, where keeping drivers out of the kernel is a conscious goal.

Furthermore, I don't see exactly why Linux's driver API is all that great. Imitating it on systems which don't deliberately imitate Linux (as Syllable does) would have the same effect that porting C and Unix to every single hardware platform did: You wind up with too many mutually incompatible versions of the same thing, none of which were actually designed well for their task, all created in the name of portability.