I thought the problem was that in order to build a driver, you have to use the C headers to get the data structures and other API code, so all binary drivers are technically licenced with the GPL and should be open sourced.
This may or may not be true. As a data point, I believe that in the BSD/Unix copyright case it was held that the Unix headers that were functionally duplicated in BSD weren't subject to copyright because they were purely functional rather than creative. This is a pretty similar situation, so copyright probably doesn't apply here either (at least in the US).
But, the technique that is usually used to avoid this issue is bulletproof: you create a binary driver that uses an interface that you've designed yourself (or uses some non-GPL standard, e.g. you could use the interface used by Windows drivers -- this has been implemented by the 'ndiswrapper' project, for example). You then create a GPL stub that simply interfaces between the two. There is absolutely no potential legal issue here.
Not all of these copyright holders accept binary kernel modules, and thus they should be considered illegal to distribute with the kernel.
Not at all, no. The GPL contains a clause that states that "mere aggregation on a storage medium" does not require code to be licensed under its terms. Distributing a binary module that isn't a kernel derivative along with the kernel *is* "mere aggregation".
I imagine you don't gain much performance-wise if you're doing that, and you probably lose stability-wise.
True, but the purpose wasn't really to gain performance but to add support for hardware for which no virtualized version exists. So the gain is a new feature.
This is more CSS's fault than Firefox's; they picked a very bad model for laying out vertical columns.
CSS doesn't have a model for laying out vertical columns. Anyone implementing a multi-column layout in CSS is using the system for a purpose other than what it was designed for.
I believe there is column support in CSS3, but I don't think anything supports it yet (?)
One of the great strengths of OSS compared to proprietary software is the ability to make use of older hardware. Not so with this new release of Firefox.
Not so *any* release of Firefox, IMO. I've run Firefox 1.0 and 1.5 on a machine with 96MB of RAM, and wouldn't recommend the experience to anyone. Said machine is more than capable of running XP though (as long as you tweak the running services) so OS support is less of a barrier to using old hardware than resource usage.
Glad to hear that the rendering will now get some hardware accerlation. Does anyone know how faster this will be? Will it lead to smoother scrolling as on my Linux machine 'smooth scrolling' is very jerky - especially so with flash adverts.
Well, on my machine (with a rather old ATI board), Cairo rendering seems to be slower than using traditional rendering techniques.
Let me let you in on a little secret. The people that work on stuff like this have no interest in running Windows in order for 3D to work. In fact, they probably aren't gamers either.
I'll let you into a secret -- neither am I. I'm simply concerned that virtualisation be able to run Vista effectively, for which 3D accel will be necessary.
DMA + lack of IOMMU = full access to system memory
The CPU's MMU isn't enough.
True, but you can intercept requests to set up a DMA and change the addresses used at a software level. An IOMMU is substantially better, because it will work even if you have no idea how the hardware protocol works (e.g. it uses an encrypted data stream to transfer commands). But in most cases, you can simply bus snoop an in-operation device to find addresses and reverse engineer enough information to find out what's going on. Yes, it's hard. But it can be done.
My DVD player remote has 83 buttons. I use about 10 of them.
Yes, but if it only had 10 buttons, when you wanted to use a feature you've never used before you'd have to get the manual out to figure out how to do it. The point of all those extra buttons is to allow you to discover the interface without spending ages doing it. You can look at your remote control, see it has a button labelled "A->B" and think "ah, it has a section repeat function... let's trying pressing it a couple of times... yes, it repeats the section between when I pressed it the first and second time". If it didn't have a separate button, but required you to pause playback, bring up a menu and select the option, you'd probably never even realise it could do it.
If simplicity is out, why is the iPod doing so well?
Because it's a fashion accessory.
Why do you think that, in the age of a camera-mp3-omg-do-fucking-everything mobile phones, Motorola is developing a bare-bones cell phone?
Because there's always a market for any different approach. Because a bare-bones phone has a battery lifespan that's twice as long as a fully-featured one, and for some people a long battery lifetime is the killer feature of a phone.
Can you honestly say that the ipod isn't simpler from a users perspective than most other mp3 players?
Yes. When I want to put tracks onto my MP3 player, I plug it into my computer, and drag the MP3 files I want to use onto its symbol in the "My Computer" window. To do the same with an iPod, I need to start a special application to manage it.
His point is not that the search engine part of google is hard to use. He admits that is very nice and clean and easy to use. His real point is this:that's because you can only do one thing from their home page: search.
My condensed version of that essay: "Simplicity" (meaning lack of features, or having hidden the features) and "Ease of Use" are not to be confused.
And it is a good point. Here's another example, perhaps a better one. Some media players (not talking about software, but standalone hardware boxes, like CD players, DVD players, etc.) take an approach to minimising the number of buttons that goes like this: make different buttons do different things at different times. E.g. "We don't need track skip & cue/review buttons: make it do cue/review if the playback is paused and skip if it isn't." Well, this actually makes the user interface harder to use. Yes, it gives more apparent simplicity at first glance, but to anyone who's spent more than five seconds with the interface, it's harder to use. Either they'll try to do a track skip while they're on pause and not be able to figure out why it isn't working, or won't realise that there is a cue/review function. Buttons that do multiple things are confusing. Give me one button per task, and I'm much happier.
Example two: There was a trend in web browser design a while back that put the stop & reload buttons in the same place. You can't be in a state where you can do either of them, so why not combine them? Well, err... because the page might finish loading in the instant that you decide to click the stop button...? Fortunately the UI designers seem to have realised how stupid that one was.
I don't think you can give a virtualised OS "direct hardware access". How on earth would the host OS cope if it had to deal with an unknown hardware state whenever you switched back to the host?
If you have a driver for the device, just tell the driver to perform a device reset. Should work for most devices.
If you don't have a driver, why do you care?
Theres also the fact that in order to get "direct hardware access" you need to run in ring 0, which means you have absolutely no protection from the guest pissing over everything.
Not true. Hardware access is performed through I/O instructions (for which access can be granted to processes in any ring), via memory mapped blocks (which can be granted to any process via MMU manipulation), and via IRQs (which are trivially easy to deflect into a VM).
Surely to get 100% native performance you'd have to be able to restrict what the guest does in ring 0 and trust it completely?
Who's talking about 100% native performance? I'd be happy with 80%, and I'm sure that's achievable. You *can* give access to the real hardware to an OS that's running in a VM; Xen's exokernel design proved this (Xen runs as the host OS, but uses one of its guest OSs to provide hardware access for the other guests, so that it doesn't have to have to have drivers for everything itself).
Besides, restricting what ring 0 code is able to do is what the new instruction set (that this project depends upon) is designed to do.
If the JVM could get access to the hardware's dirty page bit that says if a page has been modified since last checked then the JVM could do direct reference assignment and then when garbage collecting only search the modified pages for references into the 'scratch' area. I expect this would be many times faster than the pointer write barrier used now.
I don't know how Sun's GC works, but I've worked on implementations using Boehm's collector, which is able to access the dirty bits on some OSs (e.g. under Windows using the GetWriteWatch API -- I believe the Linux version also uses dirty bits).
The corporate market (particularly servers) is far larger and far more important for them - so don't expect video drivers to ever be a priority.
If you read Xen's marketing material, the corporate desktop is pretty important to them too. And what with Vista providing a "degraded experience" for machines without Direct3D support, I'd expect them to be working on it right now, hopefully in time to get support working before most of their potential clients have Vista rolled out.
If the full interface documentation for recent Nvidia and ATI video cards was released, and GPL-compatible drivers existed, this would probably already be in the works.
If the emulators allowed direct hardware access, interface documentation wouldn't be required. You'd fire up Windows, granting it access to all resources associated with the card's PCI ID, and it would use its own driver. Of course, you'd have to give it exclusive access to the display for the duration of its session, but I don't see that being a huge issue.
Many of these are substantially different from standard virtualization systems, though:
linux-vserver and OpenVZ are chroot-based virtual hosting environments, not virtualized operating systems. You can add OpenVSD to the list of such projects, although it appears to be practically dead.
Qemu and Bochs are PC emulators, not virtual machines, which is a slightly more subtle distinction, but still one that needs to be made.
UML is something different entirely -- an operating system that is designed to run as a process on another operating system with a similar syscall interface.
That leaves KVM, Xen (which uses an exokernel, so is effectively its own OS, not a Linux-hosted VM), VMware (which is proprietary) and plex86 (which will only run modified kernels so doesn't provide a true virtual machine).
So, you see, KVM is effectively the only Linux-based VM system (by the traditional definition) on that list.
What are you, stupid? Do stores "specifically state" that you have the right to wear clothes you buy? Do stores "specifically state" that you have the right to eat the food you buy? Do stores "specifically state" that you have the right to read the books you buy?
No, but there isn't a law that prevents you from wearing clothes without their designer's permission, or from eating food without the consent of its manufacturer. Or reading a book without a contract with its author.
However, most computer programs are designed to require installation. This involves making a copy of the program. Making a copy of a computer program is illegal, unless it comes under one of the standard exemptions from copyright. Loading and executing a program in memory is (in the US) one such exemption. Installing it on your hard disk, however, isn't.
Besides, I dare you to cite one single instance (that wasn't subsequently overturned) of a court enforcing an EULA that wasn't printed on the outside of the box or otherwise presented to the buyer before sale. Because I believe you're a fucking liar.
"For every game at issue in this litigation except for Diablo, the outside packaging of the game states that use of the game is subject to a EULA, and that use of Blizzard's Battle.net service is subject to the Battle.net TOU. The terms of the EULAs and TOU themselves do not appear on the outside [...] Blizzard asserts that the EULAs and TOU are enforceable contracts. Defendants assert that the EULAs and TOU are not contracts because under Missouri law there was no agreement between the parties.9 Defendants argue that the only agreement between the parties is the offer to sell the software and the defendants' acceptance by purchase of the software. Also, defendants contend that the terms of the EULAs and TOU were not presented at the time of purchase. The defendants assert that if a contract exists, it is unenforceable because it is unconscionable. [...] The Court finds that the license agreements are enforceable contracts under both California and Missouri law. California courts have enforced end user license agreements, which are valid under California law. See Adobe Sys. Inc. v. One Stop Micro, Inc., 84 F.Supp.2d 1086, 1089-93 (N.D. Cal. 2000) (end user license agreement valid under California law); Hotmail Corp. v. Van$Money Pie, Inc., No. C-98-20064, 1998 WL 388389, at *6 (N.D. Cal. 1998) (applying California law, plaintiff likely to prevail on breach of contract claim regarding clickwrap agreement). [...] Defendants state that the EULAs and TOU are additional terms which they rejected. Defendants contend that is unfair for them to pay $49.99 for the games and then be unable to install them or access Battle.net without assenting to the EULA and TOU. The Court finds the EULAs and TOU are enforceable under the UCC. [...] A sale consists in the passing of title from the seller to the buyer. Mo. Rev. Stat. 400.2-106(1) (2000). When defendants purchased the games, they bought a license to use the software, but did not buy the software. Defendants' argument parallels the "first sale doctrine," although defendants do not use this term. Under the first sale doctrine, "a sale of a lawfully made copy terminates a copyright holder's authority to interfere with subsequent sales or distribution of that particular copy." packaging. [...] Defendants do not produce sufficient evidence demonstrating that title and ownership of the games passed to them. Therefore, the Court finds that the first sale doctrine is inapplicable here."
I thought the problem was that in order to build a driver, you have to use the C headers to get the data structures and other API code, so all binary drivers are technically licenced with the GPL and should be open sourced.
This may or may not be true. As a data point, I believe that in the BSD/Unix copyright case it was held that the Unix headers that were functionally duplicated in BSD weren't subject to copyright because they were purely functional rather than creative. This is a pretty similar situation, so copyright probably doesn't apply here either (at least in the US).
But, the technique that is usually used to avoid this issue is bulletproof: you create a binary driver that uses an interface that you've designed yourself (or uses some non-GPL standard, e.g. you could use the interface used by Windows drivers -- this has been implemented by the 'ndiswrapper' project, for example). You then create a GPL stub that simply interfaces between the two. There is absolutely no potential legal issue here.
Not all of these copyright holders accept binary kernel modules, and thus they should be considered illegal to distribute with the kernel.
Not at all, no. The GPL contains a clause that states that "mere aggregation on a storage medium" does not require code to be licensed under its terms. Distributing a binary module that isn't a kernel derivative along with the kernel *is* "mere aggregation".
oh wait, people that don't use computers often have a very hard time navigating a filesystem and finding the files they are looking for.
Only a minority of people who posess digital audio files "don't use computers often".
I imagine you don't gain much performance-wise if you're doing that, and you probably lose stability-wise.
True, but the purpose wasn't really to gain performance but to add support for hardware for which no virtualized version exists. So the gain is a new feature.
This is more CSS's fault than Firefox's; they picked a very bad model for laying out vertical columns.
CSS doesn't have a model for laying out vertical columns. Anyone implementing a multi-column layout in CSS is using the system for a purpose other than what it was designed for.
I believe there is column support in CSS3, but I don't think anything supports it yet (?)
One of the great strengths of OSS compared to proprietary software is the ability to make use of older hardware. Not so with this new release of Firefox.
Not so *any* release of Firefox, IMO. I've run Firefox 1.0 and 1.5 on a machine with 96MB of RAM, and wouldn't recommend the experience to anyone. Said machine is more than capable of running XP though (as long as you tweak the running services) so OS support is less of a barrier to using old hardware than resource usage.
Glad to hear that the rendering will now get some hardware accerlation. Does anyone know how faster this will be? Will it lead to smoother scrolling as on my Linux machine 'smooth scrolling' is very jerky - especially so with flash adverts.
Well, on my machine (with a rather old ATI board), Cairo rendering seems to be slower than using traditional rendering techniques.
Let me let you in on a little secret. The people that work on stuff like this have no interest in running Windows in order for 3D to work. In fact, they probably aren't gamers either.
I'll let you into a secret -- neither am I. I'm simply concerned that virtualisation be able to run Vista effectively, for which 3D accel will be necessary.
Again, as I stated in another post:
DMA + lack of IOMMU = full access to system memory
The CPU's MMU isn't enough.
True, but you can intercept requests to set up a DMA and change the addresses used at a software level. An IOMMU is substantially better, because it will work even if you have no idea how the hardware protocol works (e.g. it uses an encrypted data stream to transfer commands). But in most cases, you can simply bus snoop an in-operation device to find addresses and reverse engineer enough information to find out what's going on. Yes, it's hard. But it can be done.
My DVD player remote has 83 buttons. I use about 10 of them.
Yes, but if it only had 10 buttons, when you wanted to use a feature you've never used before you'd have to get the manual out to figure out how to do it. The point of all those extra buttons is to allow you to discover the interface without spending ages doing it. You can look at your remote control, see it has a button labelled "A->B" and think "ah, it has a section repeat function... let's trying pressing it a couple of times... yes, it repeats the section between when I pressed it the first and second time". If it didn't have a separate button, but required you to pause playback, bring up a menu and select the option, you'd probably never even realise it could do it.
If simplicity is out, why is the iPod doing so well?
Because it's a fashion accessory.
Why do you think that, in the age of a camera-mp3-omg-do-fucking-everything mobile phones, Motorola is developing a bare-bones cell phone?
Because there's always a market for any different approach. Because a bare-bones phone has a battery lifespan that's twice as long as a fully-featured one, and for some people a long battery lifetime is the killer feature of a phone.
Can you honestly say that the ipod isn't simpler from a users perspective than most other mp3 players?
Yes. When I want to put tracks onto my MP3 player, I plug it into my computer, and drag the MP3 files I want to use onto its symbol in the "My Computer" window. To do the same with an iPod, I need to start a special application to manage it.
His point is not that the search engine part of google is hard to use. He admits that is very nice and clean and easy to use. His real point is this:that's because you can only do one thing from their home page: search.
My condensed version of that essay: "Simplicity" (meaning lack of features, or having hidden the features) and "Ease of Use" are not to be confused.
And it is a good point. Here's another example, perhaps a better one. Some media players (not talking about software, but standalone hardware boxes, like CD players, DVD players, etc.) take an approach to minimising the number of buttons that goes like this: make different buttons do different things at different times. E.g. "We don't need track skip & cue/review buttons: make it do cue/review if the playback is paused and skip if it isn't." Well, this actually makes the user interface harder to use. Yes, it gives more apparent simplicity at first glance, but to anyone who's spent more than five seconds with the interface, it's harder to use. Either they'll try to do a track skip while they're on pause and not be able to figure out why it isn't working, or won't realise that there is a cue/review function. Buttons that do multiple things are confusing. Give me one button per task, and I'm much happier.
Example two: There was a trend in web browser design a while back that put the stop & reload buttons in the same place. You can't be in a state where you can do either of them, so why not combine them? Well, err... because the page might finish loading in the instant that you decide to click the stop button...? Fortunately the UI designers seem to have realised how stupid that one was.
I don't think you can give a virtualised OS "direct hardware access". How on earth would the host OS cope if it had to deal with an unknown hardware state whenever you switched back to the host?
If you have a driver for the device, just tell the driver to perform a device reset. Should work for most devices.
If you don't have a driver, why do you care?
Theres also the fact that in order to get "direct hardware access" you need to run in ring 0, which means you have absolutely no protection from the guest pissing over everything.
Not true. Hardware access is performed through I/O instructions (for which access can be granted to processes in any ring), via memory mapped blocks (which can be granted to any process via MMU manipulation), and via IRQs (which are trivially easy to deflect into a VM).
Surely to get 100% native performance you'd have to be able to restrict what the guest does in ring 0 and trust it completely?
Who's talking about 100% native performance? I'd be happy with 80%, and I'm sure that's achievable. You *can* give access to the real hardware to an OS that's running in a VM; Xen's exokernel design proved this (Xen runs as the host OS, but uses one of its guest OSs to provide hardware access for the other guests, so that it doesn't have to have to have drivers for everything itself).
Besides, restricting what ring 0 code is able to do is what the new instruction set (that this project depends upon) is designed to do.
True, but the Qemu Accelerator isn't open source, so the same criticisms then apply to that as apply to VMware.
If the JVM could get access to the hardware's dirty page bit that says if a page has been modified since last checked then the JVM could do direct reference assignment and then when garbage collecting only search the modified pages for references into the 'scratch' area. I expect this would be many times faster than the pointer write barrier used now.
I don't know how Sun's GC works, but I've worked on implementations using Boehm's collector, which is able to access the dirty bits on some OSs (e.g. under Windows using the GetWriteWatch API -- I believe the Linux version also uses dirty bits).
Basically you need a 900-series Pentium 4 or more recent chip, or similarly recent AMD chips. This is new, but not quite as new as core 2.
The corporate market (particularly servers) is far larger and far more important for them - so don't expect video drivers to ever be a priority.
If you read Xen's marketing material, the corporate desktop is pretty important to them too. And what with Vista providing a "degraded experience" for machines without Direct3D support, I'd expect them to be working on it right now, hopefully in time to get support working before most of their potential clients have Vista rolled out.
If the full interface documentation for recent Nvidia and ATI video cards was released, and GPL-compatible drivers existed, this would probably already be in the works.
If the emulators allowed direct hardware access, interface documentation wouldn't be required. You'd fire up Windows, granting it access to all resources associated with the card's PCI ID, and it would use its own driver. Of course, you'd have to give it exclusive access to the display for the duration of its session, but I don't see that being a huge issue.
Many of these are substantially different from standard virtualization systems, though:
linux-vserver and OpenVZ are chroot-based virtual hosting environments, not virtualized operating systems. You can add OpenVSD to the list of such projects, although it appears to be practically dead.
Qemu and Bochs are PC emulators, not virtual machines, which is a slightly more subtle distinction, but still one that needs to be made.
UML is something different entirely -- an operating system that is designed to run as a process on another operating system with a similar syscall interface.
That leaves KVM, Xen (which uses an exokernel, so is effectively its own OS, not a Linux-hosted VM), VMware (which is proprietary) and plex86 (which will only run modified kernels so doesn't provide a true virtual machine).
So, you see, KVM is effectively the only Linux-based VM system (by the traditional definition) on that list.
They had me until the C# part.
Nice way to make sure you don't do a port to something else.
I think the DirectX part is more likely to restrict portability. C# can run on a lot of platforms, thanks to the mono team's work, you know?
Yes, but there isn't a law against eating bread. There is a law against copying software.
If I go and buy a car, does that give me the right to drive it without a licence?
See my other post. 8th circuit has also held that software may be licensed like this.
What are you, stupid? Do stores "specifically state" that you have the right to wear clothes you buy? Do stores "specifically state" that you have the right to eat the food you buy? Do stores "specifically state" that you have the right to read the books you buy?
No, but there isn't a law that prevents you from wearing clothes without their designer's permission, or from eating food without the consent of its manufacturer. Or reading a book without a contract with its author.
However, most computer programs are designed to require installation. This involves making a copy of the program. Making a copy of a computer program is illegal, unless it comes under one of the standard exemptions from copyright. Loading and executing a program in memory is (in the US) one such exemption. Installing it on your hard disk, however, isn't.
Besides, I dare you to cite one single instance (that wasn't subsequently overturned) of a court enforcing an EULA that wasn't printed on the outside of the box or otherwise presented to the buyer before sale. Because I believe you're a fucking liar.
"For every game at issue in this litigation except for Diablo, the outside packaging of the game
states that use of the game is subject to a EULA, and that use of Blizzard's Battle.net service is subject
to the Battle.net TOU. The terms of the EULAs and TOU themselves do not appear on the outside
[...]
Blizzard asserts that the
EULAs and TOU are enforceable contracts. Defendants assert that the EULAs and TOU are not
contracts because under Missouri law there was no agreement between the parties.9 Defendants argue
that the only agreement between the parties is the offer to sell the software and the defendants'
acceptance by purchase of the software. Also, defendants contend that the terms of the EULAs and
TOU were not presented at the time of purchase. The defendants assert that if a contract exists, it is
unenforceable because it is unconscionable.
[...]
The Court finds that the license agreements are enforceable contracts under both California
and Missouri law. California courts have enforced end user license agreements, which are valid under
California law. See Adobe Sys. Inc. v. One Stop Micro, Inc., 84 F.Supp.2d 1086, 1089-93 (N.D. Cal.
2000) (end user license agreement valid under California law); Hotmail Corp. v. Van$Money Pie,
Inc., No. C-98-20064, 1998 WL 388389, at *6 (N.D. Cal. 1998) (applying California law, plaintiff
likely to prevail on breach of contract claim regarding clickwrap agreement).
[...]
Defendants state that the EULAs
and TOU are additional terms which they rejected. Defendants contend that is unfair for them to pay
$49.99 for the games and then be unable to install them or access Battle.net without assenting to the
EULA and TOU.
The Court finds the EULAs and TOU are enforceable under the UCC.
[...]
A sale
consists in the passing of title from the seller to the buyer. Mo. Rev. Stat. 400.2-106(1) (2000).
When defendants purchased the games, they bought a license to use the software, but did not buy the
software. Defendants' argument parallels the "first sale doctrine," although defendants do not use this
term.
Under the first sale doctrine, "a sale of a lawfully made copy terminates a copyright holder's
authority to interfere with subsequent sales or distribution of that particular copy."
packaging.
[...]
Defendants do not produce sufficient evidence demonstrating that
title and ownership of the games passed to them. Therefore, the Court finds that the first sale doctrine
is inapplicable here."
(Davidson & Associates Inc. et al v Internet Gateway et al; US District Court, Eastern District of Missouri, Eastern Division; No. 4:02-CV-498 CAS - confirmed in the Eighth Circuit Court of Appeals)
Apparently Vista does the same thing. And if both Apple and MS have done it, Linux can't be far behind...