From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mike Haertel Message-Id: <200110080838.f988c0Y95817@ducky.net> To: 9fans@cse.psu.edu Subject: Plan 9 annoyances (was: Re: [9fans] mv vs cp) In-Reply-To: <20011008082741.X28720@cackle.proxima.alt.za> Date: Mon, 8 Oct 2001 01:38:00 -0700 Topicbox-Message-UUID: 01440ea2-eaca-11e9-9e20-41e7f4b1d025 >> Often. This is one of the things that most irritates me about Plan 9. > >Talk about extreme responses :-) What's this, can't the Plan 9 Thought Police take a little criticism? :-) More seriously, an extreme response would be something like giving up Plan 9. If anything, I am using it more often these days. That said, there are numerous irritations. Some are architectural and unlikely to be fixed, others are easy to fix. Here's a sample: * The existence of non-network-transparent kernel devices like /srv which don't work when accessed by exportfs on behalf of a remote machine. * The need for /$objtype/bin/ape/psh, which is a #!/bin/rc script. (Exercise for the reader: explain why this exists even though the same script can also be found in /rc/bin/ape/psh.) * Lack of long file names. (Someday to be fixed in 9P2000.) * Other arbitrary limits in programs. Everyone is familiar with line length limits in various utilities. Lots more obscure ones, like max 512 files in ramfs. Avoiding arbitrary limits is something the GNU folk got really right, because one person's "this is a reasonable limit" is another's "how could those morons set such a low limit?" It's easy to get right and you should Just Do It. * rio windows are not searchable, but on the other hand acme "win" windows won't let you run graphics programs. * Lack of find and xargs. I don't need creeping featurism like "chmod -R", but there should be *some* mechanism for mapping commands over the file hierarchy. * Anemic functionality in diff, and lack of patch. For example, GNU diff will at least tell you whether binary files differ; Plan 9 diff just gives up. * Bad release engineering. For example, in /sys/src: "mk all" builds the commands in /sys/src/cmd, but doesn't build the commands in subdirectories of /sys/src/cmd. (you need to also go to /sys/src/cmd and do "mk all.directories") why? "mk clean" doesn't remove every generated file. try (say) "find . -mtime -1 -type f -print" after rebuilding the world. (oops, forgot--Plan 9 doesn't have "find".) "mk all" installs some things even though there is a separate "mk install" target for installing. the lib* makefiles are particularly annoying in this regard. * Poor support for symbolic debugging. This one has always baffled me because Bell Labs had an amazingly pleasant debugger called "pi" under v10. * Poor memory management. On my 1GB desktop system, a ridiculous amount of kernel memory gets allocated to pixmaps, but kfs still uses only 2mb for file buffers. (Yes, I know I'm supposed to use the dedicated file server... someday soon.) * Lack of a web browser. Sigh, even those of us who should know better get caught. ("Hey man, you've got to try this stuff... don't worry, you can't get addicted if you just try it once!") * /lib vs. /sys/lib