Every piece of free software we run (that we didn't write) is a favor. It's built by people generous enough to share what they did and shared so the same generous people could cooperate and build upon rhat other generous people did before them. No free license prevents such software from running on Windows and none ever will. If you feel like porting, you will be welcome.
The fact there is really no need to do it, however, because most of it runs perfectly well under Cygwin, remains.
I haven't seen anything about the POSIX subsystem that should be in Windows. It seems to me it could be used to build a more Windows-ish Cygwin.
Also, never forget Cygwin is the work of very generous people who wanted Windows users to have a free Unix-like environment they could use to run code that would be very painful to compile under Windows otherwise.
I know that all you've said is true, and I agree with it. Open software is a blessing, built by generous people. If other people want certain features, they are welcome to contribute patches. I want you to know that I agree with this, I've never disagreed with that.
I'm arguing on behalf of a simple hypothesis, that Windows users know Windows and do not know Linux/Unix or POSIX. Moreover, they may not want or may not have the time to learn Linux/Unix or POSIX subsystem. They do not know nor can take advantage of what a "free Unix-like environment" provides. They know what they know. Cygwin adds a heavy emulation layer into Windows which they do not know. To be clear, they do know JavaScript and they do understand what running JavaScript on the server means.
Is Cygwin a technological achievement in and of itself? Yes, absolutely. Is Wine? Yes, absolutely. Is ability to run node.js or git on Windows through Cygwin? Yes, absolutely. Is that an awesome hack (in the best sense of the word) for people that understand the Cygwin emulation layer? Yes, absolutely. Is it an achievement for Windows-only developers and users who don't understand -nix idioms or POSIX subsytem? No, it isn't.
That's all I'm saying. I'm not offering a better solution -- I don't have one. I'm just saying that when someone from the -nix side says that something runs on Cygwin that they should respect and empathize with what that means for Windows users operationally.
To use an analogy, earlier a youtube video was posted about a first encounter between a tribe in Papua New Guinea and some white travelers. The white people had amazing tools are artifacts -- mirrors, matches, plastic cups, knives, etc -- which the tribal peoples had never seen before nor had a framework of understanding within which to reason about them. Are the tools cool? Yes -- the knife whittled wood far more effectively than their crude tools. Are the tools scary and hard to understand? Yes -- the tribesman covered the mirror with a leaf (!) because he couldn't understand how it worked or if it was (presumably) some sort of magic. The *nix command-line/file-system/permissions apparatus is incomprehensible magic voodoo to someone who's only had Windows console experience their entire life. So for the "white man" to say "but it runs in Cygwin" to the primitive native peoples is perhaps a tad presumptive. That's not to say that the native peoples are lesser beings intellectually viz. "don't eat that poisonous flower", Windows has had IOCP since NT4.
I think it's a wonderful example of the way the process should work that Microsoft is stepping up to help Ryan/Joyent port node.js to idiomatic Windows.
The target audience for node.js is not a group of primitives who cannot understand how a mirror work. There are very smart developers that live their entire lives in the comfortable dictatorship (as in "Microsoft dictates what you'll use") that Windows development is. The audience is sophisticated enough to run node under Cygwin, to compile it from sources if needed. They may have to read something or get used to invoking a compiler from a terminal, but that's nothing a developer cannot master in 2 hours.
What Microsoft is doing here is preventing the deployment of a non-Windows servers to run node.js workloads because it also runs on Windows, much like what the PR they did with the PHP folks when they made sure PHP ran fine on IIS or, earlier, when Microsoft acquired Sofrimage only to validate Windows NT as a competitor to IRIX. Don't expect any commitment from Microsoft to the node.js community or any continued investment after they reach the goal of diverting enough resources into this port.
And, finally, Microsoft is not stepping up to help Ryan and Joyent. Microsoft is stepping up to prevent Ryan and Joyent to disrupt, in any measure, the Windows ecosystem.
Every piece of free software we run (that we didn't write) is a favor. It's built by people generous enough to share what they did and shared so the same generous people could cooperate and build upon rhat other generous people did before them. No free license prevents such software from running on Windows and none ever will. If you feel like porting, you will be welcome.
The fact there is really no need to do it, however, because most of it runs perfectly well under Cygwin, remains.
I haven't seen anything about the POSIX subsystem that should be in Windows. It seems to me it could be used to build a more Windows-ish Cygwin.
Also, never forget Cygwin is the work of very generous people who wanted Windows users to have a free Unix-like environment they could use to run code that would be very painful to compile under Windows otherwise.