Hacker News new | past | comments | ask | show | jobs | submit login
Windows Subsystem for Android (microsoft.com)
145 points by ethanpil on Jan 26, 2022 | hide | past | favorite | 120 comments

In order to be available on a Windows 11 device...only a small set of apps selected by Microsoft and Amazon are available.

WHY? Maybe give me a warning when installing, but at least let me try.

I hate how Apple gave devs the choice to make their apps unavailable on MacOS, so even though I can run theoretically run iOS apps on my M1 MBP, there are no apps I care about available for MacOS, so the feature might as well not exist.

At least with Android you can sideload the APK, so that's a plus..

you can sideload on WSA too! Though turns out a lot of stuff doesn't work if Google Play services is missing, so you might also wanna patch the system image to include OpenGApps.

I wonder if you can side load the Aurora Store or F-Droid

Yes, you can.

These titles are so confusing.

I thought it could run windows applications on Android.

I think it was called "Windows Subsystem for Linux" because they were originally emulating Linux syscalls (and some other kernel features) with Windows calls in WSL1. Now that WSL2 is all hypervisor-based with VMs, the name doesn't mean anything. But it has some momentum and name recognition, so they stick to it both for WSL, and now WSA.

It's one single quote away from being unambiguous.

    Windows' Subsystem for <whatever>

That doesn't explain the order

Subsystem is specific terminology in the Windows ecosystem.


Is it clear? No. Is it grammatically fine? Yes. It references the Windows kernel as the core piece here, not the subsystem

Source: I work on Windows.

If we rewrite based on the SO answer it could also have been named "Windows Emulation Layer for <whatever>".

> Windows starting from NT (NT 3.1) is able to support semantics of different operating systems (or OS families) that existed at that time (1993). Microsoft called them Subsystems (today they would probably call them emulation layers).

they aren't really emulators, though. and even if they are, calling them emulators hides too much of what they really are.

it's an NT kernel subsystem which runs Android applications.

the NT kernel was always designed to support multiple simultaneous subsystems, so they are named "Windows Subsystem for [whatever]" because they are individual windows kernel subsystems for [whatever].

anyway, just accept the naming. the naming is set and won't change. your time is better spent on more meaningful stuff anyway.

What order? Do you mean why wasn't it called "Linux Subsystem for Windows" ? I can see that argument.

Even better: "Linux Subsystem in Windows".

I suspect this is due to trademark laws. I've often seen policies that say "you can write 'yourthing for Trademarked Thing' but not 'Trademarked Thing yourthing'", e.g. when it comes to inofficial clients for a platform.

I think they simply applied the same principle here.

Yep, you can read [Google's brand guidelines for Android here.](https://developer.android.com/distribute/marketing-tools/bra...)

>"Android", or anything confusingly similar to "Android", cannot be used in names of applications or accessory products, including phones, tablets, TVs, speakers, headphones, watches, and other devices. Instead, use "for Android".

Welcome to Hacker News, Mishaal! Glad you made it eventually. :-)

I'm anywhere Android is being talked about :)

I hadn't thought about that, but it seems likely. I remember when Reddit decided to enforce their IP rights more and forced all applications with Reddit in their to change to something that either didn't use the name Reddit at all or only used it at the end in the form "for Reddit"

I guess they think of it as "[a] windows subsystem for [running] android". Or put in a different way "android running on a windows subsystem".

I think they're just following the naming scheme from WSL

This confusing naming goes back over 20 years: https://en.wikipedia.org/wiki/Windows_Services_for_UNIX

it's not confusing, though.

A new name following a confusing scheme is still confusing

I know WSL, but I was still confused. Maybe I'm just tired.

I need a new Windows subsystem.

Which Windows subsystem do you need?

I need the Windows Subsystem for Android.

I'm not away of any Android Subsystems that can run Windows (or Windows applications). But these are Windows subsystems, so that's OK.

shrug I personally don't find it confusing. If there was a way to run Win32 applications or Android, it could be Win32 on Android, or the Android Subsystem for Win32 Applications.

Two interesting notes that I found here:

1) This also utilizes a VM for the Android system, like the Linux one.

2) "Unlike traditional mobile form factors, Android apps running on Windows 11 can be freely resized, should be responsive in their resizing, and can be snapped using Windows actions/gestures."

I was under the impression that Google had already worked out resizable windows in Android to allow for more flexible form factors and the Android layer on ChromeOS, so that might have been mostly a freebie.

So unusable if I want to run my own VM's in virtual box/vagrant etc?

Last time I messed around with it when vbox said they'd fixed it to use hyper-v, I wasted 6 hours to end up back with wsl1 and working VM's instead of wsl2 and nothing else.

Does it also make Android development easier on Windows? i.e. can I build an Android app and open it via the subsystem, without having to run an emulator?

Would it be any smoother? The official dev emulator runs Android in a VM, and this runs Android in a VM. So the points of differentiation are speed (does the SDK VM use hardware acceleration?) and integration (I'm guessing WSA doesn't play nice with attaching a debugger, and the SDK VM, AFAIK, just gives you a single "screen" in a window). So... maybe?

Though this won't be as smooth, this is reminding me of the Maemo days. I had made adaptive abstractions for GTK / Maemo's patches and would develop my applications using PyGTK on the desktop. When I was ready for a release, I'd just scp the source over, do spot checking, and release my packages. That set the bar high enough for developer experience that I've never gotten into Android dev since Maemo died.

If you're looking for a quick way to determine if your favorite app will run well in WSA, check out this table I created (and the community contributes to).


Bumpy road ahead it looks like. Do you have any statistic on how many apps are broken, works etc. Any insights into the types of errors? Are they mostly in the same class or is it all kinds of different types of errors?

Think most of the issues come down to either lack of Google Services or lack of GPU acceleration (which I believe is possible, just not well documented). Will investigate the latter.

Interesting that it's the Amazon App Store. I assume they couldn't get Google Play and picked the second largest Android store?

I can’t imagine that Google was willing to play ball on this. Google has aggressively leveraged their control of their properties to block Microsoft in the past (e.g. YouTube on Windows Phone). I expect that Microsoft reached out to Google about Android support on Windows and Google promptly said that they aren’t going to give up a Chrome OS advantage.

Disclosure: I work at Microsoft. But I have no insider information on this.

From what I remember, Google have specific conditions when it come to YouTube which ads is one of those conditions. I recalled Microsoft have a YouTube app didn't shows the ads which violated their term of services. Amazon did similar and that lead to corporate war against Google since Google put their foot down.

Microsoft rebuilt the YouTube app following Google’s own guidelines and it was still blocked. At least that’s my recollection.

I managed to find the article that discussed about this second rejection [0]. And Microsoft response to the second rejection [1], I have to use Wayback since MS returning 404 for their blog.

[0] https://www.engadget.com/2013-08-15-google-blocks-windows-ph...

[1] https://web.archive.org/web/20130816024629/http://blogs.tech...

Very disappointed that Microsoft recently killed all support for office android apps on Chromebooks asking users to use the web version instead (which has all sorts of limitations even considering the android apps having limited functionality in the first place but atleast allowed offline access and some quick non-web features)

So now we get Microsoft trying to get android apps into their own devices instead. I would say Google should insist that support for office apps come back into chromebooks if they want any sort of support but no they wont as they are saying "we are happy chromeos is a great option for office (web)apps"

The windows "cloudbooks" were never worth a look - I guess this is how large companies behave. (I have no hatred towards any tech / company - use android / linux / chromebooks / windows all the time - just bizzare that well functioning android apps are now being taken out of chromebooks)

references : https://www.aboutchromebooks.com/news/microsoft-ending-chrom...

> I would say Google should insist that support for office apps come back into chromebooks if they want any sort of support…

Given that Microsoft is using the Amazon App Store, it’s a safe bet that Google is not providing any sort of support. If Microsoft could use Google Play Services, I imagine they would.

That's frustrating considering what a fuss they made when they launched those apps.

To clarify, I'm not surprised Google Play didn't work out. I'm surprised they picked Amazon specifically.

Amazon seems to be the store of choice for "non-sanctioned" Android things. It was the official store for Blackberry when they put their Android emulator on their phones too.

I mean, if it's not Google, what's the alternative?

Google Play has specific restrictions on what it can be bundled with (it can be sideloaded latter without issue right now).

google has announced their own version for games. https://arstechnica.com/gadgets/2022/01/google-brings-androi...

You can still sideload the Google Play Store and install apps from there. It just requires a couple of extra steps.

Maybe Microsoft wants to keep Windows their advertising sandbox therefore working with the largest advertising company in the world wasn't seen as wise. Whereas Amazon's whole thing is just about ecosystem building/device tie-ins, so there's less conflict of interests (Microsoft after all doesn't make many of the devices or services Amazon does).

First it was Windows Subsystem for Linux.

Now Windows Subsystem for Android has been added too.

It is the OS/2-ization of Windows as more subsystems are added to try to make Windows a clearinghouse for any possible desktop use.

What could come next?

Windows Subsystem for Xbox - so anything that plays on Xbox will play on Windows

One of the first subsystems for Windows NT was the OS/2 subsystem. Some versions even supported Presentation Manager (GUI applications).


Never used that one. Makes sense though since NT grew out of research on OS/2 v3. The Posix subsystem[0] didn't work so well the times I tried working with it. The OS/2 subsystem didn't matter so much as Windows NT popularity outgrew that of OS/2 pretty quickly.

> https://en.wikipedia.org/wiki/Microsoft_POSIX_subsystem

If they open sourced the POSIX subsystem, it might have had a chance to keep growing.

Another original subsystem was POSIX subsystem which provided a UNIX-like layer on Windows.

The design of the NT kernel was very well done and doing this type of thing is one of their explicate goals. Microsoft did a great job of getting great people to do great things in the early 1990s and they are still benefiting from that. (though in the 1990s computer hardware wasn't really up to running NT)

If that's like WSL2 that's a complete VM. And WSL1 was already departing from the trasitional NT subsystems anyway (because e.g. they were not designed for completely bypassing NT userspace to the point of not mapping it)

The hardware was just fine - in fact, your average late-'90s piece of junk would run NT much faster than Win95/98. The problem was the lack of drivers.

Win98 maybe, but that is borderline. Your average piece of junk computer from the Win95 era didn't have enough memory, but that is also mid-90s. By the late 90s high end machines were coming with enough memory, though the low end machines still weren't up to it.

Drivers of course were an issue.

PCs don't have the hardware security infrastructure at the moment for Microsoft to feel comfortable adding Xbox support. Even the previous gen never put decrypted content into RAM, which is part of how it became the first major console to not get hacked in it's lifetime.

Eh, I think the developer mode option they gave had at least some effect on dampening hack attempts.

Retro/emulation/homebrew fans could use that as to do what they wanted, and thus weren't working on cracking the system alongside pirates.

To add to that list, Windows subsystem on Windows aka WOW64.

Some commentators at the time said that supporting windows apps on OS/2 significantly contributed to its downfall. It meant that developers only needed to write their apps for Windows and OS/2 users could run them too.

Perhaps we will see a reduction in certain classes of windows apps (slack?).

> Windows Subsystem for Xbox - so anything that plays on Xbox will play on Windows

I think Microsoft will just stream Xbox games through the cloud for Game Pass subscribers. That way, you get Xbox games on PCs, Macs, smart TVs, you name it.

They're already doing that with Xbox Cloud Gaming[1]. You can use the Xbox app or a browser.

[1] https://www.xbox.com/en-GB/play

I mean, that wouldn't be hardest thing in the world to do, afaik, XBox OS is a windows kernel ...

They are already offering all Xbox games on PC going forward. It's part of their strategy lol.

Windows subsystem for PalmOS

I seem to remember hearing a rumor that WSL was originally intended to be a WSA, but that failed internally for some reason so they cleaned it up just enough to run console applications and shipped it as WSL1?

> that failed internally

Was available in public beta on Windows 10 Mobile Insider Preview.

I mean there were public betas of Longhorn too, and I'd consider that failed internally as well.

Longhorn became Vista no?

What got released as the Longhorn beta is before the 'development reset' that then became Vista.

Yes. More than a rumor. Look up Project Astoria.

The rumor was that WSL1 was the leftover codebase from Astoria, not that Astoria existed.

Right. I was conflating Project Astoria and Drawbridge.

I assume they tested with industry standards, which is to say it will run Doom.

Android industry standard is TikTok, and yes, it runs that.

I was wondering with WSL already: why is it not called “Android Subsystem for Windows” but the other way around. Is there a historical reason for it to be called that way?

OH Thank You. Now I feel much better. Still dislike the name but my brain is much easier on me knowing there is a valid reason behind it.

Windows NT is historically made up of several subsystems that use this naming scheme, so they decided to go with it again.

It is "[The] Windows Subsystem for [running] Android"

I think they are just following the naming convention started (a long time ago) with "Windows Services for UNIX".

Windows first, because Microsoft wants their OS to not give any lime-light to Linux or alternative OS's.

If they felt that way, they probably wouldn't be building the thing in the first place.

Microsoft's OS runs Google's Apps on Amazon's app store.

Screw up Apple.

So you can watch Netflix on a Google Android application from Amazon's app store on Microsoft's operating system?

And you can run Facebook Messenger/Instagram/etc. on Android apps..

Better than your only option is: Apps from Appstore on Apple's OS with Apple's hardware that all named iLockYouUp. It gets boring. :)

Yesterday I commented here [0] that having a phone running NT (because it maintains a strong ABI compatibility) with an Android Userland (for app compatibility) would solve the 3 years support window most android phones have (because of patched kernels the devs won’t care to update and recompile to the latest version).

I wonder how well this subsystem could run on existing phone hardware. There are, after all, Nokia phones that are running NT kernels (the last windows phone on the market).

[0] https://news.ycombinator.com/item?id=30079874

There's always https://www.android-x86.org/

You can run a full-featured Android on any VM on a PC or Mac.

The integrations here are far better than what you'll achieve trying to make your own VM. If you're just looking for Play Store / Google Play Services there are already ways to load those that are much less work.

On Linux there is Anbox as well which can be native ARM64 or x86 without virt (run as a container). Not sure of alternatives on macOS but I wouldn't be surprised if there was something better than a raw Android VM there as well.

Does this mean WSL will be enabled by default on Windows, or at least that you can enable it without admin rights? That would be handy for draconian corporate environments.

No. What would lead you to think that's a possibility?

Seems a bit odd to tie a developer only feature to a consumer app store. Makes it feel like WS* will move towards a streamlined consumer facing feature.

I don't think it's a developer-only feature. My point was more that WSA and WSL are separate and even if WSA becomes a default feature, that doesn't mean WSL will.

Because WSA (I believe) is implemented as a WSL distro, so you'd need the feature installed for it to work.

I tried it in a VM with 4GB RAM and it does not work as it needs more memory.

If you do that it seems you have to do nested virtualization

Then it's not really like WSL, which is not using a VM. But, well, of course, as Android is mostly not on Intel.

WSL2 is virtualized and no longer a traditional windows subsystem (and it never really was traditional from what I gather, compared to the OS/2 and Win32 subsystems)

How well does the ARM emulation on x86 work performance wise I wonder?

Assuming it's just x86 Android (which does exist), it would just be using the Dalvik VM. So no ARM->x86 transpiling; just a JITter

Lots of apps aren't pure JVM apps, and many apps with native components don't ship x86_64 versions of native libraries.

There were a decent handful of x86_64 Android phones released, so it's not that uncommon. Decent apps ship a couple flavors of arm, mips, and x86. Of course, not all app developers care that much.

Still doesn't tempt me to "upgrade" to Windows 11.

you can always spot the "people" who have "problems" with normal "things" because they always "quote" random words in order to bring the "legitimacy" of the "words" into "question."

we all find it quite "annoying".

Yes, I am bringing the legitimacy of the word "upgrade" into question when changing the operating system from Windows 10 to Windows 11.

For me it's a significant decrease in usability and the feature of being able to run some selected Android applications from a single selected marketplace doesn't make me want to install the newer operating system at all. It's a rational choice to quote the word upgrade because it doesn't mean that to me.

Next is iOS?

I don't care if MS is a huge company, I cannot take this seriously with the ridiculous doublespeak.

The last thing was a Linux Subsystem for Windows, and this is an Android Subsystem for Windows.

This is a Windows subsystem. It is a system that runs inside of Windows, so it is a Windows subsystem. What is this subsytem for? It is for running Android (or previously Linux) applications and software. I agree that it is confusing, but I think it is incorrect to say that the name is outright wrong.

To be fair to op I did expect this to be a link to something that allowed Windows to run on Android as well.

In software 'for X' commonly refers to what it runs on. 'Doom for Windows' would run on Windows. A Windows subsystem for Android immediately implies a Windows subsystem that runs on Android.

It's a very common usage and language is formed by the common usage. Microsoft have this backwards.

It also commonly refers to what it does. 'Doom for blind people' would not run on blind people. 'Doom for trackballs' would not run on trackballs, it would let you use trackballs with Doom.

> "It's a very common usage and language is formed by the common usage. Microsoft have this backwards."

Product names aren't formed by common usage, they're defined by the company which creates them.

>'Doom for trackballs' would not run on trackballs,

I wouldn't put that past Doom porters :D

At least it's short. Speaking as someone who used to be an "IBM VisualAge for C++ for OS/2" user. (s/developer/user/ edit for clarity)

I don't really think it's doublespeak as such, just the weird corporate perspective. They built a subsystem that supports Linux so "Windows subsystem for Linux" makes logical sense at least. I think with that (twisted) perspective "Linux for Windows" would imply a version of Linux that was for running Windows applications.

I wholeheartedly agree that "Linux for Windows" would be a better name for WSL, but I can see their point of view if I squint enough.

Also, at least this new subsystem is consistently named; if you know what WSL is it's obvious what this is.

It's a Windows subsystem for running Android. What doublespeak?

I think I remember hearing that they originally wanted to call it LSW instead, but couldn't put "Linux" first because it's trademarked.

It's more like Windows' Subsystem for Android.

https://en.wikipedia.org/wiki/Windows_Services_for_UNIX Similar name. And much older. Just imagine there's a '-' after the Windows.

I always read it as; Windows (Subsystem for Linux) not (Windows Subsystem) for Linux

Applications are open for YC Winter 2024

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact