Choosing the right framework

Choosing the right framework

Choosing the right framework for your software project can sometimes be as tricky as navigating rocky terrain. In this post, we will examine the most popular software frameworks available today, and the suitability of each for each software purpose.

But first, to better understand, some basic concepts are necessary. I will mention them briefly.

Web Applications

Most software usually has two components: the Visual component, and the Logical component. The Visual component displays everything to the user and also receives user input. The Logical component processes everything, it converts user input into useful output, and also performs all necessary activities such as saving to the database.

A typical desktop application, the kind that you download and install, the same software performs both The Visual and The Logical responsibilities. This is known as a Single-tier Architecture, because both components coexist within the same software package.

Web Applications, on the other hand, are substantially different. There are many subtle differences, but the main difference is this: The Visual and The Logical responsibilities are physically separated to the point where they’re even performed by different machines. This is known as a Multi-tiered Architecture (or a Client/Server). And this is why you can access any Web Application (and Website) from any device with an Internet connection and a Browser.

Multi-tiered (client/server) Software Architecture

Anatomy of a Multi-tiered (client/server) Software Architecture

Benefits of a Multi-tiered Application

Because Web Applications use Multi-tiered Application, this means several things. For one, your future users won’t have to install anything (other than a Browser) to use your software. No longer will it matter if your users have Windows, Mac, or Linux machines — as long as they have a Browser, they can use your software. Now that’s amazing!

  • No software to download or install
  • A million users can use your software as easily as just one (provided that the Web Application is well designed)
  • There’s no device limitation, users can use Laptops, Smart Phones, Desktop Computers, Televisions, Game Consoles — as long as they’re connected to the internet, there’s no limitation
  • Any bug fixes and improvements are immediately available (and applied) for all users, without requiring them to update or install anything.
    • Because of this, you can launch a simple version of your software, and improve it over time: all users will immediately see the improvements as they are made available.

Types of Frameworks

Because The Visual and The Logical parts of a Web Application are separate, this means that there are Logical frameworks and Visual frameworks. Although these are separate, they can work together to produce amazing results.

It’s important to choose the right framework for the right job. Some are better suited to Blogs and simple Web Applications, while others have no size limitations but require much more work. In the following sections, I will list the frameworks that we have experience with here at LionMane Software.

Convention over Configuration

Java introduced us to amazing software frameworks like Spring or Glassfish, for building Client-Server style applications. These are extremely flexible  frameworks, but the downside is that they require an endless number of configuration files to tell the framework everything, from where Models and Data are located, security configurations, ORM definitions, deployment options, etc. The configurations got so daunting, that sometimes it took as much time configuring the frameworks, as it did developing a small application!

And then came Ruby on Rails. Ruby on Rails was a light-weight, full-featured software frameworks built on Ruby language, that decided to entirely do away with configurations! Instead, there are conventions. If you put a file in a certain directory, then it is considered a Model. If you place another file in another directory, then it is considered a Controller. Ruby on Rails got rid of most configuration files by simply applying certain conventions… and it worked beautifully!

Nowadays, most non-java software frameworks embrace this philosophy of eschewing configurations in lieu of conventions, which is why these frameworks are said to be Convention-over-Configuration. We believe strongly in this concept, because it saves a lot of time and makes it very straightforward to setup a new project. Most of the following frameworks embrace the Convention-over-Configuration philosophy.

Backend Frameworks (The Logical)

Backend framework run in the Server, which is The Logical part of your web application. These are typically written in languages such as PHP, Python, Java, Ruby, and even Javascript.

The Backend generates the data required by The Client, which are webpages in HTML, CSS, and Javascript. It typically uses information stored in a database in conjunction with user provided information to generate these webpages. The webpages get sent to the Client, where they are displayed for the End-user to view them.

PHP

  • Laravel (In our opinion, Laravel is the BEST framework PHP-based web applications of any size. We currently use Laravel for many of our clients’ projects.): https://laravel.com/
  • Symfony (Laravel borrows much from Symfony, so we also heartily recommend it): https://symfony.com/
  • WordPress (We use wordpress for this blog, and we are very happy with it!): https://wordpress.org for self-hosted blogs, https://wordpress.com for managed blogs
  • CodeIgniter (CodeIgniter is an older framework, but we feel is now outdated. However, it’s still a great option.): https://codeigniter.com/
  • Drupal (Drupal has a different approach to building Web Applications.): https://www.drupal.org/

Python

Java

Ruby

Javascript

Frontend Frameworks (The Visual)

Frontend frameworks run in the Client, which is The Visual part of your web application. These are typically written in languages such as CSS (including LESS and SASS), and Javascript.

UI frameworks

These frontend SDKs include ready-made UI components & CSS classes that make creating UI’s faster & simpler.

  • Bootstrap (A popular CSS framework, but also contains useful UI components)http://getbootstrap.com/
  • jQuery UI: (From the makers of jQuery, this is a framework of ready-made UI components. 
  • Vue.js (A framework for building User Interfaces, with some concepts borrowed from AngularJS): https://vuejs.org/
  • Dojo (A toolkit full of useful UI components and utilities that help build front-ends): https://dojotoolkit.org/

Function Frameworks

These frontend SDKs introduce architectural paradigms. Each paradigm has it’s pros and cons.

Tools

  • jQuery (A must in any Frontend project, jQuery makes dealing with the DOM & AJAX very simple & elegant, and it abstracts the inconsistencies between browsers)https://jquery.com/
  • PrototypeJS (Similar to jQuery, this tool simplifies handling of DOM & AJAX): http://prototypejs.org/

And The List Goes On…

I’ve listed the popular frameworks that we’ve used here at LionMane Software. But the list goes on and on! A full description of each of these Frameworks with their strengths and weaknesses, is on the works 🙂 but for now, I’d like to share some links: