Page 3 of 8

Re: Should I get on the UDI train?

Posted: Fri Jul 23, 2010 6:18 am
by Kevin
Owen wrote:UDI is as close to a one size fits all approach as possible. Seriously, have you read the specifications? Yes, they're long - but they're not all that complex. It
is really well designed. It scales. It was designed by people who had years of OS development experience, from companies which have used a variety of kernel designs.
I don't think I've read all of it, but I did read some of it a while ago. I also remember a simple example driver that had a functionality similar to Hello World (which is probably a good idea) and that completely overwhelmed me with magic (which is the bad news). Of course, if you put considerable time into it, it won't appear that magical any more, but it's not really intuitive.
There are some problems I see with the CDI specification:
Right, and (except for one item) I know these. They can and eventually will be solved though without the introduction of meta-meta programming. CDI is not set in stone, which I believe is a good thing. We're more than happy to incorporate suggested changes if they make sense.
Driver cannot provide multiple interfaces
This one I don't understand, honestly.
Incorporates portions of the C standard library - then expects them to be used in nonstandard ways (e.g. why does the FS driver contain a FILE*?!)
This FILE* in the CDI header is a plain bug, of course. It belongs in something like a struct cdi_fs_osdep as it's only what tyndur uses to implement this.
Synchronous model (or at least seemingly so). This is a big issue when you have a single-threaded interface model (UDI also has a single threaded model - but is asynchronous, and allows dividing a driver into units)
We haven't really decided yet if we're going for a threaded or a model with callbacks. One of them must be introduced at some point, though.

Re: Should I get on the UDI train?

Posted: Fri Jul 23, 2010 6:28 am
by Owen
XanClic wrote:
Owen wrote:Lots of it only written in german
True, but as far as I can see, the Pedigree people can use it anyway (besides this is not a “technical” problem).
Owen wrote:No concurrency within a driver possible
True. The CDI library of the OS has to make sure that there's only one instance of the driver running (afaik). Well, I could say that this makes driver development somewhat easier. :D
UDI has this requirement of "regions" - but drivers can contain multiple regions. You can conceptually think of a "region" as a process - the OS decides whether each region is run in a thread, a new process, one in kernel and one in userspace, or however it wants to divide things
XanClic wrote:
Owen wrote:Driver cannot provide multiple interfaces
What do you mean with “interface”? If you mean the CDI driver structure, this shouldn't be a problem by design. One driver could register itself both as a network and as a storage driver. I don't know if all CDI implementations would handle that correctly, but the CDI design doesn't forbid that (afaik).
Now you end up with the possibility of multiple threads of execution ;)
XanClic wrote:
Owen wrote:ncorporates portions of the C standard library - then expects them to be used in nonstandard ways (e.g. why does the FS driver contain a FILE*?!)
That's not a bug, it's a feature. :wink:
Why should you define special functions if the stdclib has them already, like e.g. malloc or printf? Thus we made the decision that parts of the that library are free for use to drivers, though it's yet to be standardized, which functions are allowed. As for me, using a FILE pointer is not a thing I'd do, too.
Much of the stdlib is defined with a synchronous API (more on that later!). UDI is very asynchronous.
XanClic wrote:
Owen wrote:Synchronous model (or at least seemingly so). This is a big issue when you have a single-threaded interface model (UDI also has a single threaded model - but is asynchronous, and allows dividing a driver into units)
I'd discuss that if I understood… Well, a point for CDI, I'm not too stupid to understand it. :oops:
In UDI, whenever you invoke something, you provide a control block, and UDI goes off and sends a message to whoever you invoked. Some time later, they send you a message back, and provide that control block (from which you can regain your state). This is a very powerful concurrency model - it is very much like message passing, and that supercomputer clusters are programmed using message passing should tell you something about how well it scales ;)
Owen wrote:No defined interface for drivers to call other drivers. This one is incredibly useful and important.
We're already discussing that one (because it is a requirement for a future audio layer and might be for CDI.usb).[/quote]

Re: Should I get on the UDI train?

Posted: Fri Jul 23, 2010 6:45 am
by Owen
Kevin wrote:
Owen wrote:UDI is as close to a one size fits all approach as possible. Seriously, have you read the specifications? Yes, they're long - but they're not all that complex. It
is really well designed. It scales. It was designed by people who had years of OS development experience, from companies which have used a variety of kernel designs.
I don't think I've read all of it, but I did read some of it a while ago. I also remember a simple example driver that had a functionality similar to Hello World (which is probably a good idea) and that completely overwhelmed me with magic (which is the bad news). Of course, if you put considerable time into it, it won't appear that magical any more, but it's not really intuitive.
There are some problems I see with the CDI specification:
Right, and (except for one item) I know these. They can and eventually will be solved though without the introduction of meta-meta programming. CDI is not set in stone, which I believe is a good thing. We're more than happy to incorporate suggested changes if they make sense.
Driver cannot provide multiple interfaces
This one I don't understand, honestly.
Some devices expose multiple subcomponents. For example, a graphics driver will probably expose:
  • A 2D graphics/framebuffer interface
  • A hardware acceleration interface (i.e. an OpenGL/GLES/VG backend)
  • Temperature sensors
  • Potentially an I²C bus or two for the Display Data Channel
Under CDI, how do you do this?
Incorporates portions of the C standard library - then expects them to be used in nonstandard ways (e.g. why does the FS driver contain a FILE*?!)
This FILE* in the CDI header is a plain bug, of course. It belongs in something like a struct cdi_fs_osdep as it's only what tyndur uses to implement this.
Synchronous model (or at least seemingly so). This is a big issue when you have a single-threaded interface model (UDI also has a single threaded model - but is asynchronous, and allows dividing a driver into units)
We haven't really decided yet if we're going for a threaded or a model with callbacks. One of them must be introduced at some point, though.
You'll get better performance with callbacks, and, well, now you're heading into territory where CDI morphs into a UDI clone...

Re: Should I get on the UDI train?

Posted: Fri Jul 23, 2010 6:58 am
by XanClic
Owen wrote:
XanClic wrote:
Owen wrote:Driver cannot provide multiple interfaces
What do you mean with “interface”? If you mean the CDI driver structure, this shouldn't be a problem by design. One driver could register itself both as a network and as a storage driver. I don't know if all CDI implementations would handle that correctly, but the CDI design doesn't forbid that (afaik).
Now you end up with the possibility of multiple threads of execution ;)
Well, if the driver registers itself as multiple drivers, it must expect that the different functions (sending a network packet and reading a sector (e.g.), in that case) may be called at the same time.
Owen wrote:Much of the stdlib is defined with a synchronous API (more on that later!). UDI is very asynchronous.
And CDI isn't UDI. :wink:
Apart from that, I don't know how you want to allocate memory if not synchronously. Other calls to the stdclib should be used very rarely, printf might be very popular, too, but it's used only for displaying error messages (it should be, at least) and in that case, performance is not essential, I think.

Re: Should I get on the UDI train?

Posted: Fri Jul 23, 2010 7:13 am
by Kevin
Owen wrote:Some devices expose multiple subcomponents. For example, a graphics driver will probably expose:
  • A 2D graphics/framebuffer interface
  • A hardware acceleration interface (i.e. an OpenGL/GLES/VG backend)
  • Temperature sensors
  • Potentially an I²C bus or two for the Display Data Channel
Under CDI, how do you do this?
I suppose we're far from implementing such devices, so it's only theory, but I would expose this as four devices, each of a different class. So while it might one driver binary, technically I would have four drivers. Of course they are drivers for the same physical card, so I would either take one of the devices or add a new one to take the PCI device (or whatever it is) and let it provide the other devices to the system as if they were on a bus provided by graphics card.
You'll get better performance with callbacks, and, well, now you're heading into territory where CDI morphs into a UDI clone...
Callbacks definitely don't make CDI a UDI clone. I mean, it would still stay easy to understand. ;)

Threads require careful locking which can be difficult, whereas callbacks can lead to code that is hard to understand if you produce a state machine with more than maybe three states. Especially for filesystem drivers this might become very hard. This is why I'm not sure yet which poison we're going to pick.

Re: Should I get on the UDI train?

Posted: Fri Jul 23, 2010 7:25 am
by Owen
Kevin wrote:
Owen wrote:Some devices expose multiple subcomponents. For example, a graphics driver will probably expose:
  • A 2D graphics/framebuffer interface
  • A hardware acceleration interface (i.e. an OpenGL/GLES/VG backend)
  • Temperature sensors
  • Potentially an I²C bus or two for the Display Data Channel
Under CDI, how do you do this?
I suppose we're far from implementing such devices, so it's only theory, but I would expose this as four devices, each of a different class. So while it might one driver binary, technically I would have four drivers. Of course they are drivers for the same physical card, so I would either take one of the devices or add a new one to take the PCI device (or whatever it is) and let it provide the other devices to the system as if they were on a bus provided by graphics card.
You'll get better performance with callbacks, and, well, now you're heading into territory where CDI morphs into a UDI clone...
Callbacks definitely don't make CDI a UDI clone. I mean, it would still stay easy to understand. ;)

Threads require careful locking which can be difficult, whereas callbacks can lead to code that is hard to understand if you produce a state machine with more than maybe three states. Especially for filesystem drivers this might become very hard. This is why I'm not sure yet which poison we're going to pick.
Ease of understanding is simply a matter of writing better documentation - after all, the documentation we have got is a specification.

To my eyes, there is no need for CDI - and you can't really say you can design a "better UDI" until you've read it in its entirety either!

Re: Should I get on the UDI train?

Posted: Fri Jul 23, 2010 8:01 am
by Kevin
Owen wrote:Ease of understanding is simply a matter of writing better documentation - after all, the documentation we have got is a specification.
I beg to disagree. The threaded and the callback model are fundamentally different and therefore understanding code that uses the one involves fundamentally different difficulties than understanding code using the other one. Thinking about concurrency is generally hard. The threaded model leads to something that looks closer to the synchronous case because things stay sequential. Both models are capable of causing headaches, though. ;)
To my eyes, there is no need for CDI - and you can't really say you can design a "better UDI" until you've read it in its entirety either!
I never said I'd design a "better UDI". UDI does have its strengths, but I don't feel they are important enough to me (or many other hobby OSes) to sacrifice simplicity for them. CDI and UDI are both driver interfaces, but with different goals in mind. UDI is the "perfect" one that noone implements because maybe it's too perfect; and CDI is the "works for me" one that clearly can be improved, but that is already used by hobby OSes to share drivers. I care for the latter, so if you want so, to my eyes, there is no need for UDI.

Re: Should I get on the UDI train?

Posted: Fri Jul 23, 2010 8:10 am
by Owen
Solar wrote:Infrastructure set up at http://udi.rootdirectory.de.

I know both the domain name and the SVN repository URL ( https://srv7.svn-repos.de/dev34/udi/) are not "sexy", but they're set up and for free. We can move to a "better" domain name once we have anything to show for it. Until then, I'd suggest we focus on content.

If you want an account for the site and the repo, drop me a PM.

As for mailing lists, why not just use those of Project UDI? Or are they defunct? http://udi.certek.com/f-reflector.html
Great :). I notice that we can't register - is that just because you haven't enabled that Trac feature yet? :)

As for mailing lists - the thing that worries me is that the archives don't work. Even if the mailing lists themselves work, I consider archives essential.

If people want it, I can host the lists at http://lists.e43.eu/ for now though.

Re: Should I get on the UDI train?

Posted: Fri Jul 23, 2010 8:56 am
by Solar
That'd be great, since my experience with hosting mailing lists is nil.

For now I'd like to keep the registration process manual. Some of my Tracs have been spammed heavily before, and I haven't yet found out how to make Trac a) require my moderation before registering a user, and b) generate a SVN user alongside the Trac one.

So drop me a mail or a PN stating name, username, and mail address, and I'll sign you on.

Re: Should I get on the UDI train?

Posted: Fri Jul 23, 2010 10:21 am
by Love4Boobies
Hi.

I've only just noticed this post. Yes, I am the user Solar was trying to protect. The reason for which there was no activity is quite simple: I took the time to discuss matters with the old UDI folks and we decided that we'd try to turn Project UDI into a non-profit organization. Unfortunately, that's not really easy considering the fact that we lack sponsorization - I don't know much about all this, Kurt probably knows more. Aside from that, there are very important metalanguages missing (for file systems, graphics, audio, etc.) which I consider more important than continuing work on the reference implementation or writing NIC drivers. (Important enough to put that work on hold, not to drop it. A central repository for drivers is also critical.)

My proposal was to create UDI 2.0 (the major version number needs to be incremented in order to indicate incompatibility with the old version, as required by the UDI spec) which would also provide binary compatibility via bytecoded drivers. Although it would make UDI a bit more complicated people should think of this in a similar was as they do about ACPICA: there's a reference implementation that everyone ports. Nobody needs to implement an UDI environment from scratch because it's a complicated task. If you look at the driver packaging section in the specification, it mentions that a driver ABI can define generic drivers and optimized drivers for specific CPU models; the environment would pick the right one (generic if the optimized one is missing). This is quite complicated for many CPU architectures, x86(-64) in particular since there are just so many CPU models. Although a flag-based approach would work (say, each driver would have flags to indicate whether it uses SSE, MMX, 3DNow!, etc.) then we'd be missing out on micro-optimizations (e.g., an 80386 has a prefetch queue while a Core i7 does not, LEA and shifts are good for most CPUs but not for P4's, etc.) and I don't even want to start on CPU bugs (even if this issue is considerably less common, someone would need to check plenty of erratas, better do it just once in the reference implementation). UDI 2.0 would eliminate the need for ABI specifications. An additional advantage to USB 2.0 is that if we use a safe bytecode we could very well safely use UDI drivers on MMU-less architectures and even link use them in kernel space on microkernels (it's for the OS implementer to decide whether he trusts the AOT compiler or not).

I also feel that I need to appologise to Combuster as I have not committed code to his repository in some time now, leaving him with an unfinished UDI environment. However, uni is now over, I have quit my job in order to have more time for myself during the summer and I will find more time for these matters.

Here's a list on things that people should look into:
  • Reviewing the OpenUSBDI specification. This specification was initially written for UDI 1.0 (which cannot be fully implemented, btw) and as Robert Lipe from SCO has reported, there are a few simple glitches to be fixed. However, someone familiar with USB 3.0 and wireless USB would also need to look into this.
  • File System Metalanguage - probably the single most important protocol that's missing. We should also consider a mass storage metalanguage (or perhaps more appropriately called a logical volume metalanguage) unless we decide that FS drivers should talk directly to the SCSI metalanguage.
  • Audio Metalanguage.
  • Network Protocol Metalanguage
  • InfiniBand Transport Metalanguage
  • Serial/Parallel Communications Metalanguage
  • Multimedia Codec Metalanguage (?) (I can already hear many of you shout - it's just something that I personally would consider appropriate and am thus proposing)

Re: Should I get on the UDI train?

Posted: Fri Jul 23, 2010 10:39 am
by gravaera
Hi:

I've been seeing this thing about bytecoded drivers popping up repeatedly, and this "UDI 2.0", and I'm beginning to think it's probably gaining ground, so before it gets any further, I'd like to clearly state that I do not support it. Not only that, but that I believe the current spec is perfectly fine as it is. Also, if anyone wants a bytecoded driver framework, I think they should create their own driver interface, name it something different from UDI, and do their own work separately.

The original theme of UDI has nothing to do with bytecode and all the complexity and overhead of all that mess. It's meant to be a simple thing. Either use a binary wholesale, or do a quick compile, and move on.

Re: Should I get on the UDI train?

Posted: Fri Jul 23, 2010 10:53 am
by Love4Boobies
gravaera wrote:I've been seeing this thing about bytecoded drivers popping up repeatedly, and this "UDI 2.0", and I'm beginning to think it's probably gaining ground, so before it gets any further, I'd like to clearly state that I do not support it. Not only that, but that I believe the current spec is perfectly fine as it is. Also, if anyone wants a bytecoded driver framework, I think they should create their own driver interface, name it something different from UDI, and do their own work separately.
The original UDI specification contains the problem I've described above. Drivers will not be able to take advantage of certain instruction sets. You do want graphics drivers to take advantage of multimedia instructions such as SSE, right? Kurt, the guy who used to be chairman of the project seems to agree with me on this.
The original theme of UDI has nothing to do with bytecode and all the complexity and overhead of all that mess. It's meant to be a simple thing. Either use a binary wholesale, or do a quick compile, and move on.
The complexity of ACPI makes people want to use ACPICA. The complexity of UDI should make people want to use Project UDI. That aside, there should be no overhead involved. udisetup, the driver installation utility (defined in the spec) would be redefined as also being an AOT compiler so the drivers would end up being installed as native CPU code.

Re: Should I get on the UDI train?

Posted: Fri Jul 23, 2010 11:22 am
by Owen
Solar wrote:That'd be great, since my experience with hosting mailing lists is nil.

For now I'd like to keep the registration process manual. Some of my Tracs have been spammed heavily before, and I haven't yet found out how to make Trac a) require my moderation before registering a user, and b) generate a SVN user alongside the Trac one.

So drop me a mail or a PN stating name, username, and mail address, and I'll sign you on.
OK, done: udi at lists.e43.eu is active. I'm waiting for those registrations ;)

Now, as for bytecoded drivers: I see it as useful, but I also see it as harmful. Let me elaborate: Adding them allows for easier portability and potentially better optimization, but also introduces complexity. It is not something that is urgent - we have a perfectly workable specification now. It is more valuable for us to define metalanguages.

I think we should class any bytecode language as we do any non-C language: As a supplemental language. It should compile down to the same format as a normal UDI binary would do. The same goes for other languages, by the way: I believe Combuster, for example, has written a few UDI drivers in FreeBASIC. Then, any build infrastructure becomes optional (but advisable), and at the very least you can get around the issue by also shipping generic binaries.

We should instead define an "interface definition language" in which metalanguages can be written, so that we can easily generate headers (or equivalents) for various systems programming languages.

However: First priority should be defining interfaces to various device and bus types. To the list Gravaera suggested, I would add I²C/SMBus/PMBus and SPI. I would perhaps also add a standard interface for general purpose IO pins - this is particularly useful in embedded devices. Finally, we should probably define a way for a driver to directly expose some method of communication ("character device" style?) to userspace, for specialized devices (e.g. chip programmers) which really don't need a common interface (they're special anyway).

As for the audio/video device classes and decode acceleration: My suggestion is that we should engineer our drivers to support the relavent Khronos APIs. That is,
  • Accelerated graphics: OpenGL, OpenGL ES 1/2, OpenVG
  • Audio: OpenSL ES, OpenMAX
  • Video decode: OpenMAX
We should perhaps also consider how to back a windowing system onto our framebuffer interface (i.e. how much intelligence needs to be in the driver to use it efficiently) and to support compositing. Should we look into OpenWF there? It should certainly give us some guidance (X11 Composite might as well)

Re: Should I get on the UDI train?

Posted: Fri Jul 23, 2010 12:11 pm
by Love4Boobies
Owen wrote:Now, as for bytecoded drivers: I see it as useful, but I also see it as harmful. Let me elaborate: Adding them allows for easier portability and potentially better optimization, but also introduces complexity. It is not something that is urgent - we have a perfectly workable specification now. It is more valuable for us to define metalanguages.
There are a couple of problems with not doing things in the right order... First, we are facing the generic problem now, it was a lot less obvious in the past (since CPU models were basically supersets of their predecessors), which is why a non-optimal solution was adopted. Secondly, if people start writing UDI 1.01 drivers it will be that much harder for everyone to switch to UDI 2.0 in the future because people will complain about the existing drivers. It's also good publicity (while the technical reasons are more important to me and shameless plug, we do need it :)).
I think we should class any bytecode language as we do any non-C language: As a supplemental language. It should compile down to the same format as a normal UDI binary would do. The same goes for other languages, by the way: I believe Combuster, for example, has written a few UDI drivers in FreeBASIC. Then, any build infrastructure becomes optional (but advisable), and at the very least you can get around the issue by also shipping generic binaries.
If we do use a bytecode there are a few other changes (simplifications) that need to be made to the specification because the bytecode provides some inherent portability.
However: First priority should be defining interfaces to various device and bus types. To the list Gravaera suggested, I would add I²C/SMBus/PMBus and SPI.
This is easily extensible through metalanguages and bus bindings.
I would perhaps also add a standard interface for general purpose IO pins - this is particularly useful in embedded devices.
I don't think I understand. Could you elaborate?
Finally, we should probably define a way for a driver to directly expose some method of communication ("character device" style?) to userspace, for specialized devices (e.g. chip programmers) which really don't need a common interface (they're special anyway).
If I understand correctly what you mean, this is already possible altough the term userspace should not be used together with UDI.

Re: Should I get on the UDI train?

Posted: Fri Jul 23, 2010 12:33 pm
by gravaera
Love4Boobies wrote:Hi.

My proposal was to ... provide binary compatibility via bytecoded drivers. Although it would make UDI a bit more complicated people should think of this in a similar was as they do about ACPICA: there's a reference implementation that everyone ports.
The difference between ACPICA and UDI is that ACPICA is meant to be provided on many different platforms and many different CPUs with the very same code. That is a bytecoded language. The ACPICA is not abstracted. That is, it does not call on an operating system which has already abstracted everything for it. It is essentially in itself highly machine dependent.

UDI has a set of OS services it can call on, all of which return the same formatted information. This means that there is no need to bytecode since any platform on which a UDI driver is run will emulate the same behaviour with respect to outputs from service calls. Therefore drivers can be compiled to run natively and expect a certain minimum amount of standard behaviour. This is the whole purpose of the UDI environment which shields the driver from the embedding platform. The environment abstracts all of that form the driver so it can focus on its device.

Therefore, the environment and the UDI source compatibility together provide *more than enough* independence for anyone who needs it, and with a simple re-compile, you can have a driver for your platform, assuming the device will work with the driver.

That's another reason why going so far is almost nonsensical: Devices themselves, unless implemented on a bus which is sufficiently abstracted (such as PCI), are generally tied to a particular chipset. And many chipsets may have the same device tied to different MMIO ranges, without a self enumerating bus to provide the MMIO range for the driver. This means that you will have to have different drivers for each chipset, even for the same device, or #ifdefs for each chipset the device is known to be one, anyway. There are too many cases like this for a bytecoded language to be in any way necessary. In fact, given that this is the common case on most platforms (custom, embedded, etc), the practicality of trying make drivers that abstracted is reduced to almost 0.

Remember, we're not talking about software. This is about drivers. These, no matter how hard you try, will never be fully portable for all time since there are different companies and vendors with different budgets, and different levels of skill diversity in their workers (and thus different levels of compliance and ability even with the implementation of a self-enumerating bus).
Nobody needs to implement an UDI environment from scratch because it's a complicated task. If you look at the driver packaging section in the specification, it mentions that a driver ABI can define generic drivers and optimized drivers for specific CPU models; the environment would pick the right one (generic if the optimized one is missing). This is quite complicated for many CPU architectures, x86(-64) in particular since there are just so many CPU models. Although a flag-based approach would work (say, each driver would have flags to indicate whether it uses SSE, MMX, 3DNow!, etc.) then we'd be missing out on micro-optimizations (e.g., an 80386 has a prefetch queue while a Core i7 does not, LEA and shifts are good for most CPUs but not for P4's, etc.) and I don't even want to start on CPU bugs (even if this issue is considerably less common, someone would need to check plenty of erratas, better do it just once in the reference implementation). UDI 2.0 would eliminate the need for ABI specifications. An additional advantage to USB 2.0 is that if we use a safe bytecode we could very well safely use UDI drivers on MMU-less architectures and even link use them in kernel space on microkernels (it's for the OS implementer to decide whether he trusts the AOT compiler or not).
To be perfectly honest, I didn't understand a lot of what you said there, since you seem to be trying to make this too platform specific, i.e.: much ado about nothing. Things like taking advantage of SSE, 3dNow, etc, are really supposed to be up to the embedding OS. All you need is a platform features enumeration API and that that's it. IIRC, the UDI 1.1 even mentions that it does not allow floating point operations.

One thing to note is: Even if you use a bytecoded language to distribute the drivers, and then compile them down to native instructions, you will end up having to ask the embedding OS whether or not advanced FPU instruction sets are available before executing code with SSE, etc. Also, even if you run the bytecode as JIT or whatever, you'll STILL have to ask the embedding OS, and in the end, you now have a huge JIT compiler in the environment just to end up having to do the same thing as native, compiled drivers.

Since I can't quite discern what the logic behind the other arguments is, I'll have to dismiss them as nitpicking, and straw clutching. I apologise for the strong terms used.

---

In short, UDI does NOT need a bytecoded distribution form. And also, I am strongly of the opinion that UDI MUST remain in compiled-language source form. I believe that we ALL know that were it not for the open-source, open-standards movement, this community would not exist. Had it not been for those fighting to make sure that things like specifications, etc are released, we would have NO information. Therefore, allowing that much abstraction and making room for pure binary distribution without a need for source distribution for unknown platforms is going to undermine the open-source side of UDI, however small it is.

Without specifications and source, we end up at the mercy of crappy code written by outsourced workers, and crappy buggy code from vendors with no hope of re-compiling and uploading patches to the central repo. There are those who do not see this as a big deal: "Ask the vendors to fix the bugs". Think a bit more, and realize why letting vendors get away with pure binary drivers and nothing more is a bad thing. Think about how hard it would be to have your little crummy "Hello world", even if you do not have some advanced kernel at the moment.

And those who say something like: "What are you talking about? It won't be that bad.". Yes, it will. Have you seen what kinds of CRAP companies like HP produce? A driver for a printer. A printer. And it runs about at least 5 different processes while idle, plus N different processes while operational. No. I will not support anything which will make that kind of mess easier to produce in UDI.

I do not support bytecoded drivers, and again, I assert that if someone wants to move the spec in such a radical direction, they should just go and make their own interface altogether. I support UDI because it clearly provides all needed functionality in it current state, and allows for extensions. That is all that is necessary.

EDIT:
Instead of making another post, I'll say it here: Since there is no need for a bytecoded language, there is by extension, no need for "UDI 2.0". UDI 1.1 in its current state is sufficient. What is needed right now are more metalanguage specifications. Not another version of the core spec. The core spec is more than sane. Anyone who reads it can tell that. The main change proposed between UDI 1.1 and 2.0 is the bytecode idea. This change is no longer on the table, and if something like it comes up, as far as I'm concerned, it is going to be some other unrelated driver interface.

--Thanks
gravaera