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.
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.
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.
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.
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".
I'm not sure I would say enterprises have been "automating Windows for decades". Enterprises buy products and invest time in SCCM but it has never been as good as config management tools on Linux. It can solve some of the problems but because the OS is so controlled in hard to automate registry keys and %APPDATA% directories it's never as powerful.
I wish more people had switched to PowerShell a long time ago. I actually also wished Microsoft would have announced PowerShell on OS X and Linux. I would have been more excited for that. I haven't used it for a couple of years but back then (when they introduced DSC) it still had a long way to go.
9 comments
[ 2.9 ms ] story [ 33.7 ms ] thread1) 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.
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.
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.
«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".
I wish more people had switched to PowerShell a long time ago. I actually also wished Microsoft would have announced PowerShell on OS X and Linux. I would have been more excited for that. I haven't used it for a couple of years but back then (when they introduced DSC) it still had a long way to go.