The overall UX is very similar to my vision of the future of selfhosting. It should be as easy as installing an app on your phone, then going through a quick OAuth2 flow to set up a tunnel on a domain, and you're up and running.
The overall UX is very similar to my vision of the future of selfhosting. It should be as easy as installing an app on your phone, then going through a quick OAuth2 flow to set up a tunnel on a domain, and you're up and running.
I don't think app packaging could be said to be the achilles heel -- how much work it involves depends a lot on the app (some things are very easy, others can be painful), but it is certainly not the case that Sandstorm didn't take off because packaging was too hard.
Security can just be a OTP: https://github.com/tinspin/rupy/blob/master/src/se/rupy/http...
Docker (or Podman) is just a tool that sets up some linux primitives for you. One with a track record and volume of users that'd make me trust it over things that specifically advertise themselves as "security sandboxes" (i.e. firejail, who had some extremely funny basic exploits to get root from their SUID'd binary). You can even pair containers with user namespaces now and get the fakeroot equivalent of containers.
You need to understand how sandboxing work.
> Docker (or Podman) is just a tool that sets up some linux primitives for you. One with a track record
A pretty poor track record.
That's pretty much my job. Can you be more concrete with what you're talking about instead of this passive agressive "you don't know what you're talking about" tone?
Flatpak and Snap are pretty much using the same primitives as containers, they just don't like using the word because of existing connotations. Mandatory access controls are neat, but nobody actually uses them unless the default doesn't disturb them or they have a compliance requirement.
> A pretty poor track record.
Modern containerd, after having been split up from Docker/Moby, has a better track record than most other sandboxing tools. I mentioned a laughably bad one that the Arch wiki and many HN users still seem to endorse.
Object capabilities, which is what Sandstorm/Cap’n Proto are based on, provides much more security than Mandatory Access Control systems while also providing a much simpler method for getting there.
Sadly the literature on OCAP is fairly poor, often being either too low level or too abstract.
The tl;dr is that OCAP systems work by assuming an application has no functionality whatsoever, and then must be passed (not sandboxed but passed) functionality, either at start time, or when the application requests it.
The easiest way to understand it is imagine if instead of being able to open a file on the filesystem by path, you had to specifically be passed the file descriptor by the OS, possibly before runtime.
Another way to think about it is thinking about the OAuth2 capabilities that you can grant an application. You authorize an application to have certain capabilities, and then the client is handed back a set of API tokens or addresses. Those are the only way it can exercise those capabilities.
It's not being sandboxed, it simply doesn't have any additional way to get access.
Thanks for actually answering the question.
Also, Cloudron is not open source and you need a subscription to use it generally. This has led it to be more successful of a business venture, of course, but is a big downside for software freedom.
Sandstorm implements a capability-based security model, where not only does each app run in a strong sandbox, but a new instance of the app is created for each document (or whatever the app's logical unit of data may be). Sandstorm itself enforces that each document can only be accessed by the people with whom it has been shared, regardless of any bugs that might exist in the app itself. All communications between the user's browser and the app go through a proxy implemented by Sandstorm which applies this authorization regime.
Apps cannot even talk to each other or the internet without specifically requesting access, granted by the user. The UX model for these requests is designed to flow naturally for the user, by deriving the user's intent to permit access from the action they took that caused the access to be needed. For example, say the user wants to embed a chart into a document, where the chart editor and document editor are separate apps. The user clicks some sort of "embed" button in the document editor. Now they are presented with a chooser where they can pick which thing they want to embed. If they make a choice, there is no need to separately ask the user if they want the document to have access to the chart -- of course they do. Sandstorm works by having the system implement the "picker" UI directly, so that Sandstorm knows the user made this choice, and can automatically provide the implied authorization.
All this actually makes apps easier to write since they don't have to deal with authorization and user management themselves, and as a result there are a lot of neat unique apps for Sandstorm written by various people in a short amount of time. However, the down side is that existing off-the-shelf apps that do already feature their own user management and authorization are somewhat laborious to port to Sandstorm.
Yunohost takes a more traditional model of just running each app and letting it figure out its own authorization.
The core difference here is that for all intents and purposes app vulnerabilities are almost wholly mitigated. The only significant type of app vulnerability which Sandstorm cannot prevent is privilege escalation within a single document, where you've shared limit access of a document with a user, say read only, and due to an app vulnerability, they've figured out how to edit it.
Since all documents are private solely to the user who created them initially, and the process isn't even running until that particular user tries to open it, there's effectively no attack surface for Sandstorm apps most of the time. When they are spawned, they're spun up at randomly-generated ethereal subdomains, and authorized solely for access by the web browser that launched them.
Sandstorm the business was shut down 6 years ago https://sandstorm.io/news/2017-02-06-sandstorm-returning-to-...
And Sandstorm Oasis the hosting service was shut down almost 4 years ago https://sandstorm.io/news/2019-09-15-shutting-down-oasis
This codebase is basically abandonware at this point and can’t be trusted for anything serious these days. If CF brought this on as an official product (and renamed it), it would go a long ways to build back trust
For my part, I am indeed mostly focused on Cloudflare Workers today and don't have much leftover energy to spend on Sandstorm. This has nothing to do with Cloudflare telling me how to spend my time. I make my own choices. I still love what we were building with Sandstorm, but what can I say, Workers has been a lot more successful and so I am drawn to focus my energy there.
Note that Cloudflare has no affiliation with Sandstorm, other than employing some of the former team members. Cloudflare did not acquire Sandstorm itself.
Another is that it lacked (and still does, from what I can see) a killer app. It had the perfect conditions last year with the Twitter acquisition, but to my knowledge didn't seize upon it. (Likewise, Cloudflare had a similar opportunity, but the Wildebeest project comes off as a celebration of Cloudflare's infrastructure for the sake of it and/or aimed at those who love devops stack complexity, generally—a fairly tonedeaf response to what would drive someone to want to run their own fediverse node that's not backed by Mastodon.)
The weird URLs—or rather: the constraints that led to them, and the downstream consequences to UX—didn't help.
As far as the killer app, Sandstorm has some really awesome Sandstorm-only apps, but probably not enough yet for our "exclusives" to be a draw to the platform on their own. Sandstorm currently has some limitations that make it difficult to use in federated environments, and we are working on it, but yeah, it meant we didn't have a fantastic story for social during all this Elon stuff.
The hosted version wasn't. Having to prop up your own Sandstorm instance pretty much compromises the project goal—ease of app installability means little gains when you're still responsible for running Sandstorm infrastructure that it relies upon.
Your original complaint was the lack of a "miniflare", i.e. a simulator for local development purposes. But you can run Sandstorm itself locally and there are in fact tools to streamline the process of doing app development using a local Sandstorm server.
Now you seem to be arguing something about how running Sandstorm locally is too much work for end users, who would prefer to use the hosted version? But I thought we were talking about app developers. End users don't need a "miniflare".
"The Cloudflare developer experience with miniflare is worse than that of Sandstorm."
But if you built your entire application assuming you're shipping it via Docker, untangling the sheer amount of redundant garbage you need to pare down to a single-document app that accepts outside authentication and security, ends up being a ton of work to package and then maintain it long-term.
Ideally, I think having apps not made for Sandstorm originally is mostly just a strategy to get enough people operating on Sandstorm's model for people to build Sandstorm-specific apps in earnest.
The biggest thing is the lack of integration. Some of them have patchy SSO integration options, but most won't tamper with the app in any meaningful way, so even if you have login integration, you have to log into each app on a server, and each app is subject to that app's capabilities for things like sharing.
You end up hosting a bunch of disjointed and separate services. Sandstorm feels much more like hosting Google Docs and it's barely ever used support for third party apps/document types.
Sandstorm requires aggressive app packaging work but the payoff is significant: Apps do not have independent authentication at all, logging into Sandstorm gets you into all of your applications, and every file can be shared using the same process with other users or the public trivially.
In fact, because we break apps into "grains" or documents, we can do crazy things like allow you create Collections which comprise of documents made with different applications and then share that as a single unit with others. So I can take a couple specific Etherpad documents, a Wekan board, and a WordPress, put them into a project collection, and then share that with a collaborator with one link.
Impressive that Umbrel's popular because IIRC it doesn't take security as seriously as say Sandstrom. You'd think the crypto folks would at least care about that, if nothing else?
Oof... 9 years ago.