Monday, November 14, 2016

Developers: Windows Linux Subsystem is a Viable Alternative

Update: Thanks to readers from HN and Microsoft; please continue the discussion on HN. To summarize this post,
I challenge an intrepid, influential developer from Facebook, Google or Amazon to attempt to replicate their development workflow -- code, build, debug -- on Windows using native Linux tools, and post their findings. If Gabe's (from Penny Arcade) experience is anything to go by, the Windows support team is hungry and will do whatever they can to fix any issues that prevent this captive audience from executing their workflow efficiently.
The first MacBook Pros are arriving at the doorsteps of their eager owners. And the reviews are markedly tepid, nay "meh". This piece on qz.com does a good job with capturing what reviewers are saying about Apple's marquee portable computer.

To Quartz's credit, the next link they present to the reader covers Windows laptops that might tickle your fancy if you feel disenfranchised by Apple. Apple has, like is its wont, left the door ajar for Microsoft, but they know they are untouchable. Despite the design and manufacturing strides that Windows laptop makers -- Microsoft included -- have made in the last few years, they cannot replicate Apple's status as the coveted laptop for "makers"; creative professionals and software developers.

A crease is beginning to appear post the last MacBook Pro announcement. The first contingent -- the creatives -- are already disgruntled, and have gone public with their sometimes extreme disappointment with Apple. It's the second contingent that's been relatively quiet so far, and this cadre of MacBook portable users fills Apple's coffers a great deal, without getting much love from analysts and bean counters. Developers who use MacBook Pros today rely on the Unix underpinnings of macOS and the Linux-inspired toolchain that translates almost 1:1 from Linux to macOS. Yes, there are differences and annoyances due to vagaries of macOS attributable to either the fact that it isn't a true BSD or an obscure broken API (e.g., the "poll" implementation). Developers overcome these shortcomings by modifying their workflow slightly, but for the most part, they *strongly prefer* MacBook XXX machines over Windows because of built-in support for their daily workflow.

Enter the Linux Subsystem on Windows 10! Now, there is a legitimate competitor to Apple for native  Linux toolchain support on a "usable", "laptop ready", consumer-oriented operating system.

To give you a sense of how user-friendly the Linux subsystem on Windows 10 is, here is what my friend did to get ViM on his Windows 10 laptop:
user@windows-x1:~$ sudo apt-get install vim
Reading package lists... Done
Building dependency tree
Reading state information... Done
...
Preparing to unpack .../vim_2%3a7.4.052-1ubuntu3_amd64.deb ...
...
Setting up vim (2:7.4.052-1ubuntu3) ...
...
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/ex (ex) in auto mode
After which he typed this:
user@windows-x1:~$ vim

BOOM! Yes, he installed ViM on his Windows machine using `apt` without installing anything else. The native `bash` support in the Linux subsystem for Windows makes this possible, including unraveling dependencies.

If all Unix utilities work as is on Windows -- cat, awk, grep, sed, etc. -- without recompilation, then this is the last straw that can break the Apple Camel's back. To translate this; all your bash scripts, and associated automation, will work out of the box in Windows. To make this more interesting, this is not a price sensitive market -- employers pay top dollar for developer laptops. Therefore, the ASP of Windows laptops increases, thereby enabling Microsoft to sell their own line of laptops and convertibles at higher price-points (ergo, higher profits). In other words, Windows is *finally ready* to capitalize on the opportunity afforded by the negative reaction to Apple's new MacBook Pro lineup.

The missing piece for Windows 10 is street cred. Which is where this post comes in: I challenge an intrepid, influential developer from Facebook, Google or Amazon to attempt to replicate their development workflow -- code, build, debug -- on Windows using native Linux tools, and post their findings. If Gabe's (from Penny Arcade) experience is anything to go by, the Windows support team is hungry and will do whatever they can to fix any issues that prevent this captive audience from executing their workflow efficiently. Maybe Windows 10 is not there yet, but it's only a matter of time. More choices are better for developers, everywhere.

You want to get Apple's attention. I cannot think of a better way to do it than voting with your wallets...

1 comment:

  1. Hey Manoj: Great post: Glad you're having fun with Bash :)

    Thought you'd be interested in Brian Ketelsen's recent post on this very subject - he's just switched from being a long-time Mac user to Windows 10 on a SurfaceBook :) https://brianketelsen.com/blog/switchers/

    ReplyDelete