I ask because I work in the console space at Microsoft and am keen on understanding the features you're looking for and what scenarios you're attempting to satisfy.
We also have a user voice going where we've been fortunate enough to gather a lot of passionate feedback.
https://wpdev.uservoice.com/forums/266908-command-prompt/cat...
I don't want to have to relearn commands that I know work in *nix land, is the big point -- I don't want to have to remember to change the directions of my slashes, for example.
I'm not an expert, merely a user, in this space, so I can't really articulate precisely what it is I want in the best terms possible, but I can say I get a lot closer to where I want to be with Cygwin than I get with anything that comes native on Windows.
Once I feel I can buy into the shell, I'll probably go all in. Until then, I try to use Cygwin to avoid having to switch to a *nix box when I just want to use a simple admin utility or maybe test something out in the Python REPL, but otherwise I just tend to switch when I want to spend a work day on something.
The reason I switched to linux, then OS X, was as a web developer there's no substitute for a real bash environment integrated with the OS.
I was a cygwin user when I was on Windows, but many things just didn't work or only worked with a lot of messing around with configuration. I believe most of this is due to the lack of POSIX compliance on Windows.
Many things were funky, such as "cd c:", symlink vs junctions, and interplay between dos utilities and cygwin utilities (the find and locate commands come to mind). A lot of things worked, and I commend the developers who hacked it together, but when you wanted to do anything remotely complicated, it became evident it was just a veneer.
Thanks for giving me the feedback that you're using the environment for web-development.
I've often wondered as I look over feedback like yours if one of the reasons some web developers prefer NIX is because a good many tutorials are written assuming a NIX environment. Would love to know your thoughts.
I think it's because most web developers are going to be using Linux or a BSD on their servers, so they'd rather use the same environment on their dev machines. However, a good console/terminal emulator, support for popular shells, all the common UNIX utils, a better package manager and repository than nuget and chocolatey (perhaps Microsoft needs to start pulling from and communicating with the upstreams of certain projects?), and most importantly, the ability to use all of this out of the box without having to deal with myriad incompatible toolchains, would IMO capture most of that benefit for the average web developer.
Disclaimer: I'm a game developer, so I'm probably not your target here. I like having a UNIX environment around for writing scripts and munging data, and just think it'd be great if I could have one out of the box without needing to mess around with msys/cygwin/gow/etc.
EDIT: I should add, there are quite a few projects that could easily be ported to Windows, but haven't, because the developers don't care enough to write POSIX wrappers for i.e. mmap vs MapViewOfFile. Short of a full POSIX implementation, having official wrappers for some of these basic APIs could make Windows support too trivial for them to ignore.
Reduce vulnerability. No system is invulnerable, but sadly we run Windows in a sandbox or not at all.
And portability, I don't care if you fake it as long as it works. Don't require weird stuff. C:\AUTOEXEC.BAT, bash and zsh are "just interfaces." I don't usually interact directly with mach or the linux kernel that would be weird. For instance, over time OS X has had a line of dispatch mechanisms, launchd, Grand Central Dispatch, ... They all work, but they are different (weird.) Don't even get people started about systemd on Linux. crontab should work on OS X, and Windows because it's "just an interface." The underlying layers are Microsoft's kernel and services. We're just using an interface.
Don't require weird stuff. At the same time, don't break things.
UNIX
POSIX API layer
coreutils https://www.gnu.org/software/coreutils/
Homebrew installs the stuff you need that Microsoft didn’t. http://brew.sh/
Obviously, don't install coreutils, homebrew, fill-in-the-blank by default. But make them easily installable and seamless once installed. Keep the core OS lean.
Adopt Linux, OS X, Google Play, and whoever else comes on the scene. If you do, then Microsoft OS is the killer OS because it runs ALL the programs. I should be able to run programs for different architectures in Windows. Virtual layers via VMs, compatibilty layers, simulators, and emulators are sweet. ie. "wine weirdProgramForWin32.Exe", running a Mac OS X PowerPC program on OS X Intel or Arm, or ...
Please lose the "CP/M" (MS-DOS) creatures. Here's a short wish list of things because they bother me:
* go with a single character newline: change from CR LF to LF
* make notepad play nice with newlines
* change \ to /
* mount umount: the drive letters are old and \\ is weird
* text files don't need the .TXT extension
* change .HTM to .html, or get rid of extensions.
* executables don't need the .EXE extension
* file permissions: hidden-extension.jpg.EXE should not be executable by default
* don't take over the boot block of my hard drive, allow grub or whatever to boot Windows
See Linus Torvalds comments on filenames -- case sensitivity amongst many other hard to salve problems. See the Apple devs comments on Microsoft Office filenames. All of this, not just Microsoft, seems broken to me. Why can't I put a "/" in my filename in Linux? Why can't I put ":" in my filename on OS X? Windows paths? I know why, but I feel like there is a better way. Simple, but not too simple.Basically, allow interoperability: make things work. OS X is good, Linux is better. Microsoft could be the best. People like using what they are used to. The Windows interface is familiar. A mobile interface intermixed with the familiar Windows interface is confusing. Again, it's "just an interface." I was hoping Windows 9 might be more like Windows 7. Hopefully, looking forward to Windows 10. Good luck.
My question for you is: How do you manage complexity?
Thanks for the well wishes, you're right there is a ton of complexity but that's what makes it fun. Just don't yell at me too much when there are some bumps along they way.
I am a multi-OS user and I just wish that I could easily use some simple Unix commands on Windows without having to learn a whole new shell.
I want a package manager for everything, something like nuget (which is great), but for the entire OS like brew/apt/yum.
I want a ssh client/alternative, I should be able to administer a windows box without having to RDP in.
These are my main issues but i'm sure there are plenty of other small ones. My workflow is typically web development but I work for a smallish company and do a bit of Ops as well.
A lot of unnecessary parsing and happens in unix tools. Programs generate a lot of structured data, dump as human-structured text, which is then parsed by the next tool, processed, dumped as more text, parsed again by the next tool, processed, etc. Right now I'm working with an SDK that does it and it actually needs Python code to parse the output from different tools to glue them together.