I just read an interesting interview with Greg Kroah Hartman. According to Greg, we add 11,000 lines, remove 5500 lines, and modify 2200 lines every single day. This rate of change is something that few organizations have the resources to match. It is interesting that Google chose to use the Linux kernel in the Android project even though they implemented most other parts of the system. Another interesting thing to consider is the consequences of the Linux kernel license, which requires many drivers to be released as GPL. While initially, this may be viewed as a disadvantage, it leads to some interesting long-term implications. The obvious effect is that most Linux driver code is maintained in the mainline kernel source. This leads to other effects. One is that things are allowed to change, and get better. The USB stack in both Linux and Windows has been re-written several times, but the difference is that in Linux the old software does not need to be maintained, as most drivers are maintained in the kernel, and can simply be modified along with core changes. Another advantage is that drivers tend to be much simpler as common code is merged. As a result, a Linux driver tends to be about 1/3 the size of a driver in other operating systems. Yes, getting driver code accepted in the mainline kernel can be difficult at times, but it is clearly the best long-term option.