I tried it recently as a programming exercise, calling it MVRA (minimal viable Reddit alternative). I originally thought it would took afternoon or at most weekend. It took me 2 weeks and while the key features were done it still wasn't nowhere near finished.
The problem IMHO is that walled gardens are a thing because it is really tedious to maintain forums and people eventually give up. So in order for MVRA to succeed it has to be bulletproof and unbreakable. It has to be able to run for decade without any intervention. This means that you have to write everything yourself. If you use library for feature X or some framework, in 2-3 years your code will be so behind that you will either have to fix thousands of lines of someone else's code or do major rewrite to replace that feature with other library. That's why I think that you have to implement everything with zero dependency. Every feature has to be absolutely minimalistic to keep the complexity minimal, but still there are lot of features in MVRA that you need to implement otherwise it will not be usable in real world situations.
Goals:
- it has to be truly minimalistic, no fancy features, no extra stuff nobody needs that always breaks, the site must be unbreakable
- it must be able to run years without proper maintenance
- once done, there will be no further development, the page will be done and complete! Constant adding of features makes it brittle and wears project maintainers
- all code is dependency, if you add 3000 LOC library to do X you will have to maintain it
There are only 3 truly essential features:
- nested comments (to maintain meaningful conversation, this makes PHPBB non-viable alternative)
- collapsible comments (to allow you skip off-topic but non-spam comments)
- users can created subreddits (to protect subs from off-topic posts)
I've skipped obvious things like image uploading and comment editing and moderation tools. And then there are hundreds of tiny little features you don't think about until you start implementing MVRA. They turn afternoon project to 2+ weeks project. Go ahead, try it, it's real fun and good programming exercise.
At their scale you'll run into a few hard things around handling large spikes of load to a single post and related set of comments/votes. But those are not impossible problems to solve.
The problem is that you don't have any users/communities for your Reddit alternative.
And a big challenge to create all kinds of anti-abuse features that normal users never see. But not having them will quickly kill your site from all kinds of spam and voting fraud.
Agreed. Not dismissing scaling social media as a trivial technical issue, but the real challenge with building a social media platform is building out the community that cause the tech scaling problems.
The more I work in micorservice environments the more I start to feel like the ruby on rails style monolith with async work queued up into scalable jobs is just way less annoying to deal with.