Your concerns sound like they come from many years ago and that maybe you haven't taken a look lately.
Need to SSH/SFTP? Download. Need to edit code? Download. Python? Download. Perl? Download. A reasonable terminal? Download.
Yes, I might have to go to the Mac App Store and get command line tools for C, C++, Objective-C, etc. It is unfortunate that XQuartz is no longer installed by default, granted. (PowerShell is very nice to work with though, I give MS full credit for that.)
I could live with having to download python, perl, etc., but someone please explain why having an absolutely fundamental ability to edit text and securely connect to work and transfer data to/from remote machines is something that any OS should be shipping without?
And starting with Windows 10 a metro app called 'Code Writer' seems to be installed by default for coding. (At least it's there in my installation.) I didn't try it though.
It still befuddles me why some of this basic functionality cannot be a standard part of Windows. Not every Mac user uses emacs, or even knows how to open the Terminal app, but the fact that basic tools are supported means that there is just a baseline level of infrastructure to work with.
The ability to edit text _does_ ship on windows - notepad. (not that I'd recommend it but it does exist). Also, OSX doesn't ship with anything better.
FTP isn't a fundamental requirement for everyone, I don't have an FTP client installed on my machine, and don't have any intention of installing one.
You are correct, I would never suggest anyone have an FTP client; I have that service turned off on every machine I administer. SSH / SFTP are fundamental tools however.
They are provided out of the box (and newer versions than OSX ships with) by WSL. As is vim, emacs, apt, etc.
Done. Pro-tip. Pin PowerShell to your taskbar and drag all the way left. Now you can open it with win+1.
Edit: now with no mouse required!
Edit: for reference, home also doesn't come with bitlocker (!?), Domain join, Group Policy, client hyper-v, and others. Don't buy home to do work.
> I would never suggest anyone have an FTP client; I have that service turned off on every machine I administer. SSH / SFTP are fundamental tools however.
Pedantry at its finest.
I have neither ssh nor sftp on my workstation and I have no need for either.
Windows also ships with WordPad, which is a simple word processor.
While that is true, it's a bit of a moot point imo. I have yet to see an OS which had everything I needed for any actual work installed out of the box. As such, the way to deal with this is have a script download/install everything for you (and eventually copy or link all configuration files). Using Powershell getting any of the examples you mention is basically a one-liner just like for other package management tools, something like `openssh, miniconda, strawberryperl, conemu | Install-Package`. Or you can go more of a DSC way with Powershell Dsc.
I'm pretty sure you didn't try PowerShell. It is at least as good as bash, if not better.
> you need to use the mouse too much
I find this more problematic on macOS. I was forced to use a mouse much more on macOS. It doesn't even allow me to press the yes/no dialog only using a keyboard. On Windows nearly every item has a shortcut, sometimes even better than GNOME (but worse than KDE, IMO).
Toggles on highlighting for all UI elements so you can Tab / Shift-Tab through them. It's usually the first thing I do when I touch a new Mac.
cmd+first letter of the dialog option.
I actually find OS X far superior with shortcuts than Windows: More discoverable, actually configurable and more consistent.
One of the only things I miss now I've switched to Win.
In Windows the shortcuts have always seemed less logical to me, though the newer Windows key ones are an improvement.
Even if you don't, learning it is a fun experience. It's like learning Haskell just to feel another way to program, even though you're not using it in practice.
Who needs ls when you have Get-ChildItem?
Who needs grep -r 'pattern' when you have Select-String -Path c:\ -Pattern pattern?
Now that I think about it, Powershell has a conceptual similarity to Applescript. A proprietary, verbose, and hard-to-discover English-like syntax belying a great amount of power over the target platform.
After some googling just now, it seems like there's now an Invoke-WebRequest command, but that too looks like a hell of a lot of typing compared to Linux shells.
There's also the fact that lots of stuff in windows wasn't designed to be accessible through the cli. You can't, for example, make a powershell script to toggle an audio output device on and off, as that's only available through the GUI.
I blame the documentation. Not the official documentation (they're not excellent, but OK), but various outdated resources residing in many blogs and sites, including Stack Overflow. I mean, what's wrong with
iwr REMOTE_URL -o LOCAL_FILENAME
? The situation this command wasn't searchable by you is unfortunate, possibly because PowerShell has come a long way since its introduction in 2006 and it is hard to remove the outdated resources online. But for those who know what features/commands are available in PowerShell, finding them isn't particularly difficult.> There's also the fact that lots of stuff in windows wasn't designed to be accessible through the cli. You can't, for example, make a powershell script to toggle an audio output device on and off
This is just one example. On the other hand, I found nearly every thing I had done using GUI could be replaced by a few lines of PowerShell code. Actually automating my day-to-day GUI operations was my way to learn PowerShell, and mostly it worked great. Microsoft is adding tons of commands each release to expose more system functionalities. There are exceptions of course, but "lots of stuff" is a bit exaggerated.