I thought Benno Rice’s argument a bit unorganized and ultimately unconvincing, but I think
the underlying point that we should from time to time step back a bit and review
fundamentals has some merit. Unfortunately he does not distinguish much between a poor
concept and a poor implementation.
For example, what does “everything is a file” mean in Unix?
- Devices and files are accessed through the same small API?
- All I/O is through unstructured byte streams?
- I/O is accessed via a single unified name space? etc.
Once that is clear, how can the concept then best be applied to USB devices?
Or: is there a fundamental difference between windows-style completion ports and
completion signals?
Many of the underlying questions have been considered in the past, with carefully laid out
arguments in various papers. In my view it is worthwhile to go back to these papers and
see how the arguments pro and contra various approaches were weighed then and considering
if the same still holds true today.
Interestingly, several points that Benno touches upon in his talk were also the topic of
debate when Unix was transitioning to a 32 bits address space and incorporating networking
in the early 80’s, as the TR/4 and TR/3 papers show. Of course, the system that CSRG
delivered is different from the ambitions expressed in these papers and for sure opinions
on the best choices differed as much back then as they will now - and that makes for an
interesting discussion.