3 ms·
[Former developer on the Windows Component and Applications team, renamed Developer Experience team] There's a big difference between an imperative (e.g. arbit
by inlined 7y ago
[Former developer on the Windows Component and Applications team, renamed Developer Experience team]
There's a big difference between an imperative (e.g. arbitrary code) and declarative installation process. Imperative installation is most common on Windows due to the initial decisions made by the registry designers + the Windows Installer originating from Office and starting with imperative. Declarative installs are common on the Mac where "installation" usually means dragging a binary from the DMG to your Applications folder. OS X then manages OS integrations declared in an app manifiest.
Declarative installations delegate to a system which has a broader view and standard mechanisms to handle state transitions required for installs, upgrades, and uninstalls. Imperative installations frequently leave residue and are hard for even Windows to fix. I spent years of research and have several patents on trying to figure out how to distinguish between "extension points" of the OS and private state to create a sandbox with the necessary pinholes. Even with those tools handy, many software shops see no reason to upgrade because the Windows end user accepts a life of installers.
I see logic in starting from scratch. This time we can create an end user expectation of declarative and (laterally + vertically) sandboxed apps. Hell, that's what we tried to do with Windows 8, but it was unfortunately restricted to the "modern" (aka full screen) apps that never caught on.
- FpUser 7y agoWhy? I've had that clean painless install on Windows like forever. My installs are always a single executable that copies itself to a proper place, gets any data if needed from company website and when uninstalled leaves no trace on a system. Never touched registry. There is nothing here that calls for "starting from scratch"
- megous 7y agoIn practice, installation in web browser would use a service worker and some hand written caching logic. Neither is declarative. In fact, declarative (https://en.wikipedia.org/wiki/Cache_manifest_in_HTML5 https://en.wikipedia.org/wiki/Cache_manifest_in_HTML5) variant of this functionality was deprecated because devs wanted more programatic way to "install" offline web apps. It's still sandboxed, and limited, so what's cached this way is perhaps easy to totally remove by the browser. But that's not because of the declarativeness, but because of sandboxing.
- inlined 7y agoMakes sense, but if there’s any OS integration (e.g. file type registration, desktop links, etc) then the app isn’t truly sandboxed by these means alone.