Hacker News new | past | comments | ask | show | jobs | submit login

Download my great free Windows program now! Please choose:

    EXE installer     32-bit x86   64-bit x64   32-bit ARM   64-bit ARM
    MSI installer     32-bit x86   64-bit x64   32-bit ARM   64-bit ARM
    Portable Zip      32-bit x86   64-bit x64   32-bit ARM   64-bit ARM

(Download my great free macOS program now!

     Click here

This is already a usability problem, and adding 2 more target chipsets makes it worse.

Given both bandwidth and smart programmers, couldn't Microsoft make an installer creator that works on all the above architectures and installs the right version of the program? No problem shipping 4x too much code right - most installers that are big at all, are big because of assets, not code size.

I guess politics vs the Windows Store team would prevent this from happening within Microsoft, but given how awful the Windows Store is and how it still can't be used to download and install boring oldschool desktop applications, this is a usability nightmare waiting to happen - despite the obvious benefits of not being locked into a single chipset architecture anymore.

This sounds like an application/website problem rather than an operating system problem. You don't need to distribute both an EXE and an MSI installer. That's like distributing both a .pkg installer and a .dmg/.zip for your Mac program. Just pick one technology. Most programs don't need both.

You don't need to use Microsoft's installer technology either. Installers are simple programs. You can roll your own or use third-party installer technology like NSIS. I remember old versions of Chromium had a very simple "installer" which was just a dialog that ran on first launch and asked you for some basic settings.

The architecture problem is easily solvable too. Simple programs can just target the lowest common denominator (32-bit x86.) You can simulate "fat binaries" by having a 32-bit x86 wrapper program that includes builds for other architectures as data, extracts the correct one to the Temp directory and runs it (I think Bvckup 2 does this.) For large programs, you can have an online installer which picks the right version and downloads it (with options on the website to download an offline installer.) Also, the website itself can point the user to the correct download. It doesn't even need JavaScript to do this, since the user's architecture will be in their user agent string. Use this information to emphasize the correct option in the UI. Maybe even hide the other options behind an "Other downloads" link.

You don't even need to bother with 32-bit x86. Nobody has 32-bit x86.

The ARM emulator only runs 32-bit x86 binaries.

I encourage anyone who wants to know how to manage software transitions to watch Apple's presentations about Next, Rhapsody and OSX between 1997 and 2000. This was IMO a textbook example of how to move over a whole ecosystem to a more modern underpinning, even under very difficult circumstances (where Apple's leadership first had to think about how they can survive another year even).

Sounds intriguing, could you offer up a more detailed insight or a link? :-)

Basically, you get a corporate drama, a human drama and a tech drama all wrapped up in one series of presentations:

Jobs' return (as a consultant) 1997, promoting technologies from NeXT. Watch basically everyone asleep at the wheel except Jobs, the man with a plan. https://www.youtube.com/watch?v=4QrX047-v-s

WWDC Q&A - 'the art of saying no' https://www.youtube.com/watch?v=6iACK-LNnzM

Jobs' hostile takeover in July by doing a (probably illegal?) stock dump https://en.wikipedia.org/wiki/Gil_Amelio#Apple_Computer

Announcing a Deal with Microsoft as de facto CEO in August, booed by the crowd https://www.youtube.com/watch?v=IOs6hnTI4lw

Internal meeting in September 1997 https://www.youtube.com/watch?v=9GMQhOm-Dqo

iMac introduction 1998 - Apple is back https://www.youtube.com/watch?v=oxwmF0OJ0vg

Macworld 1998 - Apple is essentially saved as a company https://www.youtube.com/watch?v=gdYiqVzPjAc

OSX Strategy reveal (if you only have time for one presentation, watch this one) https://www.youtube.com/watch?v=E5dWDg6f9eo

1999 - OSX Server launch https://youtu.be/NuCYHrSig94?t=48m40s

2000 - OSX launch https://www.youtube.com/watch?v=Ko4V3G4NqII

I find it interesting to hear how important developers were in the 1997 video. I feel like the first Intel Macs were indeed machines build for developers. But since, like, Snow Leopard, the developer experience has either stagnated or regressed. The command line tools are ancient, managing packages has been left for Homebrew and the like, etc. Macs more and more become pure Facebook consumption machines.

Basically they had to attack the problem from the chicken side. Nowadays there are so many eggs (users) that the chickens (devs) come free. At some point not catering to them will likely backfire however.

Note that in the 1997 video, everyone in that room was Mac application/hardware developers, and the Mac ecosystem at the time didn't intersect much with the Unix/Linux world at all.

It wasn't until OS X that Unix/Linux developers started coming to the Mac. (see this 2002 Mac magazine ad: "Sends other UNIX boxes to /dev/null." http://xaharts.org/funny/Apple_Mac_OS_X_Unix_ad.html)

1. I don't think it's going to explode the compatibility matrix... it seems to run unmodified x86 executables on ARM.

They demo Photoshop running on a Qualcomm processor: https://www.youtube.com/watch?v=A_GlGglbu1U&feature=youtu.be

2. Existing "desktop app" authors can opt to package their app in a way that will make it possible to distribute through the Windows Store.


You can also run 32-bit apps on a 64-bit OS (also because of an emulation layer), but still people offer 64-bit downloads of programs. Why? Speed and memory. With ARM it'll be similar.

I hadn't considered that. I assumed this was only x86 desktop apps on ARM via emulation.

If they're going to let people build/distribute native ARM binaries for Windows 10... then I'm even more impressed. I guess I would've expected that to be mentioned though.

If this is the case, that would certainly invalidate my comment about the compatibility matrix. I guess in that scenario, I'd agree and hope that those folks are working on a "fat binary" or "universal binary" or something to aid with the potential confusion.

> If they're going to let people build/distribute native ARM binaries for Windows 10

Hasn't that been possible since Windows RT?

Sort of. Windows RT only ran Microsoft-signed ARM binaries. Hence why I assumed it would've been an explicit announcement if they were allowing devs to distribute native ARM executables.

Windows RT supported C/C++ "native" compiles for ARM, so long as you published it to the Store and used the WinRT runtime/lifecycle. It just didn't support Win32 binaries compiled to ARM outside of the exceptions for Microsoft's own applications.

I don't think we have details if the new plans include allow developers to cross-compile Win32 apps to ARM, in addition to the x86 emulation.


"it still can't be used to download and install boring oldschool desktop applications"

it can.


Are you sure? Afaik you can convert most apps to UWP apps but they don't have the same rights and capabilities as the oldschool desktop apps. I don't exactly know what the limits are but I doubt stuff like Wireshark or f.lux could run as an UWP app.

You can now publish win32 binaries to the Windows Store, which run in a virtualized environment. They get the same rights as normal win32 exes because they _are_ exes.

I'm still confused. Why are they run in a virtualized environment then? Can a Windows Store win32 app change system display gamma settings? Monitor all network traffic?

From what I've seen, most of the virtualization that remains is filesystem/registry virtualization, primarily with the goal to insure clean install/uninstall. Security is handled in most of the usual Win32 manners (user token privileges, UAC, et al).

From your examples, I believe gamma settings would be accessible, but every tool I've seen that reliably monitors all network traffic uses a kernel-level driver and I don't think you can install kernel-level drivers from the Store right now.

Awesome. This makes me wrong and my entire rant flawed. Thanks!

Wasn't one of the points of the .NET Framework to make architecture independent apps? The CLR is compiled to the native instruction set, but apps are only compiled to IL and thus are dynamically recompiled to the native instruction set.

So, ideally, you'd just have one download.

And this is exactly how it works with Windows Store apps. You upload .NET bytecode, and the Store delivers the correct compiled-to-native code for the user's architecture.

You can also make fat packages, if you don't wanna distribute through the store.

Yes. It is promoted strongly inside MS, however it seems it is not much used by them.

macOS (nee OS X) has supported PPC (32-bit and 64-bit), x86-32, and x86-64 over the years. Furthermore there are plenty of applications that require 10.6+, 10.8+, etc. I get your point, but macOS is at least at fragmented as Windows in terms of needing multiple binaries.

macOS can support all three of the platforms above with a single fat binary.

You are mostly right, I had forgotten about fat binaries. However, 10.6+ only supports x86{-32,-64}, and and 10.8+ only supports x86-64 [0]. Having Windows 10 (?) support 4 architectures is a feature, in my opinion. But, I'd still agree fat/universal binaries would be a usability enhancement.

[0] https://en.wikipedia.org/wiki/Universal_binary

Aside from universal binaries, Apple's approach to 64 bit also provided a better user experience. Microsoft required you to choose either a 32 bit or 64 bit version of Windows, with the 64 bit version breaking driver compatibility. Apple enabled 64 bit apps to run atop a 32 bit kernel, enabling driver compatibility, at a slight perf cost.

Probably these new ARM machines won't support legacy hardware, though that may not be relevant nowadays.

10.6 could also run PPC binaries if Rosetta was installed. (It wasn't installed by default, but was an optional install from the installer disc.)

Looks like trying to pick the installer for Linux except there are also different distributions.

It's not really different from choosing among 32 bit or 64 bit programs, or even, for Linux software choosing the package that's best for your distribution. It's not really a pain point. People can read. People who use Windows and Linux know how computers work. People are smart. People should not be babysat by their operating systems. It's gonna be OK. Don't worry.

Well, one guy I work with, I've had to install DraftSight for him on three computers now.

In my head I think "Google download draftsight, click click, how hard is that?", then I remember some of the guys I work with csn hardly read but at least this guy can draw rectangles in DraftSight.

I put Linux on my SOs laptop, she llove it, but I still have to remind her to install updates occasionally.

The right balance for notifications, nagware, user interaction, download and installing things, is hard.

There was literally a post about this on HN yesterday [0]. I'll accept that people using Linux are better at computers. But Windows is too broad in terms of user skill.

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

Am I missing the sarcasm tag here?

If only...

If they want the surface phone to be a slam dunk they need to give it ability to run android apps as well as UWP and emulated win32, if the could get a license from Google to merge in the android app store with the windows app store it would fill in a lot, add the ability to run win32 and the ubuntu for windows console and you have a pretty killer does everything device.

And that's how you plan to build something that never materializes; not to mention the horrible user experience in dealing with so many different types of apps with different philosophy and UI.

Registration is open for Startup School 2019. Classes start July 22nd.

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