I find this comment most important in all discussion:
>To be honest, I don't see how this dscussion about how many people might depend on these aliases is relevant. The story as I see it is that a few years ago you decided to usurp the names of some well known tools, in the full knowledge that doing so would break those tools. You have then ignored bug reports about this for years. You really can't deny that you knew a long time ago that what you did amounted to hostile behaviour towards other people.
How is that comment useful? No-one is denying anything. It's obvious that the decision to implement those aliases was incorrect. It's not like Microsoft is saying that it was correct.
It's not a question of who was right or who to blame. It's a question of how to make the changes because there _are_ users that depend on those aliases.
That's not the problem MS was trying to fix with the Linux aliases -- the problem they were trying to fix was ergonomics. A lot of us are used to Linux commands and are turned off by Windows shells when we have to learn a new set of commands and can't use `ls`.
In fact, being able to do `ls` rather than `dir` on PowerShell was one big reason I gave it a chance. My other Windows shell experiences have been supremely intolerable because of that.
With curl and wget, Microsoft admits they were overeager.
I think the correct ergonomics would be if you saw:
$ curl http://example.com/foo
Fetching http://example.com/foo by emulating curl
This command is an alias for "...".
If you've installed a real curl command, disable this by typing...
so that you could still use muscle memory to type the commands you know, could see what the actual underlying command is so you could adapt to it, and would know how to use the Real Thing if you have it.
Really? What's the normal output? The content of the URL being fetched. If that message was to STDERR so that curl > foo worked without alteration but the help text still showed up on the console, I think fewer people would be surprised.
The number of bugs about this indicates that people are still being surprised.
PowerShell has other ones in addition to the cannibalistic ones. `Get-ChildItem` has `gci` and the command in question, `Invoke-WebRequest` has `iwr` on top of `wget` and `curl`. Admittedly, it's pretty kitchen sinky.
I think this comment is important in understanding why so much open source software doesn't have backwards compatibility
> If removing these aliases (retroactively, if you want to clean up your act you have to remove this from all versions in which this was ever released) breaks things for some people, then you can go and send people out to help them fix their issues. You knew it was a hostile action, you broke things, you fix them.
retroactively remove things from old versions? This is crazy
>To be honest, I don't see how this dscussion about how many people might depend on these aliases is relevant. The story as I see it is that a few years ago you decided to usurp the names of some well known tools, in the full knowledge that doing so would break those tools. You have then ignored bug reports about this for years. You really can't deny that you knew a long time ago that what you did amounted to hostile behaviour towards other people.