Choosing a web framework to build a website: Ruby on Rails, Python Django, or Node.js?

posted in: Uncategorized | 0

Introduction

The Internet enables people to build digital properties that transcend national boundaries. The earliest Internet websites in the 1990s were simple static web pages, limited by the technology of that time. Nowadays, massive data-driven websites can be constructed. The question now is which computer language and web framework to build such a website.

Several computer languages exist. In the early Internet (early 2000s), Perl and PHP enabled data-driven websites. Examples of such websites are Facebook and WordPress. Websites built in these languages, however, ran into scalability and performance difficulties. The software engineering community learned from these early mistakes and introduced more scalable web frameworks.

Three Modern Contenders

Three web frameworks that are popular today (December 2012) are Ruby on Rails, Python Django, and Node.js. Let me offer you my biased opinion based on sample data from a major metropolitan in the United States. I spoke with many web developers and attended meetups to obtain these results.

Ruby on Rails

Ruby language was created in Japan in the 1990s but relatively unknown in the United States until early 2000. Rails framework was built on the Ruby language to provide common features for running a web server, the component that serves content for a website.

Using Google Trends to analyze activity for Ruby on Rails, we see that it first appeared in 2005 with peak search activity between 2006-2007. The current trend is a decline year-over-year for search activity. This implies that when first released, Ruby on Rails was very active and it has settled into an equilibrium state with a gentle decline year-over-year in popularity.

Ruby on Rails has a large community of developers. In my sample metropolitan, for example, regular meetups are held monthly. Workshops and tutorials introduce Ruby on Rails to newcomers, e.g., RailsBridge. Several online tutorials are also available for learning.

Ruby on Rails is a relatively stable platform; however, switching between Ruby 1.8 and Ruby 1.9 language has caused significant code-breaking changes to Ruby on Rails. Another issue is a lack of Ruby on Linux and old version on Mac OS X. Mac OS X comes out of the box with Ruby 1.8, so developers using Ruby 1.9 will have to upgrade their laptops. Some have reported scalability issues with Ruby on Rails, but I have insufficient information at this time to make a conclusion.

Major websites that use Ruby on Rails are Twitter and Airbnb.

Python Django

Python language was created in the early 1990s and used for scripting. Python language has also been used in the scientific community, e.g., Numpy, Scipy, and I-Python, which are popular among computer science graduate students.

Python Django framework was introduced to build a web server around mid-2005, about a year after Ruby on Rails. According to Google Trends, it started off slow but its search queries have been increasing year-over-year. Unlike Ruby on Rails, there is no large spike in traffic when the framework was introduced.

Python Django also has a large community of developers. In my sample metropolitan, regular meetups are held monthly. The extended Python language community is also more diverse with meetups for scientific computing, visualization, and web frameworks.

Python Django is a relatively stable platform. A major bonus of Python over Ruby on Rails is its pre-installed 2.6 availability on Linux (esp. Ubuntu) and Mac OS X. Good developer tools are avialable for Pycharm, which help to write and debug Python code.

Major websites that use Python Django are Eventbrite and Instagram.

Node.js

Node.js is a web framework written in JavaScript. JavaScript is the language used universally by all websites and web browsers for client-side interaction. Node.js reuses Google Chrome’s JavaScript runtime environment, V8, to run a web server.

Compared with Ruby on Rails and Python Django, Node.js is a newbie. It first appears in Google Trends in 2010.

Given that Node.js is a relatively new web framework, it does not have the years to build online resources and community. I do not know much about the Node.js community.

I consider Node.js to be unstable at the current time. Node.js is built on JavaScript, which is an incomplete language. It does not provide object inheritance, which forces developers to build creative workarounds. For instance, libraries such as Underscore.js (in a web browser) provide language alterations that should have been included in the language. Its fixed-up version ActionScript is licensed to Adobe Systems. Also, I am not aware of good developer tools for writing and debugging server-side JavaScript.

Conclusion

I would argue that any new project started today should be written in the Python Django framework. Many computer science students are trained in the language, especially at the graduate level, which ensures a strong baseline for developers. Choosing Ruby on Rails is also a good choice as an alternative, though the Ruby language is a bit more complicated. I do not recommend using Node.js due to lack of stability of the language, libraries, and developer tools.