Composing the viewpoints I've seen: >But Plan 9 has been advertised as a superior alternative to the >usual developer's interactive computing environment. A good Web >browser is another essential tool, these days. Why should one >be forced to buy a second computer to do something that ought to >be right up the alley of the first one? and >People have noted (quite rightly) that the kernel code for moving >directories is tricky and easy to get wrong and complex. But what >they haven't noted is that the user-space solution is even more tricky >(if you expect it to solve the same problems), and even easier to get >wrong, and even more complex. ...I guess we should write a web browser and stick it in the kernel. We are indeed driven by kernel simplicity more than anything else because it has to survive a more varied load than individual commands. A failure of the kernel is deadly to everything on the system. It also has the most persistent state of any part of the system so that leaks and stray memory references that wouldn't bother a program tend to eventually bring the kernel down. Because of that, we try to put things in kernel only if they significantly improve performance, are needed to enforce some policy, or just can't be done outside the kernel. Moving a directory doesn't fall into any of these categories, though some parts of the operation do. The move itself should be in a library if it's going to be used by more than one program. I find moving directories often useful, though orders of magnitude less so than compiling, reading mail, buying wrenches on the web, ... Making moving directories fast and convenient is as useful as doing the same for rearranging furniture. The current mv does let you move directories and doesn't do it any less correctly than the kernel could. I've spent more time reading the messages about moving directories here than I ever would have saved by had they been implemented. As for find, this isn't rocket science. Quit yapping and implement it if you want it. To be safe from graph cycles, you can keep track of qids of directories or, if you're lazy, use fd2path and give up when the tree gets too deep.