Windows

Packages and applications

  • winget, available for preview since Windows 10 v1709 (build 16299)
    • This is Microsoft's answer to the community-built chocolatey.

A list of applications of note follows. Note: I stopped using Windows for any reason ~2015. By 2020, I no longer use any Windows systems on a daily basis.

  • SuperPutty with a little bit of puTTy setting tweaking, it is the ultimate for the ssh connected terminal users. Users who only connect to linux machines remotely may prefer using SuperPutty exclusively instead of using WSL or Cygwin.
  • AutoHotkey (specifically, AutoHotkey_L) for keyboard/mouse scripting. Nothing like it - exclusively for Windows. Can solve a lot of GUI problems and hack certain games.

Setup

There are 3 distinct ways to setup a base development environment. Pick one. Best solutions appear first.

1. Git-for-Windows provided base environment

This route is a good option for developers who are using git. It contains a well-composed userland-only bootstrap of a unix environment. There is 0 virtualization required for this solution.

  • git for windows source of coreutils and the core POSIX environment
  • cmder (and its base ConEmu) are essential for a good console experience on Windows.

Note: If you installed Git already, then get the mini version of cmder to avoid having a duplicate shell toolchain.

2. WSL 2.0: accepting a managed environment

If your CPU supports virtualization, you can use the currently-supported implementation of WSL at Microsoft. I haven't tried WSL 2.0 myself, but I have seen reports that projecting to VcXsrv are still working (they have worked since 1.0 days).

3. WSL 1.0: a landmark achievement

Finally, one may opt for the final release of WSL 1.0 (and perhaps an outdated patchset of Windows 10). The first WSL implementation operated entirely on the level of syscalls. This was a much more subtle approach that Microsoft has now abandoned, as WSL 2 now simply requires enabling Hyper-V and running a managed vm.

This has one upside that you can use docker through the managed WSL vm, but an obvious downside of abandoning an effort to truly merge the interfaces. At one point, there was a plan for example, for ps to be able to see Windows processes, and conversely, for Windows processes to be able to see the linux ones. I assume it all fell apart when some person(s) started screaming about potential misuses of the subsystems. The problem is compounded if the Windows engineers are not supported or motivated to work such projects.