An update on the state of the reddit/reddit and reddit/reddit-mobile repositories : changelog

Authored by reddit.com and submitted by interiot

tldr: We're archiving reddit/reddit and reddit/reddit-mobile which are playing an increasingly small role in day to day development at reddit. We'd like to thank everyone who has been involved in this over the years

When we open sourced Reddit (and as you can see in the initial commit, I’m proud to be able to say “FIRST”) back in 2008, Reddit Inc was a ragtag organization1 and the future of the company was very uncertain. We wanted to make sure the community could keep the site alive should the company go under and making the code available was the logical thing to do.

Nine years later and Reddit is a very different company and as anyone who has been paying attention will have noticed, we’ve been doing a bad job of keeping our open-source product repos up to date. This is for a variety of reasons, some intentional and some not so much:

Open-source makes it hard for us to develop some features "in the clear" (like our recent video launch) without leaking our plans too far in advance. As Reddit is now a larger player on the web, it is hard for us to be strategic in our planning when everyone can see what code we are committing.

Because of the above, our internal development, production and “feature” branches have been moving further and further from the “canonical” state of the open source repository. Such balkanization means that merges are getting increasingly difficult, especially as the company grows and more developers are touching the code more frequently.

We are actively moving away from the “monolithic” version of reddit that works using only the original repository. As we move towards a more service-oriented architecture, Reddit is being divided into many smaller repositories that are under active development. There’s no longer a “fire and forget” version of Reddit available, which means that a 3rd party trying to run a functional Reddit install is finding it more and more difficult to do so.2

Because of these reasons, we are making the following changes to our open-source practice.

We’re going archive reddit/reddit and reddit/reddit-mobile. These will still be accessible in their current state, but will no longer receive updates.

We believe in open source, and want to make sure that our contributions are both useful and meaningful. We will continue to open source tools that are of use to engineers everywhere, including: baseplate, our (micro?)service framework rollingpin, our deployment tooling mcsauna, our tool for finding and tracking hot keys in memcached.

Much of the core of Reddit is based on open source technologies (Postgres, python, memcached, Cassanda to name a few!) and we will continue to contribute to projects we use and modify (like gunicorn, pycassa, and pylibmc). We recently contributed a performance improvement to styled-components, the framework we use for styling the redesign, which was picked up by brcast and glamorous. We also have some more upcoming perf patches!

Again, those who have been paying attention will realize that this isn’t really a change to how we’re doing anything but rather making explicit what’s already been going on.

1 Though Adam Savage (u/mistersavage) was never actually part of the team, he was definitely a prime candidate to be our spirit animal.

2 In fact we're going through some growing pains where it can be difficult for our development team to have a consistent local reddit build to develop against. We're doing heavy work on kubernetes, and will be likely open-sourcing a lot of tooling later this year.

paranoidinfidel on September 2nd, 2017 at 03:55 UTC »

I snagged a copy of the closed source:

print("all of our servers are busy right now") print("please try again in a minute") print("(error code: 503)")

Arancaytar on September 1st, 2017 at 21:47 UTC »

If I read it right, it's not so much that it's "no longer" open source, but hasn't been truly open for a while now and they're just giving up on maintaining the open version.

Because of the above, our internal development, production and “feature” branches have been moving further and further from the “canonical” state of the open source repository. Such balkanization means that merges are getting increasingly difficult, especially as the company grows and more developers are touching the code more frequently.

So in effect, they made a private fork of their own code and it's now diverged to the point where they can't feasibly maintain both.

It's sad but I suppose inevitable when your business model involves using your code rather than giving it to other people and selling support. Any users of your code are not potential customers but competitors.

However, since their source apparently remains available under a semi-free copyleft license (CPAL), maybe there will be a community-maintained fork of some kind.

valar_k on September 1st, 2017 at 21:33 UTC »

back in 2008, Reddit Inc was a ragtag organization1 and the future of the company was very uncertain. We wanted to make sure the community could keep the site alive should the company go under and making the code available was the logical thing to do

Translation: We needed you guys back then. We don't now.

The rest of it seems like a combination of technical hurdles that don't seem particularly compelling (they don't need to have secret new feature branches in their public repo) and some that don't make any sense (how does a move away from a monolithic repo into microservices change anything?) and some that are comical (our shit's so complicated to deploy and use that you can't use it anyway)

It's sad that their development processes have effectively resulted in administrative reasons they can't do it. I remember them doing shenanigans like using their single-point-of-failure production RabbitMQ server to run the untested April fools thing this year (r/place) and in doing so almost brought everything down. So I'm not surprised that there doesn't seem to be much maturity in the operations and development processes over there.

To be fair though, the reddit codebase always had a reputation for being such a pain that it wasn't really useful for much. Thankfully, their more niche open source contributions, while not particularly polished and documented, might end up being more useful than the original reddit repo. I know I've been meaning to look into the Websocket one.