This page may be out of date. Submit any pending changes before refreshing this page.
Hide this message.
Quora uses cookies to improve your experience. Read more

If Facebook starts in 2018, what language, framework, and database will they use?

14 Answers

Knowing that Zuck had a pretty clear idea of the product, and that he was a very good programmer at that time, if her was a student in 2018 he would surely have some grasp of current trends. Assume he also liked coding, as in creating things and solving problems(and not as much of a Business mindset to make billions, which is where he was before he moved to Palo Alto). Assume some social media product has been already been created although none successful as a businesss, which means most basic engineering challenges related to scaling writing posts, content delivery, news feed / notificatikn through different mediums and what not has been somewhat tackled on. Assume Google and Amazon is in the same prominence. Assume concept of virtual dom hasn't been invented so no Vue and just Angular. Then Im guessing Zuckerberg would've probably done the following:

Backend Architecture: probably monolithic but as soon as he decides to extend the support to Y, H and S, would've overhauled to adopt Kubernetes for scalability(or maybe serverless?)

Backend middleware: Node.js based framework for most, probably Go where more performance would be expected. If he's more of a nerd than what I imagine, probably Apollo GraphQL.(+edit: GraphQL wouldn't have existed so probably REST, although he would've been frustrated with it and tried to create some sort of query layer). If he's less of a nerd than what I imagine, then Spring / Django / Flask with REST since Harvard teaches Java and he probably just knew Python through Statistics he would've done using Python libraries.

Persistence: combiation of Postgres(because who likes Oracle), MongoDB(since he probably wouldn't have wanted the hassle of managing Cassandra, hated the query ability of Dynamo, no student really messes with BigTable or Azure products, and Mongo's been hip for the past 4 years so as a teenage nerd he probably would've played with it), Neo4j(defacto for relationship especially if you don't expect to expand in a global scale). Would've probably quickly added Elasticsearch for global search due to Postgres unable to process query on many different fields.

Caching layer: Redis cluster for model / external service call caching + CDN for response and media caching

Frontend: He would've probably hated Angular so In guessing he would've coded in pure ES6(which he would've been pretty damn good at) + sass.

Ben Baert
Ben Baert, Developer

I would opt for Java, because it's an enterprise-ready language, statically typed and with a ton of programmers available, which makes hiring easier. This is a language suited for building very large, performant and maintainable applications, unlike more popular options such as Python, Ruby or, god forbid, PHP.

They could use the Play framework, but this isn't that important. The most important thing is that you get language choice right. The web framework will likely be replaced with custom code pretty soon anyway. As the site develops, there may be a trend to develop Rest APIs that can be consumed by some front-end framework. Again, language choice is more important than framework choice.

Of course, Facebook consists of many applications that can be written in a suitable language. Something like a spam detection service can be written in Haskell, internal tools can be written in Python.

In terms of database choice, I'd say MySQL in combination with Neo4J for social network querying. MySQL is very reliable and nearly all developers are familiar with it. Neo4J is relatively new but currently enterprise-ready as well.

For the front end, I would suspect that, since React wouldn't be around, Angular or my personal favourite, Vue.js, would be used.

If they were developing a prototype, I’d wager they’d use Meteor. It's very well suited for these sorts of highly interactive applications, but I'm not sure to what extent it would scale to the levels required by Facebook.

Audra Kazkoks
Audra Kazkoks, 12 years as a developer

I think, it will be:

Backend: .NET CORE or Java framework like Spring (but not GoLang, because it created by Google).

Frontend: only Nodejs (without doubt) with React.

DB: PostgreSQL, MongoDB.

Ryan Jentzsch
Ryan Jentzsch, I've had my fingers in nearly every language from Assembly & COBOL to C# & PHP

I’m assuming you are asking: If Facebook were to be invented in 2018 what tools would they use to build their platform?

React is invented by Facebook so if FB started in 2018 that framework would not exist. So the primary choices would be Angular, Vue, and Ember for the front end framework.

Facebook used PHP as its back-end when it first started, and then created their own PHP compatible language called Hack which runs on an engine that FB also created called Hip Hop Virtual Machine (look it up I’m not making this up). In 2018 they would likely either choose PHP 7 (a vastly improved PHP over past versions), Kotlin, Java, Python, or even C#.

Database choice would likely be free open source that scales. Wikipedia uses MySQL, so that is definitely a contender. MariaDB, PostgreSQL, MongoDB, and Firebird are also likely choices.

EDIT: It has been pointed out to me in many comments that different technologies influence each other. For example PHP 7 may have never been created as it stands today — if FB hadn’t created Hack/HHVM then PHP would have no competition, and therefore no overriding reason to improve. Calculating for the Butterfly effect in alternate history questions is impossible since even small seemingly insignificant changes to a large system can have significant impact elsewhere in the timeline of history.

Michael Bach
Michael Bach, Former NLP/Text mining consultant & developer @IBM

Assuming that Facebook never existed and the frameworks they wrote - like React - which would be perfect for their needs didn’t exist.

Given the data they have to handle, my bet is on a Graph database like OrientDB which scales pretty well. Something like Neo4j wouldn’t work, because it doesn’t scale across multiple machines and actually doesn’t handle that sort of data volume well (in my personal experience). Maybe combined with ElasticSearch.

For UI, they might either go the fat client route using Angular 6. I could also imagine them using PHP 7 and a self-written UI framework - or something fairly thin like Vue or JQuery.

Mohammed Amine Tazi
Mohammed Amine Tazi, CEO and Founder at Architeo (2015-present)

My guess :

  • Front-End : React.
  • Back-End : NodeJS.
  • Database : MongoDB.