I help run a few Discord servers and due to financials, I'm always worried about extremely hostile actions by them to make money.
My list of things good open source replacement would have:
Decentralized chat servers with history
Run a optional centralized login service so users have one login
Optional centralized service knows what servers the user is a member of so any client they login to will automatically know which servers they are member of.
Centralized Mobile Notification service
Federation is absolutely not a requirement or a way around this.