As a Windows user, it's a surreal way to install a program
unsung.aresluna.org
unsung.aresluna.org
So, you download a file, and it's something called an "image" which opens in Finder like you'd inserted an external thumb drive. Fine. You open the image, and inside is... Your own Applications folder? Wait, how can the file I downloaded contain all of my apps?
This kind of indirection is natural to developers and other advanced users: the file you got from the internet doesn't really know about your Applications, it's a link to a generic system location that gets resolved by Finder. But for less advanced users it's oddly circular: this virtual disk that came from the internet has my data in it. It's something that never happens with an actual thumb drive.
But this really confused me when I first started using macOS as well. You're just expected to know that the applications folder in the disk image you just downloaded isn't actually inside of the disk image.
When I first opened a .dmg, I thought the arrow symbolised some kind of progress bar and waited for a moment to let it do its installation. That didn't work, so I copy-pasted the folder into my Applications folder manually. When I later opened a different .dmg that had instructions about how I needed to drag and drop myself, I actually realised what I needed to do.
i mean its neat from a minimalism perspective, but the decision to not ship with a regular installation UI in OG macOS X came with the tradeoff of not cleanly _uninstalling_ software either. config files etc were always left over.
but i guess - as Apple keeps locking down good old macOS X in favour of forcing software to go through the Apple Store this is going away as a sideeffect?
That's no different than windows or linux. The uninstallers leave configuration bits all over the place be it in the registry or config folders.
But they have regular installers, they are called .pkg and look like a wizard. Programs distributed as a single .app don’t really need them though.
They just see “oh, I drag the app to applications”. The main issue I’ve seen is that people try to run the .app from the disk image, or forget to eject the image after moving the app.
Well designed dmg drag-drop style deployments will actually put some background artwork with arrows and text instructions telling the user to drag and drop into Applications.
Still, I think .pkg package style installers are the most intuitive process for non-techies, especially those coming from windows where MSI and install wizard style exes are common.
Nope. It's an app that is simply the .app bundle, skipping the whole historical footnote of a .dmg completely. Once you first run it, it asks if you want to move it to Applications, and promptly restarts from its new location.
The disk image could put a background image with instruction visual, decide the visual placement of icons. Applications could include folders with brush packs, example documents, user manuals and such.
The fact that it was a disk image could be seen as confusing if you read that closely, but if you ignore the file type it was simply an icon that you could double click to open a piece of installer UI.
(The biggest issue I'm aware of is that if you have an old version of the app indexed anywhere on your root drive - for example in ~/qa/app-v1.02-DO-NOT-DELETE - it will literally stomp over that instead of installing the app to /Applications, even if the developer manually specified the install location as /Applications in the manifest.)
But for uninstallation, not a chance. There's no Mac equivalent to Add or Remove Programs on Windows - once you install a PKG good luck uninstalling it.
As someone originally coming off of RISC OS[1] way back when, the mac way is closer to intuitive than the windows way, while Linux's approach of splitting files across the entire FS so that you can't possibly find all of them is "The Real WTF".
(Nixos is even further from that original intuition in a lot of ways. Oh for the days of drag-dropping the !App dir to wherever you happen to have space; and maybe dragging it to !menon if you needed to actually find it back )
[1] The operating system that came with a thin welcome booklet with reassuring pencil art explaining how to hold a mouse, and what the difference between a click and a doubleclick was. [2]
[2] https://archive.org/details/risc-os-5.28-user-guide/page/6/m... Oh wow, still exists in the RISC OS 5 manual. This kind of manual used to be famed : Eg. Chapter 1 introduces what a desktop is; Chapter 2 explains the mouse; 3 Explains the keyboard ; 4 explains what a window is. Give a motivated naive user this guide and there's a small chance they might actually grok the thing when they're done.
On the other hand it has package management so you don't have to worry about it so much.
You can drag the app to a different location. I have an entry level mini 8GB/255 GB SSD with 1TB external SSD. Everything goes on the external. There are only a handful of apps that insist on being installed in the system Application folder. Even had xCode running on the external.
Uninstalling is supposed to be as simple as moving the app to trash but often that leaves a load of stuff behind that no one tells you about.
It's never going to be perfect. You can be really anal about it where you end up with iOS where, yes, you can sleep pretty well knowing that when you delete an app it has cleaned up after itself. The obvious tradeoff being that it's inherently limiting the scope of what you can do with the app.
I think it's gotten much better in recent years for the Windows crowd. I've been running the same install of 11 for about two years now. Back in the XP days I'd be lucky to be able to make it 6 months without feeling like everything was incredibly bogged down with no way out.
It does lots more, but this bonus is great.
Example of this would be the ability to open a can of soda. You can do it because you saw someone else do it. Now give the can to an Amazon tribe that never saw the can nor how to do it before.
Windows uninstallers also do not clean up the system and leave trash everywhere. The registry is often the most litter filed area. Even Microsoft's _cleanmgr.exe_ does not fully clean your Temp folder and a manual removal is needed.
As a user of a number of systems; Mac installation is the cleanest and most simple. Linux's closest would be AppImage packaged applications.
Windows is one of the worst because often they are un-scriptable and require the end user to always interact. Mac and Linux can script their installations with ease. I'm saying this as someone that needs to manage systems which are air-gaped and service by others.
So as long as an interface is consistent with prior interfaces I guess it is "intuitive"
I have never used mac, but it sounds like a good interface to me, not the .dmg one, that one is. weird. but where the application is self constrained in it's own directory. The traditional unix method where the parts go according to their function (/bin /lib /share and all the /usr variants) is fine when all the software is system software(promotes reuse) and sort of works when you have a sys-admin whose job is to incorporate third-party software as system software(central package systems also fit this category), But it really starts to stink when you have independent third parties packaging their own software.
Another way to think about it is what is the best hierarchy function/application or application/function
And then some dickhead put nipples on laptop keyboards and it was awful.
It is a niche use case but it made me a convert.
Also, AFAIK, this mirrors how command line utils would work.
- You used a trial version of a software, or other time limited license, and want to keep the output from that around.
- You are upgrading and that particular app requires uninstalling the old version before installing the new version
- You run out of disk space and want to uninstall a game but don’t want to lose you’re progress
That’s just what immediately comes to mind but suffice to say any workflow will have legitimate counter examples.
To be honest, I think the way Windows handles uninstalls is shit too. I don’t think either desktop OS has got it right.
Their respective app stores are an improvement on the status quo. But unfortunately they turned them into an ad riddled, proprietary mess that is more designed for their benefit than the end users.
It turned out Minecraft Bedrock was an UWP app.
It also turned out that UWP programs, unlike traditional Windows programs, store their data inside of the application folder.
So not only did it delete the game, but also the game world I had just spent two weeks working on.
(Apparently you're supposed to run the debloater before doing anything else with the computer!)
Same for uninstalling. Move to Trash and poof, unistalled.
There is no standard way to install stuff, so neither MacOS nor Windows deviates from something. For all the bickering about it here in the comments, no one proposed an “ideal” solution to install a program on Mac.
The Windows way is inherently clearer than what Mac does now. You always open what it gives you, and you don't need to be told to do anything else. Also, move to trash doesn't exactly uninstall a Mac app right now.
Its so idk redundant
A myriad of „uninstallers“ exist but these are all third party and rely on crowd wisdom.
macOS has similar multi-step prompts for some programs such as Microsoft Office, Python, FUSE-T, VeraCrypt, etc:
click [Continue] [Continue] [Agree] [Continue] [Install] enter password [Install Software] [Close]
Then deal with the various popups in the upper right portion of the screen relating to Login Items & Extensions Background tasks. Dismiss them by clicking [x] several times or drill into them to adjust App Background Activity sliders etc.
I also never understood why some apps put the x.pkg inside of a x.dmg which makes people perform another click. Seems redundant to do that. I can only guess is they just want the customized background image of the .dmg instead of the plain skeuomorphic cardbord box icon of the .pkg.
That removes most of the program files, but there is no chance for the program to run any cleanup process in the mean time. Library Support, .cache, and all other kinds of remnants remain and have no way of getting cleaned up without manual user intervention. It's like hunting down broken uninstaller files in Windows 98 all over again.
The places that need cleaning up after uninstalling a program:
~/Library/Application Support/
~/Library/Preferences/
~/Library/Caches/
~/Library/LaunchAgents/
Or possibly: /Library/Application Support/
/Library/LaunchDaemons/
/Library/LaunchAgents/
And possibly others that use UNIX-style .config/.cache rather than the macOS defaults.I do like the "folder as an executable" approach macOS has, but the way the ecosystem goes about program management isn't great. Storing caches and data inside of the app directory for applications installed to a user folder (not the global Applications folder, which would require administrative permissions) would go a long way. Entries in all the other folders could just be symlinks that don't take up any space after you trash a program.
As for installers, macOS comes with its own native install wizard format, akin to Windows' MSI installers. This seems to be the default way of installing programs that need things like drivers to function correctly.
Sometimes. Many apps do clean up after themselves.
On macOS that mechanism is simply impossible if you install the app using the drag&drop method.
On the other hand, I never had disk issues because of randon files inside the user directory, nor do I install/uninstall programs that often. And this I would venture to say is the same for most of computer users: Office, IDE(s), a browser or two and some utilities.
I have for example Goland, Postman, Chrome, Firefox and Wireshark. And some homebrew stuff like ngrok & friends. I spend most of the time in Chrome doing emails and using Confluence/Jira, Google Meet.
But Sequoia and up have strict management of background agents in "Settings / Login Items".
It fills up with so many broken references, duplicate entries, etc... I have no idea how a normal user is supposed to remove trash from that list. I pointed an agent at it, asking it to remove any broken references.
> Same for uninstalling. Move to Trash and poof, unistalled.
Of course it isn't, and you can do the same on Windows with the same "not really uninstalled" consequences
Since then I also read dmg as damage :)
A UI way to install is only a fallback.
macOS is on the surface the same. But seeing this causes a feeling of a deep gulf. How can we or Apple regain it? That special sense of value and care in the OS and its app developers?
Brew and other MacOS package managers are a testament to this. Package managers crafted with care around the user needs is always going to be the way to go.
This highlights something that's been a creeping issue for at least a decade if not longer: both MacOS and Windows are not built around the user anymore, for different reasons.
Windows is easy to see, it is now an OS as a service where the user is exploited right below the comfort threshold that will make them abandon the system (although for many this threshold was crossed long ago).
For Apple it's not as immediately obvious, but their forced obsolescence through constantly shifting requirements and tooling means that nothing lasts very long in the Mac ecosystem, you always have to upgrade, as a consumer and as a developer, rebuild, refactor, push updates and eventually be forced to replace your hardware. So you are basically caught in a neverending game of catchup and Apple is always a step ahead of you, by design.
Booting up almost any flavor of Linux is just leagues ahead in terms of simply letting you use your computer tending to your needs.
But I want to shout out for the way the progress bar of the video was made - I hate disappearing ones, but at least it doesn't obscure the content itself!
It's still mind boggling what the video controls in 2026 are treated like Flash ActiveX iframe.
What's surreal to me is the Windows Installation process, the concept of an installation process that allows any app to have complete unsandboxed access to the files of other applications. In the year 2026
At first the idea of dragging a file seemed unnecessary, I would have thought it's better for the installer to do that automatically, but now I understand that the user is in control, and the best installation mechanism is not the one with less clicks, users are expected to grant permissions to applications they control, and in this case they are showing the user where those files are, and that the installation is nothing more than moving a folder around.
Of course copied binaries can cause plenty of trouble too, but I have much less of a reason to give an installed program admin privileges than I do an installer.
In our case, the CLI is part of a data sync system, so it does need a "special" once-per-hour check for new data (keeping local and mobile in sync).
I've actually been surprised how strict Apple is before it will happily let signed code run. But the average user (including me previously) doesn't know that. I think trust comes down to being clear up front.
Note to self: Add extra details/options to installer (WYSIWYG)
The MAS version has only one of those and it works.
I prefer this one: https://mothersruin.com/software/SuspiciousPackage/
But I’ve used both at different times with equally great results.
Keep in mind that a package installer becomes obsolete and nonfunctional when the code signing certificate expires, unlike an app.
Why do I have to run an app before I can run an app?? Why do they all look different? Why do most of them insist on shoving other crap into my computer??
Copying a prepackaged bundle is the more intuitive way: You take something from outside and you bring it into your house/put it on your desk.
And then deleting it when you're done (leftover settings files being an optional "pro" step)
Let's not even talk about how "Alt+F4" remotely evokes "close/quit" and other weird shit Windowsers assume is normal.
But that is quite independent from the creativity people show in these install workflows. You could have both a cool .dmg and a proper uninstallation process (but we don’t, for the most part).
Don't knock on this feature, it can be a lifesaver if you've lost the license info. When you reinstall, sometimes the app can retrieve the license from old files.
https://github.com/alienator88/Pearcleaner
>if you've lost the license info
Or used up your free trial, you get a reminder it’s time to buy!
It’s a classic cloud vs disk debate about where and who should persist and own the data. Lately I think it’s kinda refreshing that it’s entirely on your disk and up to you.
It's not universal, but at least it's possible. Not having to hunt down random directories (or buying a program to do it for you) also has advantages to user control.
On Windows, it’s not perfect because it’s ultimately cooperative, but at least the developer of the application can also configure how it should be uninstalled. If you mostly stick to “reputable” applications, you know they would have gotten so many complaints about random things they leave behind that they slowly fix their uninstaller. Also you usually get the option to completely uninstall or keep data files, etc. Though it’s not universal. Uninstaller apps like CCleaner used to be more popular, but I hardly hear about these things anymore and usually advise against them.
On Linux, the story is slightly better as you rely on your distro package maintainer to configure the right uninstall logic. Removing random config files in /etc/ or data files in /var/ or systemd units, etc. Usually maintainers get it right as long as you stick to those feeds, and when something is missed it’ll get fixed eventually.
On Mac it seems to be either google it to get a list of locations to clean (which is what I do), or just delete the folder and ignore the random files or use CleanMyMac ($19.99) or CCleaner ($12.99) or MacAppBeGone (that’ll be $8.99) etc. luckily you can try to stick to homebrew and the App Store, but it’s limiting.
It autodetects when you delete an app from the Applications folder runs a quick scan and suggests which other files you might want to delete (So you might save savedata or settings if needed)
I can remember styling my Windows XP and Linux machine back in the day, I didn’t have the money to afford a Mac but I could make my machine look like one or even nicer than Aqua, and it was all because the many great artists freely sharing their works (like Louie Mantia mentioned in the article).
So many great artists on Neowin and AquaSoft, I believe some even went to work for Apple.
Cool article, thanks for sharing.
Also senior citizens might have no idea what they’re supposed to do with it, as I’ve seen, so could be more accessible. (Maybe that’s a feature if it’s a junk app.)
Also Apple: I bought my son an old refurbished iPad for watching Netflix on long drives. But you can't install Netflix! The OS is too old. What's the workaround? Simple, if you've previously installed a Netflix on another device you can "restore" it, and then Apple will let you install the old version. On the old OS.
Of course I didn't have an old Netflix installation so I went to install Netflix on my work laptop, but there is no Netflix app for laptops anymore! Finally, I got it working through Family Share after an hour of tedious effort. This may be more Netflix's fault than Apple, but why would an OS give that power to a 3rd party in the first place? What sense does this make?
It reminds me of NextJS where there is some minor niceties at the cost of magical thinking that you may need to move heaven and earth to circumvent in order to accomplish the most basic shit.
It's also quoted, so I thought it was referring to some other post somewhere, but there's nothing about that either. Is the author quoting himself?
Other than that, I found this to be a great article.
Some developers have gotten lazy with this and expect users to just know. As a result I’ve seen many people running an app out of the dmg file itself for a long time, then they wonder why they have a bunch of stuff mounted.
In the Classic Mac OS days a decent chunk of software (especially shareware/indieware) didn't have an installer and was just a folder you copied from a floppy disk or CD, which this process kinda mimics. You're just opening a file instead of putting in a disc.
The click-and-drag to the Applications folder step is also odd. Presumably the user wants to install the app if they've double-clicked it, so instead of kludgily hacking the file manager (oof!), why not simply prompt "Do you want to install [application name]?" [OK]/[Cancel]? How would that not be clearer? (Can you even install an app via the keyboard alone with that interface? I assume you must be able to, but it's certainly not intuitive that you could tab and enter your way to installation happiness.)
I appreciate that TFA is all about the creativity that can be added to this step, but it seems to me to be poor UI/UX design to allow so many possible ways of doing something so fundamental as installing an application. Sure, it's cool and fun if you're young and creative; but likely confusing as all hell if you're older and less-computer-literate.
I might be wrong since I've never used a Mac before.
Linux has portable apps too - AppImages and static binaries.
As for Macs, dmg files are not apps, they're just archives like zip files. The apps go inside the dmg files. And these "apps" are actually just plain old folders with extra metadata that makes macOS treat it like it was an executable. But you can infact navigate to the inside of an app if you use the terminal, like you can literally `cd` to it and treat it like a folder that it is.
It's only the program that is used to browse is different.
It's like you don't use explorer but regedit. It's the only difference.
On macOS it's not like you can always type what's inside the plist files with a text editor, sometimes you need to use 'plutil' anyway (if a plist is binary). So to browse Application Support you still often need thirdparty software anyway.
Years ago I did a small project that mapped windows hive (registry) files as a filesystem through fuse on linux. It mapped to a filesystem concept nearly flawlessly.
edit: can't reply anymore for today ('posting too fast'), so i just reply here: What is a file if not a key/value entry in a directory? Anyway, you can put custom binary data in registry, one value type is just "binary". But you shouldn't! Just like in Application Support - you can but you shouldn't. Registry just enforces it more. Entering regedit also requires to elevate it if you want to change system settings (HKEY_LOCAL_MACHINE). Changing user settings doesn't need elevation (HKEY_CURRENT_USER).
Also, Mac plists have two formats, xml and the non-text kind. Now mentioning that, I kinda hate both formats.
The closest analogue to the registry on macOS are the ~/Library/Preferences and /Library/Preferences folders.
* From a windows CLI type
SET
and all environment variables will be listed along with their values.* From a windows CLI type
SET APP
and all environment variables prefixed with "app" will be listed along with their values (eg: APPDATA ).* With path location variables, open up file explorer and enter %appdata% in address bar and press enter / click "goto" arrow. File Explorer will expand the variable and show the expanded directory path and contents.
MacOS experience is t-e-r-r-i-b-l-e and it's getting worse on each release.
People who like macOS experience for me either suffer from Stockholm syndrome, or nostalgia about lost macOS 9 base. Or simply have no idea there's something better!
macOS today is not macOS at all; it's a rebranded NeXT computer.
Don't tell me desktop linux. It's not fit for purpose and doesn't run the software I need it to run. I do not want to run Linux. I, frankly, do not like what Linux evolved into. The desktop linux of 15 years ago was sort of acceptable. Modern systems infected with pulseaudio, systemd, and whatever the fuck gnome and kde have turned into are not. I'd rather run Windows, and I hate Windows.
Also I think you're cargo culting. You have problems with existence of systemd while praising an OS that doesn't even allow you to disable transition animation delays when changing virtual screens. It's not logical.
Btw, pulseaudio is old news, now it's pipewire.
I'm using linux-native software all the time, that has no equivalents in other systems.
Ultimately though, package managers (whether it's apt, dnf, Steam, some app store, etc) are the best for most people, myself included.
It's generally insane. They have mocked Windows in the Vista era for bringing UAC, but now they're much, much worse.
Their file security API breaks auto-updates of popular applications. AV vendors have to use an API that forces to block access to new files and release it "at unspecified time in the future".
Installing an average application on macOS generates so much notifications that user doesn't even see them anymore. It's like ads on a commercial TV channel, nobody wants this info, but it's being served over and over again.
Developer experience is dreadful. It's "our way, or the highway". Setting up a CI worker box on macOS is something I wouldn't wish for my enemy.
A good eye opening excersise of how much macOS gets in the way is to install sshfs.
https://unsung.aresluna.org/_media/as-a-windows-user-its-a-v...
> teaches you that the app is just a file that you can place anywhere, or trash when done.
It's actually kind of opaque and not obvious at all, how exactly to uninstall apps on a Mac.
They should offer a first-class way of "installing downloaded apps" and push developers to use it. I would say use an Installer package but I can't remember if there's issues with it not being a single file. So a zipped installer package. And then make that not have an unnecessary 12 step wizard.
I'll leave it to the reader to decide if that means the process is "intuitive".
For a company that is supposed to be all about ease of use, this one is absurd.
And if you're wondering what Apple should do, if a .dmg file contains only an app and a link to Applications (or maybe some new flag set), when you double click it it should say something like "Do you want to install this app [Install] [Inspect disk image contents]". Very very simple.
It's not the fault of MSI per se, although its concept seems utterly frightful to me, but the way DLLs work and are registered and where you have to install them etc. When your app requires an older or newer MSVCRT etc. Also...the registry...something else that makes good old UNIX text file editing seem good to me.
I always thought that libsomelibrary.so.MAJORVERSION.MINORVERSION with symbolic links from libsomelibrary.so.MAJORVERSION and libsomelibrary.so allowed one to create dependencies that made sense - more or less specific as you chose. It also allows different versions of the same library to exist in the same directory such that one is less likely to break existing software when installing something newer (or older).
To be fair it might just be the way Windows tries to keep compatibility for the ages that makes it super difficult. I do think that you tend to get similar outcomes from similar assumptions/requirements and compatibility was indeed very very important till the internet became good enough to offer everyone easy upgrades.
I'm not a big snap or flatpack fan but DMG seems rather in their class - making things simpler. It might be easy to run an MSI after someone has burned many hours testing it to get it to work everywhere but to me it's a non-simple architecture that is made to work by extreme effort. I'd rather a simpler architecture that open source packagers could manage more easily.
As an example, I tried creating an Ubuntu package recently - a plugin for GNU Make that adds some useful functions.....that was SO hard - worse than any MSI experience I ever had - and I gave up. There were millions of confusing instructions and none worked properly. I couldn't work out which way was up or down - I don't know how people do it.
On Artix (an OS which is a little harder to install than Ubuntu) it is an absolute dream to create packages - exceedingly so. It might be that they aren't the greatest packages in the world but something that can be developed easily and got working can also be improved easily.
MSI's biggest mistake was probably granting developers the capability of invoking any program they like. The format was originally designed similar to Linux packages. Installation steps were atomic and reversible. If something went wrong (i.e. you ran out of disk space halfway through), the installer can undo every change step by step so you can try again later without overwrite prompts. Unfortunately, adding the ability to call executables means that atomicity is usually lost.
macOS applications seem to just package every single DLL they need inside of their application folder rather than relying on the OS. I'd do the same if I were developing for macOS with how often Apple likes to make breaking changes.
The symlinking trick for .so files often breaks on Linux. Method parameters change, structs get altered, and you can quickly create working-but-unstable versions if you have a different version of the same program. The Windows way, used by Flatpak and Snap, of targetting known-good sets of libraries will work around that. The macOS way (AppImage) also works but doesn't allow for deduplication. It might, if the AppImage would be uncompressed and files would be extent-aligned on a modern file system, but in practice that won't happen.
In theory, Windows and Linux offer the same app installation flow as macOS. AppImage and huge .exe files can be moved around and deleted just as easily. Windows will let you do all kinds of things with desktop.ini, including custom folder backgrounds, and its native .iso support can offer a very similar mount-then-delete flow to .DMG files.
That was almost what we should have done on the installer project I was working on because it was just too difficult to dance around it.
> The symlinking trick for .so files often breaks on Linux. Method parameters change, structs get altered,
I think its roughly orthogonal - any C/C++ based project is a huge pain in the backside when it comes to ABI compatibility because as you say changes that appear tiny can break everything. My major beef with DLLs is the way that they have a table of functions such that adding a new function can shift the indices of everything in the table. If they used symbols all would be well. But as you say it's incredibly easy to break compatibility and not realise it even without that.
I’d almost forgotten about all this madness since I’ve been using homebrew to install stuff for over a decade
It could have been Netflix or Youtube a decade before, if only there had been, you know, any good show to watch on it.
That was the first "mass market" piece of software I worked on, a good 20 years ago now, and it brings some memories of ye old time...
setup.exe .pkg installers make me feel dirty because I hav enough control over how it will fuck up my system or not.
Disk images seem to be much rarer on other platforms, and are usually only used for images of optical disks. Even the concept of "ejection" can be confusing, especially since when mounted disk images appear almost identical to actual physical removable media. I'd like to hear the reasoning behind why mounting disk images isn't relegated to a vestigal "power user" feature by now, since it seems like zip files (especially in appledouble format) can serve the same needs for most normal user flows.
There is an advantage to being able to move a program to any locations and run it from there, and while the same can easily be done on Windows (just make one big .exe!), it's not expected for users to just move install directories around.
That said, programs break the same way: configuration pointing at wrong directories, permissions going wacky, you name it. It just seems to go wrong less often on macOS because of developer expectations.
Having some custom wizard that's never the same fuck up your entire windows registry, write to wherever the fuck it wants on disk, now THAT is surreal
So first thing first: get Firefox. Managed to download .dmg file. Double clicked it.
And now I see utterly confusing window with an image that tells me that I need to move downloaded Firefox to applications to use it. Where I am supposed to get the thing that I need to move? Totally not clear that the icon in this window is interactive and can be dragged. Why can not it do this thing by itself? At which point association with handling http links will be configured and whom? How am I supposed to figure out that dmg is like a zip archive?
I was completely lost until colleague showed me what I was supposed to do. I burst into laughter when he showed me. I don't think he understood why.