top | item 36256167

Apollo Back end just made public

496 points| jviide | 2 years ago |old.reddit.com

237 comments

order
[+] andremedeiros|2 years ago|reply
Hi all! I wrote this code, and for educational purposes, I’d be more than happy to answer any questions.

A gentle reminder that the whole history is here for show. This is very vulnerable — you can see the times I was in a rush, or when I took my time. You’ll find my mistakes. Either way, all I ask is please be kind. I know there are 50 things I could have done better, but this is a product of the reality at the time — a balance between something that works and something that was cost effective for Christian.

[+] Waterluvian|2 years ago|reply
You made something that people got a lot of value out of. That’s incredible. The actual code and commits are just the journey. They’re not the product. I’m rather delighted every time someone shows a realistic journey full of all the things we all experience, but some of us pretend don’t happen. Thanks for being vulnerable and sharing this.
[+] cassianoleal|2 years ago|reply
Thanks for your work. Apollo made using Reddit a decent experience, and clearly you had a very large part in that.

User rapnie mentioned the code in the repository doesn't have a license [0]. You might want to review that.

[0] https://news.ycombinator.com/item?id=36256566

[+] carlmcqueen|2 years ago|reply
Having to ask people be kind about your code on HN is such a shame of reality to me. Half of brilliance is having your working version, used by many people. You had working code that brought reddit to so many reddit users every day that was better than what the official app of reddit provided.

Some of the 'code' running massively profitable departments in finance are spreadsheets, on shared drives, with thousands of linked cells thought up by a brilliant employee who left the company five or six years in the past.

I wish I was kidding.

Thanks for how great you kept apollo.

[+] rovr138|2 years ago|reply
It’s hard to put oneself out there like that.

Christian is very visible in the community, but I want to say thank you to you too.

Thank you for all the work you did! This made a lot of our experiences great.

[+] alickz|2 years ago|reply
Your code was production ready for millions of users, that's all that matters

Do you think Christian would be willing to open source the app (under a non-commercial license) and allow us to build it with our own Reddit API keys?

That way we could still use Apollo, but pay for it ourselves

[+] seanalltogether|2 years ago|reply
So am I right in thinking that the backend was needed to poll the user account in order to generate notification? Was that one of the issues that reddit had with how apollo was using their apis?
[+] Aachen|2 years ago|reply
Maybe a description of what we're looking at in the Readme would be helpful. Why wouldn't the Apollo client just directly call reddit? Or does it partially do that and this server component is additional for certain functionality? What functionality does this offer?
[+] raylad|2 years ago|reply
Why not point Apollo at a Reddit alternative, or use the open-source code for Reddit (or code like this https://github.com/libertysoft3/saidit) instead of shutting it down?

If Apollo's users (or a good percentage of them) moved over to an alternative platform, that would be poetic justice, at least.

To go even further, all the app devs should get together and create a new platform or pick one Reddit alternative and point all their apps at it.

That way it would be even more likely to get critical mass quickly. 3 weeks should be enough time to come up with a coordinated plan. Don't let Reddit push you out -- push them out and let your users stick with the app they love.

Reddit is only its users, nothing else. They don't own the users' loyalty -- the apps do. Take advantage of that and teach them a lesson by pointing the apps and users elsewhere!

[+] Grimburger|2 years ago|reply
Don't be ashamed of code you wrote that wasn't intended for an audience.

Most would hate to see what a sausage gets made out of, but nearly everyone will eat that same sausage.

[+] marginalia_nu|2 years ago|reply
FWIW, that just sounds like real code to me. You can spend your time polishing code until it shines and jerking off over the perfect crystal of logic you've created, or you can spend your time building something impressive that does cool stuff.

Especially when you're solo or on a small team, technical debt is actually something you can lean into. In this domain, refactoring is cheap and cutting corners can help you get where you need to go faster.

It's a too common mistake to think that because technical debt is a tar pit that kills many large products that this is universally true. The real trick is lowering the tolerance for flaws as the project grows and matures.

[+] hu3|2 years ago|reply
Your commit messages [1] are better than of many projects and seniors I have worked with. Nothing to be ashamed. You made something that "just worked" and delivered value. You should be proud!

Sample of latest commit messages:

batch size wants to be smaller for less locking time, not higher

increase scheduler batch size

bump locks again

make pool sizes customized

increase prefetch

[skip render] remove old redis from infra

increase poolsize a bit

bring new redis up to line in blueprints

reduce pool size

bump pg client count

tweak pool sizes and consumer count

double the amount of consumers

small tweaks

[ci skip] update pgbouncer github url

clean allow lists

add new redis instances

make connections to the correct redis url envs

add new env variables

spam prevention

update reddit http client

feat(ops): add distributed tracing (#109)

[+] trustingtrust|2 years ago|reply
I’m a long time paid customer of apollo. I have only used Reddit because apollo exists. What an amazing app. Thank you for all the hard work.
[+] that_guy_iain|2 years ago|reply
> A gentle reminder that the whole history is here for show. This is very vulnerable — you can see the times I was in a rush, or when I took my time. You’ll find my mistakes. Either way, all I ask is please be kind. I know there are 50 things I could have done better, but this is a product of the reality at the time — a balance between something that works and something that was cost effective for Christian.

The way I took Reddit's comments were there were things that could be optimised to reduce costs. I've not seen a codebase yet where that isn't true.

Sadly, in the hands of Redditors who think you can host an API on AWS for $1 per million requests comments like come across as "Oh they did shoddy work".

What I think is we're seeing production quality code like the majority of us have running.

[+] irisgrunn|2 years ago|reply
That's just the reality of writing code, we all make mistakes and they haunt us all :)
[+] TheNewsIsHere|2 years ago|reply
As another who will stop using Reddit when Apollo goes dark, I wanted to say thank you for your work with Christian!

Apollo saved my Reddit use after they bought and killed Alien Blue. I have gotten so much out of and out so much into the more obscure technology subreddits. It’ll be missed.

I appreciate all your work. For what it’s worth, I’ve never had server-side issues with Apollo (that I’ve noticed anyway!)

Edit: typo

[+] footlose_3815|2 years ago|reply
Sorry you feel on the defense. Developers can be very aggressive with feedback and I know the feeling. To echo others, "Build something that works first", and you have something that works :)

IMHO the gesture of releasing the code shows how much integrity there is behind the devs, and I could care less if there's not-best-practice in there.

[+] irthomasthomas|2 years ago|reply
Why don't you and Christian ask Apple for a small donation, and replace the reddit API with your own? You must have talked about the idea?

I am waiting on delivery of an iPad pro, my first apple device in 10 years. And, even though I hate reddit, I was excited to check out Apollo, if for no other reason than to see what a great ios app looks like.

I know that reimplementing reddit API from scratch will take more than a few weeks. But, I'm sure loyal Apollo users will be happy with a much scaled-down version. Maybe, to begin with you put the app in Read Only mode, and point it to a reddit archive. Then work on making one sub read/write again and expand from there.

I mean, even just a good reddit archive browser has TONS of value. I'd happily pay a small sum for an awesome reddit archive explorer.

"Chatgpt, build the back end for this API: $(cat reddit_api_docs)"

[+] jspdown|2 years ago|reply
I was diving into your code and noticed you were using golang-migrate for running your migration queries. I never heard of it before and the number of databases they support sounds interesting!

How was the experience overall with this tool? If you have experience with Flyway, how does it compare?

[+] chris37879|2 years ago|reply
You wrote code that works and powers an app for millions every month and any bugs or 'bad' ways of doing it are clearly sufficient to maintain a large, healthy user base, so you should feel nothing but pride!

Also, thank you for making this code available, but would it be possible for you and Christian to choose a license for it so people can use it? I don't think which license matters all that much, personally, but I can also understand wanting to keep it proprietary, either way, thank you again for all your (and the rest of the Apollo teams') work.

[+] revskill|2 years ago|reply
Are you proud of your code ? Which design patterns do you use ? Any lessons that you've learned to be shared ? Thanks.
[+] chaostheory|2 years ago|reply
You shipped and found market fit on your own. A lot of funded teams haven’t been able to achieve what you’ve done.
[+] internetter|2 years ago|reply
I'm curious if ya'll have any plans to support a reddit alternative, like Tweetbot -> Ivory and other twitter clients. I love Lemmy. I think it would be an excellent middle finger to reddit, but I understand if you are ready for the next thing
[+] TX81Z|2 years ago|reply
My friend, that’s ALL of our code!
[+] mrweasel|2 years ago|reply
Making the code available is a wonderful thing to do. I love being able to see how others managed and structured a Go project that was actually meant to run in production.

Thank you.

[+] sirspacey|2 years ago|reply
Thank you for your contribution. This is a heroic act.
[+] irisgrunn|2 years ago|reply
Wouldn't it be possible to change it to use Lemmy or some other alternative?
[+] dakial1|2 years ago|reply
So, too much work to adapt it to hackernews?

Would love to have a decent client for this site…

[+] newZWhoDis|2 years ago|reply
You might want to put this in the readme
[+] trollied|2 years ago|reply
There's a Reddit CEO AMA later today: https://www.reddit.com/r/reddit/comments/144ho2x/join_our_ce...

Can't see it being anything other than a PR disaster for them, unless they change their stance.

[+] fron|2 years ago|reply
It's more than likely that they'll inject their own softball questions and focus on those instead of addressing everyone's concerns in any meaningful way.
[+] interestica|2 years ago|reply
For this being such an important moment for the site, it’s absurd that the link they announced didn’t even have a set time. And they haven’t added one.
[+] soraminazuki|2 years ago|reply
I don't think there's anything Reddit could do at this point to not let it be a PR disaster. That includes changing their stance. What they're doing is so egregious, naming and shaming and lying about people who brought immense value to the community for years. All out of misguided greed.
[+] madeofpalk|2 years ago|reply
The AMA is confusing - I don't understand what questions they expect to recieve, and how they'll answer them to anyone's satisfaction.
[+] londons_explore|2 years ago|reply
For some companies, for example Ticketmaster, PR disasters are fine. They don't affect the profitability of the company, nor the user base.
[+] newsclues|2 years ago|reply
The clowns at Reddit couldn't even specify a time.

This will be a spectacular shitshow to watch.

[+] spiderfarmer|2 years ago|reply
All this backlash is going to kill Reddit. It will take a thousand little cuts for sure, but it started the moment they announced their ludicrous pricing.
[+] yosito|2 years ago|reply
GitHub repo link, in case Reddit deletes the thread: https://github.com/christianselig/apollo-backend

Interestingly, this seems to just be a proof of concept, and the repo is archived. While the developer of the Apollo front end is getting screwed in this whole debacle, this seems to me like an opportunity. He could literally build an alternate Reddit back end (ok, pay someone to do it, if he doesn't want to do it himself), switch Apollo to use that API instead, and get an instant network of hundreds of thousands of Apollo users. A mass migration from Reddit to a new Apollo back end seems like an amazing way to start a new social news website.

[+] troad|2 years ago|reply
I really love the practice of releasing the source code once a project comes to a commercial end, and I respect the devs greatly for doing so. Good job!
[+] AndrewKemendo|2 years ago|reply
What if all the blackout communities move to an open source, community funded, community owned and run version of Apollo?

I’d be happy to try and convince my 100k community to Apollo and if the UX is similar for web and mobile then I’m not sure switching costs would be that high during the blackout.

I’d help fund it but all my money is wrapped up in my trash cooperative.

[+] eterm|2 years ago|reply
Politically reddit have played a blinder.

They've succeeded in killing their main competitor (in terms of ad share) and could even now walk back the api charges for any smaller operators and leave Apollo dead and avoid the biggest backlash.

It's scummy as hell and I won't want to continue to contributing to reddit, but I can't help but feel they've been shrewd in getting what they wanted.

[+] notRobot|2 years ago|reply
> The goal of making the code for this repo available is to show that despite statements otherwise by Reddit administrators, Apollo does not scrape anything and users purely authenticated Reddit API requests, and does a great deal of work to ensure the Reddit API rate limits are respected.
[+] mkl95|2 years ago|reply
Reddit's current situation reminds a bit of Yahoo Answers in the late 2000s. Considering they were launched 5 days apart, Reddit has been incredibly resilient.
[+] unstatusthequo|2 years ago|reply
Please change title to Apollo Backend. Gives the impression Apollo has returned “and” made public.
[+] r0bbbo|2 years ago|reply
I've seen an increasing amount of support for 'nuking' your personal reddit history—posts and comments—in protest of the upcoming changes, taking back what Reddit are profiting from. I'm hugely in favour of it, anyone else considering it?
[+] eiiot|2 years ago|reply
Is anyone who has experience with Go able to decipher the instructions in the README?