Looking for opinions from anyone who's run an open-core or commercial open-source SaaS.
Background: FormTo is a form backend (think Formspree alternative). Self-hosted via Docker, cloud version coming for people who don't want to manage a VPS. I open-sourced it under AGPL-3.0 because that's what Plausible, Cal.com, Grafana, Sentry, Posthog all use — it forces SaaS competitors who fork it to also open-source their changes, while individual self-hosters are unaffected.
The theory: AGPL keeps big players from just hosting my code as a service and undercutting me, while still being genuinely free for the people who want to self-host. The classic "free for self-hosted, pay for hosted" playbook.
The thing I keep going back and forth on:
Will indie devs and small agencies — my actual cloud target — get scared off by AGPL? Even if they're never going to read the license, "open-source" might register as "free, why would I pay" and they self-host instead of subscribing. Plausible obviously made it work. But Plausible is also a niche where compliance/privacy matters and self-hosting analytics is actual work.
A form backend is much simpler. "docker compose up -d", point a domain at it, done. The friction to self-host is way lower than self-hosting analytics. Which makes me wonder if the cloud version is going to struggle.
Three options I'm considering:
1. Stay AGPL, accept the cloud is for people who explicitly don't want to deal with servers. Smaller TAM but cleaner narrative.
2. Switch to source-available (BSL or similar) — keeps the "you can see the code" trust signal but blocks competitive hosting. Loses the open-source goodwill though.
3. Open-core — keep the core AGPL but make some features cloud-only (team management, advanced webhooks, analytics). Felt slimy to me but it's what most successful OSS SaaS actually do.
For anyone who's been through this — what did you actually see in practice? Did the OSS audience and the paying audience overlap or were they totally different people?
(Repo if relevant: github.com/lumizone/formto)