5 Web Frameworks to Watch in 2020

A long time ago, getting a web application online meant using PHP without any kind of framework. We had to write out all our data validation by hand (uphill, both ways, in the snow!). Kids these days don’t know how lucky they have it…

Then along came Ruby on Rails, which arguably kicked off the “web framework” world. It cut out a lot of boilerplate and added heaps of safety features that we take for granted today. It’s not the powerhouse it once was, but the concepts it introduced and popularised set the stage for today’s powerful and versatile web development frameworks. Its main selling points:

  • ORMs to abstract database access and remove the need to write manual queries, and prevent SQL injection hacking attacks.
  • A template system to automatically escape HTML in output.
  • Form validation and generation.
  • Separation of code to follow MVC (model, view, controller) paradigms.

Nowadays these are common, and there are a plethora of web frameworks to choose from. There’s probably one designed for whatever language you choose to code in. Here’s a quick overview of five of the most popular, powerful or just plain interesting web frameworks in 2020.

Skeleton at Computer
A good web framework starts with great bones.

Vapor (Swift)

Vapor

What is it?

Vapor is a web framework that’s written in Swift the language that powers iOS and macOS applications. It offers database connectivity, a powerful authentication framework, templating, form validation, and more.

Why is it interesting?

Swift was announced in 2014 as a replacement for Objective-C, specifically designed for Apple platforms. In 2015 it was open sourced and made available for Linux, meaning that Swift could run on commodity virtual machines and not require Apple hardware.

Essentially, this means that specialist iOS developers can now write code for the web. This can mean that moving talent between projects becomes easier, as there is only one language to learn. Additionally, as Swift is a full-stack language, working on a Swift project means that all of your developers are effectively full-stack capable, which means that tracking down production issues can become much quicker.

Phoenix (Elixir)

Phoenix

What is it?

First, a short history lesson. Erlang was invented at Ericsson in 1986, to run telephone switches. As such, performance, reliability and stability were its core goals; it’s designed to run constantly for as long as possible, such that its applications can stay operating regardless of glitches or minor crashes. It was open sourced in 1998; Erlang: The Movie is required watching for any budding computer scientist.

Even if you haven’t heard of Erlang, you’ve probably heard of WhatsApp. Erlang powers its backend and lets users sends billions of messages every day.

WhatsApp
Guess which language this puppy uses.

Now, everyone’s heard of Java. Java runs on a virtual machine called Java Virtual Machine (JVM), and eventually different languages (like Kotlin) which could incorporate Java libraries were written that could compile and run on JVM. In much the same way, Erlang was written to run on a virtual machine called BEAM; as time went on, new BEAM-using, Erlang-compliant languages emerged. Elixir is one such language.

Phoenix Framework is written in Elixir, and offers the usual suite of database integration tools, templating, form validation, and so on.

Why is it interesting?

The introduction to Erlang in the previous section should have given you some idea why this is an interesting project. With resilience and performance forefront to its design, being able to leverage those characteristics in your web application is very attractive.

Elixir (and Erlang) use extremely lightweight “processes” inside BEAM – these are different from system processes. Like system processes though, they run simultaneously and do not share memory. It’s not uncommon to have tens or hundreds of thousands of processes running in a BEAM VM. Information is passed between processes using messages.

Because of this isolation, error handling in Elixir can be a bit different than you might be used to with other languages. Processes can safely crash without taking down other processes, and it’s up to the parent process to ultimately decide how it’s handled.

So, more speed and safer programs. What’s not to love?

Integrated Haskell Platform (Haskell)

Integrated Haskell Platform

What is it?

Often when we think about web development, we think of the scruffy worlds of PHP or JavaScript, where type safety doesn’t exist and pretty much any code will execute (“correct” output be damned!). Haskell is the polar opposite of this. It’s purely functional and very strict on its types. Can a web framework be built to work with this?

The folks at Digitally Induced think so, and have built Integrated Haskell Platform, or IHP for short. The usual suspects of form validation, templating, session handling and database integration all appear here.

Why is it interesting?

The first thing of note (apart from the fact it’s FREAKING HASKELL) is that it uses the Nix package manager. This clever tool is too potent to be effectively summed up in a few short sentences; it’s simplest to say that it makes isolating environments with different versions of software much easier, so you can quickly switch between them depending on which application you’re running. Kind of like Python VirtualENVs, but for your whole OS. This makes deployments much simpler as there is less dependency hell of getting the right versions of software when deploying to a new server.

IHP also includes HSX which does for Haskell what JSX does for JavaScript. Namely, you can write HTML but intersperse Haskell code to interpolate values, execute loops, and so on. HSX is parsed so you will get a syntax error if it’s invalid straight away, instead of having to load it in the browser to check.

Finally, the obvious benefit is Haskell’s type safety, which should allow you to pick up errors long before they are deployed to a server and found by users. This includes a type safe schema that’s generated from your SQL server, to allow for safe queries to your database (although only PostgreSQL is supported).

Rocket (Rust)

Rocket

What is it?

Rust is the new programming language darling of the world. It’s been Stack Overflow’s most loved programming language for four years in a row. Its dependency management is easy; it’s low level so it’s fast, but also memory safe and type safe.

Rocket is built on top of Rust and, like the other frameworks we’ve seen, allows you to utilise the safety of the language for a more reliable web application. It includes templating, cookie support, types in URLs, and more. Plus, it allows you to use Rust’s many third party libraries for database connectivity and so on.

Rusty Rocket
Despite the name, this rocket is not actually rusty.

Why is it interesting?

By taking advantage of Rust’s language features, Rocket can reduce the amount of boilerplate there is to write. As an example, URL routes can be added in the same file as functions, similar to how Flask works in the Python world. In a way, you’re getting the expressiveness of Python combined with the compile-time enforced safety of Rust.

Django (Python)

Django

What is it?

At Tera Shift, we love Django, so of course we couldn’t get through a blog post without giving it a mention. It’s been around for 13 years, which is much longer than any of the previously mentioned frameworks. However, it’s still being maintained and actively released.

It includes templating, an ORM (for easy database communication), form validation, cookie and session handling, and a graphical admin interface.

Why is it interesting?

The granddaddy of Python frameworks is still being actively maintained. There’s a vast collection of third-party Python libraries that you can use to add functionality. New features like ASGI support bring performance enhancements and support for HTTP/2 features. On top of this, there are heaps of linting tools out there like Mypy to bring type safety to your Python.

In short, it’s easy to learn, has a proven track record and is still being actively developed; as such, Django is still a great framework to use in 2020.

Conclusion

With the advent of languages that are both safe and performant, there are also many web frameworks developed to make full and effective use of them. You can choose to use a framework that enables consistent use of a single language across your entire dev team (Swift or Rust). Maybe you’d rather leverage the safety and performance of languages like Haskell or Elixir, or go with the battle-tested veteran (Python/Django).

In any case, there’s never been a better time to be a developer in this space; more choice means more competition and influence between the various frameworks, but it also means more development, more tools, more user-friendliness and more raw capability. Ultimately, there are multiple excellent options out there that’ll fit your needs.

About Tera Shift

Tera Shift Ltd is a software and data consultancy. We help companies with solutions for development, data services, analytics, project management, and more. Our services include:

  • Working with companies to build best-practice teams
  • System design and implementation
  • Data management, sourcing, ETL and storage
  • Bespoke development
  • Process automation

We can also advise on how custom solutions can help your business grow, by using your data in ways you hadn’t thought possible.

About the author

Ben Shaw (B. Eng) is the Director of Tera Shift Ltd. He has over 15 years’ experience in Software Engineering, across a range of industries. He has consulted for companies ranging in size from startups to major enterprises, including some of New Zealand’s largest household names.

Email ben@terashift.co.nz