Social Fixer Is Partly Broken. Here’s Why…

broken_facebookSome features of Social Fixer are not working correctly for many users – marking posts as read, auto-clicking for more stories, and some filtering functionality. I am very frustrated by this and I am trying hard to fix it. Here’s an explanation of why it is how it is and where it stands now…

Current State – Beta Version Is Better, But Not Perfect

I have released a beta test build on the Social Fixer Development page which fixes many problems users are having, but not all. The reason I have not released this update yet is mainly because one issue is still not fixed – loading of More Stories.

imageWhen you hide posts in the news feed through filters or by marking them as read, the news feed is empty. This confuses Facebook’s code, and it thinks you have scrolled to the bottom of the feed because the “More Stories” footer is visible. So it tries to load more, and gets into an infinite loop, loading hundreds of stories and causing the page to slow to a crawl. It becomes unusable. As long as Social Fixer provides the potential to empty out the news feed, this problem exists. The methods I used before to account for this no longer work, as they have completely new code to control it, which I have not yet been able to hook into.

When this issue is resolved, I will release an official update that fixes many, but not all, of the known issues. So… what caused the issues to begin with?

Why Is It Broken?

Facebook’s Internal Code Structure Is Constantly Mutating

Social Fixer works by inspecting the underlying HTML code structure of the web page, processing it, and manipulating it. When they change their internal structure, Social Fixer no longer knows how to take it apart and change it, so it stops working. Lately, Facebook has been changing their internal code structure a lot, and I can’t keep up (these changes are not visible on the screen, just in the code). Sometimes the entire code structure changes after a simple page reload. Crazy. This is why filters are not able to properly process things like “commented on”, etc at the moment – because they are contained in a structure that Social Fixer can’t recognize with its current code.

Remember the redesigned News Feed that Facebook announced earlier in the year? They have scrapped it, because apparently users did not engage with it as much. But some of the internal code changes from that redesign are leaking into the existing news feed, which is driving some of the changes. Also, they are increasingly using their React javascript framework to build their content, which makes it very difficult for me to work with.

Facebook’s Code Is A Mess

If you aren’t a web developer, it’s probably hard to appreciate how insane Facebook’s code is. Trust me. It’s insane. It’s ridiculously complex, obfuscated, minified, and unreadable. They use programming methodologies that are rarely seen on the web, because they face problems of scale that few other sites do. The end result is that it is increasingly difficult for me to reverse-engineer their code and figure out what it does. I trace through functions named xa() and eb() and __d() and try to infer what they mean and how they are intended to work. It’s very difficult. Don’t believe me? Check out the screenshot below of one of their many javascript files! This is what I work with, and I need to go through a number of steps to manipulate it into a form I can even begin to comprehend:

code

Code And Features Are Inconsistent Between Users

Facebook is constantly testing features and code changes, so not every user even sees the same things. The underlying code for one user may be very different for someone else, so a feature that works for me may not work for you. I do not have access to see every version of code sent to every user for every feature. So I work with what I can see, and hope it works for everyone else, too. Unfortunately, the disparity between code sent to different users is growing.

Facebook Is Making Its Code Harder (or Impossible) To Manipulate

5jny7[1]As crazy as their code is, I used to be able to access it and manipulate it once I figured out what it was doing. Not so much anymore. They are coding using new patterns that prevent external apps like Social Fixer from touching some of the internal functionality. It’s hidden from me and inaccessible. So in some cases, I simply cannot do some of the things I did before. Variables and state are hidden inside private variables contained within closures, and I can’t access to them. They are doing a good job of locking me out, which I assume is part of their intent.

I’m Busy And A Bit Overwhelmed

I’m human, and I have lots of things going on. It is the holiday season and I have a family and a regular full-time job that is increasingly stressful. I have not been able to find as much time to work on this as usual. And since it’s increasingly daunting and headache-inducing, sometimes I just can’t make any progress after I sit down at 11pm to try to fix broken features. Honestly, I’m really tired, and pretty overwhelmed. But that will pass.

It’s Christmas! About Donations…

santa_logo1This time of year, donations usually slow to a trickle, and that’s fine – people are buying gifts for family and friends, or donating to worthy causes. That’s great! I hope that if you have to choose between donating to this software project or buying a child a gift from the Angel Tree, you would choose the latter.

But I have received a few mails from people asking how to donate because they wanted to spread some “Christmas Cheer” to me. I always appreciate that, and if your generosity this time of year has any room for a random guy on the internet, you can go over to the donation page to send me some Christmas Cheer. Thanks Winking smile 

Stay Tuned! It Will Get Fixed!

I may not be able to fix everything perfectly, but I will maintain my focus on empowering Facebook users to make the most efficient use of the site possible. I hope you’ll stick with me even through the times where things are broken. My hope is that I always add enough value that the good parts over-shadow the broken parts!

Are You A Javascript Wizard Who Wants To Help?

I’m always looking for people to assist in understanding Facebook’s code or even work on finding fixes for issues. If you’re an expert at javascript and want to give it a shot, let me know. If you’re good, you’ll figure out how to contact me. heh.

Matt Kruse, developer of Social Fixer