Last year back when Quora was beta, someone pointed this Quora entry out. I explained why this guy was mistaken and let it lie. But, since a friend sent it to me recently, I guess people are actually using Quora (or something) and this deserves a response
The page being discussed is part of a larger article I wrote (and never finished) here. In the page linked, there are almost none of my opinions, but rather a summary of what was provided by Haiping during a briefing at Facebook. The outline of the page is as follows:
- PHP has some inherent advantages as a programming language for web development.
- PHP has some disadvantages (for Facebook). The biggest are:
- High CPU
- High Memory usage
- PHP components are not easy to integrate from outside
- Extensions writing is not the same as PHP coding
- There were multiple attempts at Facebook to migrate from PHP but they failed: Mainly because an re-architecture team cannot keep up with the new code that is being written by the rest of Facebook—mostly writing new PHP code. The year before the presentation alone had 4 attempts at internal migrations
- Improving the PHP core was done at Facebook and, in fact, received a lot of mileage, but this was not felt to be sustainable vs. HipHop solution.
His beef with me
The answerer accuses me of making “subtle and gross misconceptions” and yet points out to not a single one I’ve made. His whole “beef” with me actually re-enforces the thesis of the section: HipHop was written because migration away from PHP at Facebook was unfeasible. Furthermore, many attempts were done at Facebook to migrate away unsuccessfully from the PHP language—there no need to bring up “industry precedent” as Facebook had at least four internal attempts to do so.
In fact, numerous posts on this blog as well as in seminars and such I’ve railed on attempts that have tried to migrate to PHP from other architectures—as examples, I use a large Perl/Mason site and a Java social network that predates Facebook by a country mile.
My beef with him
Which brings me to my “beef” with this poster. Yishan is guilty of an ad hominem in which he accuses me of knowing nothing (simply because I didn’t work at Facebook) while piping his credentials (simply because he worked there at some point). Facebook had multiple attempts to migrate from PHP which failed. They failed for the reasons outlined on the link because those reasons were pulled directly from Haiping’s presentation.
If he is “never offended” and so humble, then why does he engage in such a deliberate and personal attack at me without citing a single point of evidence? If he is so willing to allow others to “edit for one of [his] answers,” then why, in over a year, has he not corrected this gross oversight? A user is going to read his vapid response, look him up on Quora, and have a very unfair view of me without taking to time to actually realize that nothing he said refutes what I wrote, or that I was just summarizing a presentation made by someone else. People are going to read his article and think that I’m some idiot no-nothing who is trying to criticize from a point of authority when <a href=that criticism is misdirected.
Furthermore, he behaves as if Facebook engineers are somehow amazing at working around flaws in the PHP stack and having “excellent internal discipline via code convention and style”. Yeah, that’s why there is a patch to PHP core from Facebook to allow
call_user_func_array() to allow more than 200 elements in the array—because the genius coders at Facebook somehow found that parameterizing a function with > 200 parameters is a good thing and exemplary code?! That is why a couple of engineers who predate Yishan had a secret internal website where they kept similar such code snippet gems written by their peers. Watch out Yishan, some of your code may have been archived there!
My beef with Quora
This brings me to my final beef with Quora. In the full year this article has been up, I’d think someone would have pointed out that this guy actually never pointed to a single place in the link where there was a “subtle” or “gross misconception.”
You’d think that after a year someone would have said, “Hey you know what, Yishan, your post actually just repeats what he is writing. Does that mean, you too, are full of subtle and gross misconceptions?”
And you know why that never happenned? Because this guy is some Quora elite and Quora is too cult-of-personality to even allow for the possibility that the guy was probably just having a bad day at Facebook. Maybe it was because he led one of those aforementioned re-architecture failures. Maybe it was because one of his reports at Facebook had decided
call_user_func_array() with 200 elements worked out so well—maybe 10,000 parameters would be even better! Maybe it was because he could have written the same shit as me but was too fucking lazy—and somehow my shit got linked and his Quora shit didn’t, and that pissed him off.
The Quora community has allowed this to lie for a year without comment and I’m still fielding e-mail linking to it… Argh!
So much for the “accumulated, reusable, collaborative, continually-improving, organized, targeted knowledge” if that accumulation accounts for accusations, and continually improving collaboration is the rest of the people saying what a genius their idols are for writing no-content fluff.
Let’s see if I can offend…
From the answerer’s Quora profile page:
I am never offended if you suggest an edit for one of my answers (even if I don’t end up using it), so if you spot a typo or other error, please don’t hesitate to correct it.
Let’s put that to the test, shall we?
It’s been a year, Yishan. You have a year to correct your personal attack on me, while you got the kudos of the hangers-on at the cultish website you write on. You were having a bad day, and decided to take it out on me using your platform and reputation on Quora, without giving me an opportunity to respond.
Re-read the article and correct your shit so the idiot lapdogs at Quora can continue to suck your cock and feed your ego. This way, I won’t have to keep sending replies to people who keep forwarding this shit to me, and trying to calmly explain to them why you were being a complete Facebook tool the day you wrote your entry.
And think twice before you try to pull the fact that you worked at Facebook on your betters.
His shit to follow
That article contains a number of subtle and gross misconceptions where the author appears to combine some partially-bad information he has with complex new information that he doesn’t seem to fully understand. I would not rely on that article for anything, as it commits the worst sin of sounding authoritative (and correct) on a fair number of things and then saying or implying a small number of totally incorrect key things.
The reason Facebook hasn’t migrated away from PHP is because it has incumbent inertia (it’s what’s there) and Facebook’s engineers have managed to work around many of its flaws through a combination of patches at all levels of the stack and excellent internal discipline via code convention and style – the worst attributes of the language are avoided and coding style is rigidly enforced through a fairly tight culture of code review (failing to adhere to the style and “going cowboy” by writing sloppy code results in pitiless mockery by one’s peers). Engineering management has never had to take a strong hand here; this arose largely due to key internal technical leaders just sort of corralling everyone else along.
There is also a lot of industry precedent indicating that re-writing an entire codebase in another language is usually one of the worst things you can do, so at all levels there is a reluctance to do that. The preferred strategy is to write new components in a de-coupled manner using a better language of choice (C++, python, Erlang, Java, etc); this is easily facilitated by Facebook’s early development of thrift, an efficient multi-language RPC framework. This also helps avoid the worst effects of PHP: it can be totally avoided in subcomponents where the language is grossly-unsuitable. The broad effect is that the overall codebase slowly evolves away from depending as heavily on PHP, with the components that are still in PHP being written in tightly-controlled, disciplined ways by veteran members of the staff.