A thought experiment: if you suddenly had access to the resources required and had a burning desire to create a community-owned and -governed cloud computing/hosting service/alternative to AWS, what would you be sure to consider, include, provide, support?

@kfitz S3 is the main thing I'd currently like to switch.

I'm not super aware of the other parts of it because I avoid it as I don't want the lock-in. (Though I have used a few bits on client projects where they've wanted it)

The Lambda stuff feels like it could enable a bunch of interesting use cases for community-scale tech to have cloud glue code to orchestrate other off-the-shelf parts. That's getting beyond your thought experiment though, I fear 😀

@amcewen When you say that S3 is the main thing you’d like to switch, do you mean that it’s the most appealing part to have a non-AWS provider for? Or that you’d want a different protocol?

@kfitz I mean it's the only thing I'm currently paying AWS for, and would love to have a broadly-similarly-priced co-operative alternative to switch to 😀

I'm not hung up on the protocol per-se, it's the cost-effective binary blob (images and audio mostly) hosting that's the real feature; however there's lots of S3-compatible tooling already lying around that's easy to integrate.

@amcewen Got it. Thank you!
@kfitz @amcewen s3's API is the de-facto standard for object storage due to tooling, library support, etc, but there are a lot of different providers for it now, including various open source options you can run yourself.
@kfitz My dark suspicion is that AWS makes the bulk of their profit from waste. Machines that should have been shut off, storage that should have been deleted, grossly excessive usage for the need, and so on. (Any guesses, @Quinnypig?) So I'd start with the question of what it looks to have a hosting service whose goal is not profit, but efficient use of resources and effective support of the people in served organizations such that it's easy and encouraged to use only what's needed.
@williampietri @Quinnypig Yes, totally. Thanks for this!
@kfitz For sure! And I suspect @mogul has some thoughts here.
@williampietri @kfitz hmmm, well I may not be the best person to ask since I am focused on ensuring people have PaaS services, not IaaS. But we've gone near ten years running Cloud Foundry with only a basic set of brokered services (RDS, Redis, Elastic/Opensearch) and that covers pretty much the gamut of what straight web apps need, at least well-behaved ones. Things we never handled that people wanted: Mongo, NFS, SMTP. (SMTP is coming now.)

@williampietri @kfitz Oh and you'll need to provide object storage, of course.

A PaaS is also not great for heavy ETL/machine-learning due to limited local disk.

My feeling after looking at the Supabase stack a lot lately is that "just use postgres" is a boring but also winning architecture strategy for most of what people want to make, but as the service provider you might not get much say over what they are working with.

@williampietri @kfitz So, depending on who you want to serve, I'd probably just start with hardware and OpenStack (IaaS), then work up to OpenShift+Korifi or BOSH+Cloud Foundry (PaaS).

After that, listen to what people want and start providing those as brokered services that they don't have to operate themselves. I'm not crazy about k8s, but if you start with OpenShift you're in a good position both to provide a k8s service, and to use it yourself to operate specialized brokered services.

@williampietri @kfitz
If you're just looking to provide easy SaaS services for your community, then look at NextCloud (or whatever the active fork of that is these days). In fact I would do that regardless.
@williampietri @kfitz Oh and if you have control over the hardware, definitely check out https://oxide.computer/ !
Oxide Computer Company

The cloud you own. Hardware, with the software baked in, for running infrastructure at scale.

@mogul It's nice to hear that in practice such a small set of services suffices. That would make it a lot easier to present things in ways where people could have a firm grasp on waste. And getting off the ground would be much easier than I would have guessed. @kfitz
@williampietri @kfitz Got to re-emphasize, though, that not all customers have control of their stack. So if they come to you wanting to run some enteprise-y COTS things that has a baked dependency on Mongo and Windows and Lambda, well, you just have to gently let them know they can't be your customer.

@williampietri @kfitz It helps to give them guidance/therapy, though, in the edge cases where change is more possible than it first appears. Example: I was sure we wouldn't be able to run Hypothes.is because it uses RabbitMQ but it turned out that it uses RMQ via a library abstraction that can just as easily use Redis/Valkey with a one-line config change.

So: Invest early in pre-sales engineering.

@kfitz worth bearing in mind that for a long while AWS was only EC2 (compute), EBS (detachable disks), and S3 (durable storage). You can build a lot of services from those.
@kfitz If I had such an inclination I would start by becoming a customer of those who are already doing it, like https://www.hostsharing.net/ , and continue by talking with them to share learnings.
Cooperative Community Cloud

Wir bilden Gemeineigentum an technischer Infrastruktur

Hostsharing eG – die Hosting-Genossenschaft
@kfitz The CILogon service operated by NCSA at the University of Illinois relies heavily on the managed relational database service (RDS), managed Kubernetes service (EKS), managed key-store (DynamoDB), and dynamic file system (EFS) offerings. It would be difficult for us to move away from AWS and adopt the alternative you hypothesize unless the alternative services provided similar functionality at a similar price point. The key is the "managed" part of the services so that our limited staff does not have to be experts in the fine details of operating HA databases and the like, and we can instead focus on our application offerings. HTH.
@skoranda This is SUPER helpful. Thanks, Scott!
@kfitz I'd want to find a way to balance durability with environmental impacts. Ideally things should be backed up in multiple physical locations (especially given increased severe weather due to climate change), but the cloud takes a LOT of electricity to run.
@tophkat Ugh, truly. Thanks for this, Kate!
@kfitz I would not try to do everything that AWS does; I would focus on a few high value propositions for my target audience and keep the offerings as simple as possible. (I admit this dodges the real question.)
@tim Thanks for this, Tim — it’s helpful to hear this.
@kfitz There should be a clear, concise pricing model. You shouldn't need to have to wade through the equivalent of all three books of Lord of the Rings to work out what the next month's fee is likely to be. Also permission-based staged resource escalation and graceful service throttling when limits are exceeded.

@kfitz I genuinely don’t think centralised services are the right solution in most cases, and that they all but guarantee walled gardens, vendor lock in (by solution providers), and all sorts of really harmful effects for users.

So if i had those resources and expertise, I would put them in to developing technology for local first and decentralised approaches.

Any of that can then be run on remote servers as well, but that should be a generic commodity facility, without vendor provided magic.

@kfitz A proper legal structure would be critical to prevent a takeover. Don't skimp on the lawyers.
@kfitz I think #OwnYourData is a good guiding principle. I wonder whether this calls for an entirely new stack and applications, or whether drop-in replacements for existing services and protocols can achieve the community goals.
@kfitz i would want it to have an extremely easy & cheap golden path for deploying basic web apps, like digital ocean’s autodeploy on git push, or similarly with old heroku. Let people with simple needs start simply. Add-on from there when they realize they need (eg) postgres.
@kfitz i would like the docs and cost estimation/control features to be better than AWS’s 🤣
@kfitz but ultimately, what do I USE? Postgres. S3 or other persistent file storage. Enough compute to deploy/run things (ideally on git push w/golden path for simple things, you run my dockerfile for harder things). Maybe redis. I think you’d need to decide how much AI you wanted to support, aka how many GPUs do you need, and how soon.
@thatandromeda Thanks for this! It’s super helpful to think about.
@kfitz oh, and like…something something logging and monitoring