Quora is the most popular question and answer forum that consists of all the categories of discussion. If you have a Quora account, you know how deep the rabbit hole goes. There are so many features and functionalities that it no way less than a complete social network site. The question and answer platform are more like the comment system on the social network site. There is up and down vote and share option. One can see the views on any particular answer.
There are options for bookmarking, suggesting edits, thanking the writer, report the answer, and much more. As a user, you can do a whole host of activities like following a particular category or niche, you can follow another person and write messages, and most importantly, write blogs. If you are wondering as a programmer what it will take to create such a platform, the following is the answer you are looking for.
Programming Languages and Frameworks Behind Quora –
It is very clear that developing such a robust platform requires multiple programming languages. Since most of the developments are taking place through framework these days, it is safe to assume that there are multiple frameworks used in creating Quora. According to the Wikipedia page of Quora, there two main programming languages used are Python and C++. It is written by two former Facebook employees Adam Angelo and Charlie Cheever. It has been stated that they chose C++ over C for its high-performance services and sustainability over the long run.
Frontend and Backend – The frontend of Quora has a lot of PHP coding. Out of that, quite a lot has been written in XHP. Furthermore, there is an extensive use of JavaScript which is indispensable for any web platform. As for the backend, the majority part of it is written in C++. But the new features are mostly written in Python. The communication between backend services and web frontend is through Apache Thrift. As for the iOS app, Objective C is used, and for the Android app, Java is used. As per some internal sources, the use of programming languages like Ruby, Haskell, and Ocaml are used. To be more precise, Python has been used where C++ was lacking speed. But C++ has been retained for various critical features. In fact, the Thrift service is also written in C++.
Frameworks – The Tornado Web Framework is used for live updating. This helps in better handling of huge open connections and long polling as well as push notifications. Apart from these, HAProxy for the frontline and Nginx for the reverse proxy server have been used. Along with that, Pylons has been used. On top of that, Webnode2 and LiveNode are used internally for managing the content. The job of Webnode2 is to generate HTML, JS, and CSS for displaying the content for the web pages.
For the database part, it is using MySQL which syncs well with the frontend PHP technology. As for the caching mechanism, it is using Memcached and this is why it is so fast in responding. For the hosting part, it is using Amazon EC2 and S3. Stachshare is a platform that can unveil the technologies, programming languages, and frameworks used on any web platform. As for Quora, the web servers belong to Nginx, the database belongs to MySQL, the main programming language is Python, Cloud hosting is Amazon EC2, and Cloud storage is Amazon S3. The JavaScript UI Libraries is Zepto, Message queue is Amazon SQS, Transactional email platform is SendGrid, DNS management is Dyn and Amazon Route S3, and Load balancer is HAProxy, and AWS Elastic load balancer. These are third-party tools and services. The co-founder of Quora stated that they chose Python over PHP because of the development time would have been slow. It was also due to the fact that the co-founders knew C++ and Python better.
Final Words –
If you are a programmer and wanting to develop something similar or any such big platform, you need to understand the developmental stages of Quora. The programming languages and frameworks have to be something that can take a huge load and have scalability. Quora team has done a fantastic professional job by developing the parts one by one and integrating them with the platform. First, the basic Q&A platform was done followed by adding videos in Q&A pages.
Then came the credits system and threaded comments and voting system. Then they introduced the top writers program to encourage the writers and give them recognition. Almost one year later, they introduced the blogging platform. The bounty program has innovative to provide financial bounties to the best answer to selected questions. Now they are working on advertising the pages and introducing multiple languages. Once the planning is done and you have decided the modules, you can choose any programming language you are comfortable with like Python or Java and get started.