3 ms·
In principle you are right. It would be nice if every app was sandboxed, even apps distributed outside the Mac App Store. But in practice the Sandbox has a few
by jakobegger 10y ago
In principle you are right. It would be nice if every app was sandboxed, even apps distributed outside the Mac App Store. But in practice the Sandbox has a few issues that make it unusable for many use cases:
- There is no way to provide automatic software updates for sandboxed apps. For Mac App Store apps, that doesn't matter (MAS takes car of updates), but for apps distributed outside the MAS, this is pretty much a deal breaker.
- Many technologies are not available for sandboxed apps, eg. shared memory. This makes it hard hard to distribute some popular software on the Mac App Store (eg. PostgreSQL)
- Unix Socket Connections outside the sandbox are not possible. This makes connecting with a lot of services (eg. SSH Agent) impossible.
- the whole sandbox mechanism is buggy, poorly documented, poorly supported, and error logging in insufficient.
I currently distribute a sandboxed app outside the Mac App Store, and I'm considering to remove the sandbox for the above reasons.
- nicky0 10y agoFor updates, you can use the latest Sparkle implementation, or something like it. It works with Sandboxed apps.
- jakobegger 10y agoIt doesn't yet. From the website: "Support for sandboxing is currently under development." Allowing automatic software updates requires leaving a big fat hole in your Sandbox... (And what's the point of restricting your app to a sandbox, when it can replace itself with a non-sandboxed app?)
- deleted 10y ago[deleted]
- nicky0 10y agoThere is a working branch which fully supports Sandboxing with a secure approach: https://github.com/zorgiepoo/Sparkle https://github.com/zorgiepoo/Sparkle This is set to be Sparkle 2.0. You raise an interesting point about security. It's about what you trust. Do you trust the app, or do you trust the developer of the app and their update infrastructure too. To have auto updates you need to do the latter.