While the Kubernetes Application Survey highlighted some things to be proud of, there were some major problems it highlighted as well. These are the kinds of problems the Kubernetes community needs to solve to really welcome the majority.
One of the biggest is the Windows problem.
Microsoft Windows is used by 49.9% of developers. There are thousands upon thousands of developers who do cloud application development on Windows. Yet, the Kubernetes community doesn't have good uptake among developers who do development on Windows and many tools don't offer good or any Windows support.
How Poor Windows Support Was Observed
You should wonder how I came to this conclusion. There were several things that popped out:
- Minikube Windows usage was at 11.8% compared to 69% for Mac and 49.8% for Linux
- Numerous tools found in the survey were written in shell scripts. These don't tend to work on Windows unless you have extra things installed, such as the Windows Subsystem for Linux, which many don't use
- Many tools found in the survey have Mac and Linux downloads but not Windows downloads. Even when written in languages, like Go, where it's simple to cross compile to Windows
- Windows, like Mac and Linux, has package management. Yet, many of the tools found in the survey cannot be installed using Windows package management
When I went looking for examples of this situation beyond the material in the survey it didn't take me long to find additional cases highlighting this problem, either.
What We Can Do
First, I appreciate all the work Microsoft is pouring into the Kubernetes community to improve the experience. And, I understand that many developers who use GitHub use Mac and many Kubernetes developers, who create tools around it as well, also use Linux.
To reach the majority in the technology adoption curve we need better support for Windows tooling.
A few things can be done to help:
- More GUI Apps. Many developers love their GUIs. Especially on Windows
- Build tools that work on Windows in PowerShell and the Command Prompt (A.K.A. cmd.exe)
- Ship applications so they can be easily installed on Windows (binaries and using Windows package management). Note to Go developers, don't assume consumers have the Go compiler installed
I understand that many developer of Kubernetes tooling don't use Windows. Some don't even like it. But, if we are going to reach the majority of app developers and operators we're going to have to support it well.