POSIX and its ecosystem is also full of this backwards compatibility baggage (I for example claim that X11 has a lot more outdated backward compatibility legacy than WinAPI - no surprise since it is much older). Just to give a few basic texts about this:
The Unix-Haters Handbook: http://web.mit.edu/~simsong/www/ugh.pdf
A Tale of Two Standards: A text by a person (Jeremy Allison) who understands both WinAPI and POSIX: https://www.samba.org/samba/news/articles/low_point/tale_two...
The reason why people tell this all the time with respect to Windows, but much more rarely with respect to POSIX and its ecosystem, is in my opinion that much more programmers have inhaled the latter.
I would prefer more constructive criticism: this reads like a synopsis of The UNIX-HATERS's Handbook, and (while quoting from Worse is Better) glosses over how UNIX is terrible because it out-competed its peers by being 'better' (compromising its design and consistency to improve its delivery and practicality).
It's valuable to challenge assumptions held in a community (to avoid the Normalization of deviance in software: how broken practices become standard). It's more valuable to suggest improvements, and most valuable to improve it.
I did not know about this!
It even has an anti-foreword by Dennis Ritchie which kinda reminds me of the Metropolitan Police spokesman's blurb on the back of Banksy's book.
BTW, it starts off with an anonymous quote that I've never heard, Two of the most famous products of Berkeley are LSD and Unix. Unix is of course from Bell Labs. And anyone who knew anything would have said instead, Two of the most famous products of Berkeley are LSD and BSD which at least would have been funny if still inaccurate. Anyways, it seems like a fun rant of a book which I'd never heard of.
The above point about not getting it can be applied to Linux as well. Lessons learned elsewhere are stupid until Linus finally understands them and then they're obvious.
Yes. Read http://web.mit.edu/~simsong/www/ugh.pdf Then read: http://www.catb.org/esr/writings/taoup/html/
You are responsible, as programmer or script writer, to ensure that the data you give to some tool is compatible!
But notice also that the pipe is not the only IPC mechanism available on unix; there are a lot of other ways unix processes can communicate, from shared memory to external files, thru pipes, sockets, semaphores, signals and others. Each of these IPC mechanisms can be used to compose tools, as long as they are designed to use those mechanisms. In all cases, you need to document the specifications of the interfaces and data format.