
Linux on Windows Doesn't Matter - JustinGarrison
https://medium.com/@rothgar/linux-on-windows-doesn-t-matter-ebff48e6f8c7#.teluvvtor
======
CyanLite2
Author must've missed the entire Ars article and the entire past 3 days of
Microsoft Build.

1) You have to develop on a system before you can deploy your app to a
container. How else are you going to do your inner loop
(code/debug/code/debug)? Not sure the author has ever done any real
development before.

2) Microsoft announced release of its Cloud Functions last week as well.

3) It's in developer mode preview because... well it's still in Beta. In fact
it's not even available for Beta users yet.

4) Running Linux through a VM isn't the same experience that OS X gives (a
Unix-y integrated desktop). The point is nobody wants to start up a VM with
8GB of RAM just to run some console commands. That's a much worse workflow
than hitting Win+R and typing "bash" to open a bash prompt and have one
contiguous file system without all of the overhead. No native OS can do good
snapshotting without using a VM. Not sure why the author even brings this
point up. If you absolutely need snapshotting, use a VM by all means! But, in
any case WSL will provide a way for you to "clean" your environment. But who
the hell wants to run an entire VM just to be able host nginx if they don't
have to?

5) Not everything can run on Cloud Functions. It's good for very simple apps
to resize images or API endpoints to return you the time of day, but it's very
limited. You're not going to write the next social network or eCommerce site
using only Cloud Functions. Real developers are writing real enterprise-grade
web apps on Linux. This wasn't about catering to the Wordpress crowd who are
writing 15 line of NodeJS for AWS Lambda. This was about creating full cross-
platform Apps using .NET Core and being able to run/test it on Linux and also
use some new Linux tools (Redis for example) without having to go to VMs or
resort to buying a Mac. If you really need Cloud Functions, well now it's
available through Azure!

6) Author misses the entire point. This was about competing against OS X both
at a software and hardware level. They can sell more Windows licenses now to
OEM vendors because folks like Dell/HP are going to move more products.
Before, a developer had one choice if they wanted a good OS "that just works"
and a Unix-y development environment. Now those Dell XPS13 "Developer Edition"
laptops look very competitive against a Macbook Pro. I can still have Visual
Studio but still use all the hipster tools like Redis, NodeJS, NGINX, HAProxy,
Ruby, Python, RabbitMQ, without having to use their half-assed Windows ports
that are several years behind the master repo.

~~~
JustinGarrison
Admittedly I didn't watch any of build. I only followed news as I saw it come
out and people online discuss it.

I'm not sure I know what you consider "real development" but that's not the
argument I was trying to make.

Linux does snapshotting just fine. LVM, Btrfs, and zfs have no problems taking
snapshots. WSL doesn't get any of those features.

I'm making the argument that enterprise-grade web apps will not require
developers to have Linux (or WSL) to run and test applications in the future.
Developers won't have to care exactly how their code is being run to publish a
web app. They just want the code running.

~~~
CyanLite2
Lambda/Functions are mostly for very simplistic tasks. Resizing an image into
thumbnails and storing it into S3. Saving the IP address of a request into
DynamoDB. That sort of stuff.

You can't write enterprise-grade web apps with Lambda/Functions (yet) because
they only support native PaaS storage mechanisms (S3, DynamoDB). You can't
read/write to a database. You can't make TCP calls to another service. You
can't do multithreading. You can't "import" other libraries. You can't do a
whole lot that "enterprise grade" web apps will need to do.

It's still easier to do PaaS with Azure by developing your code local,
debugging it local, then deploying it into a container for the Cloud.

------
ashitlerferad
The container section of this was surreal. The WSL makes it far easier for
Microsoft to natively support Linux containers. In fact, I would say that
containers on Azure are probably most of the reason for WSL.

------
f0code
Author almost tricked me into installing Ruby. Well played, sir.

------
WorldMaker
I can't resist answering the rhetorical seeming questions this article asks,
mostly because they've already been answered in the Ars article this one links
to, or its comments, or at worst the Channel 9 video on the subject that takes
only about 15 minutes of ones time to get all the fun juicy technical details.

«WSL is tucked away as a developer feature which then needs to download an
Ubuntu image which then allows you to apt-get a package. Who’s idea was that?»

It's actually a very old idea in Windows. The NT kernel was designed to
support multiple subsystems that don't necessarily act the exact same. We're
all used to the Win32 subsystem, but there's been two (!) previous POSIX-
inspired subsystems for NT.

This project is (as the Ars article points out) making Lemonade from the
lemons of "Project Astoria" which ran and tested unmodified Android apps in
Windows 10. Rightfully, Microsoft and the community agreed together that there
was a danger here of "BlackBurying" the platform on Mobile here if you could
just install Android APKs mostly unchanged. So Microsoft looked at who else
could use unmodified Linux binaries in their lives and the answer they came up
with was "Developers, Developers, Developers".

The sweet tasty surprise from this Lemonade here, for developers, is that
unlike the two previous POSIX Windows subsystems, Microsoft has teamed up with
Canonical to deliver us ELF compatibility to the point where they can bundle
the unmodified user space binaries of Ubuntu as a Windows 10 "app" for
developers.

«That sounds like a terrible development workflow. How do you manage the
(sub)Linux system? Is there a os -reset option to give you a new clean
environment to develop with?»

It's not a full OS, it's not a VM, it's just Windows running Linux ELF
binaries for you. There's no reset tools, yet, but talk of something. That
said, there's the Big Reset Button in the Windows Settings and the entire
Linux user space you are working in (including all of its users) is stored
under your user %LocalAppData% folder on your system and you can use Windows
Explorer to wipe it all away if you feel inclined. An "easy" way to get a
clean one is just to run under a different Windows account.

«Should you apt-get dist-upgrade to a new Linux release?»

The amazing thing is that you _can_. The great thing is that you may not have
to, it may also be just an "app upgrade" away.

«A proprietary and invisible layer on top of an un-automatable OS is not going
to cut it. Developers want dotfile repos, they want text configurations, and
they want small and composable tools.»

Windows is not that terrible to automate. There are books and books on
PowerShell automation scripts to get Windows to bend to your will from the
command line, and more power available to PowerShell in every PowerShell and
Windows release. The amazing "secret" here is that big enterprises have been
automating Windows for decades...

It seems like the ultimate complaint here is that Windows itself is still not
Open Source, but that doesn't mean that this Ubuntu on Windows "doesn't
matter" anymore than the fact that you can pull up a bash shell on Mac OS X, a
nearly equally proprietary OS, "doesn't matter".

~~~
Zachery
Developers want machines they can develop from. Windows will be a choice for
this again, at least as much as OS X is.

~~~
WorldMaker
I agree. I hope it helps win back some of the "MBPs are better because Bash"
crowd.

