Go Web Framework Comparison Essay

Since its introduction, Google’s Go Programming Language (Golang) has been experiencing an increasing popularity among mainstream users. In a December 2016 survey, 89% of the 3,595 respondents claimed that they program in Go at work or outside of work.

Additionally, Go ranks highest among the programming languages in terms of expertise and preference. In July 2017, Go ranked 10th in Tiobe’s Programming Language of the Year, jumping from 55th last year.

Clearly, Go is attracting many programmers from various disciplines and software development outsourcing professionals. And it’s safe to say that this is due to the ease of using Go.

As a compiled, open-source programming language, Go makes it easy for developers to build simple, reliable, and efficient software. It is the product of the innovation and evolution of the more conservative languages such as C and C++.

With Go, the amount of code typing is reduced and writing robust APIs without sacrificing performance has become easier. Designed for scalability and concurrency, Go makes optimizations possible. A compiler can perform all the code inspection work before runtime.

We’ve compiled a list of the top frameworks, IDEs, and tools for Golang for your quick reference. Bookmark it on your browser so that you can come back whenever you’re working with Go!

Frameworks for Golang

Web frameworks help developers build applications as easily and quickly as possible. Go is still relatively new, so it’s important to use frameworks with sufficient documentation.

Here are 9 frameworks you can use to help you build projects using the Go Language.

1. Revel

As a high productivity framework for Go, Revel includes a Hot Code Reload tool that lets you rebuild your project on every file change. It also includes a wide variety of comprehensive and high-performance features, so you don’t need to find external libraries to integrate into the framework.

2. Beego

Beego is a full-fledged MVC framework with its own logging library, ORM, and web frameworks. You don’t need to find and install third-party libraries. It features a built-in tool called Bee Tool that watches out for code changes and runs tasks when changes are detected.

Beego will save you a lot of hours, especially in the beginning of a project when you’re figuring out the logging framework or application structure.

3. Martini

Inspired by Sinatra, Martini is an extremely light but powerful framework. It was developed for writing modular web applications and services in Golang.

It features a non-intrusive design that’s quick and easy to use and includes a wide range of handlers and middleware. It’s capable of performing basic routing, exception handling, and default document serving for AngularJS apps in HTML5 mode.

Martini’s best feature is its use of reflection, which lets developers dynamically insert data into the handler functions and add new services. Martini is also fully compatible with the http.HandlerFunc interface. The downside, though, is that the Martini framework is no longer maintained.

4. Gin Gonic

Gin Gonic is a web framework with a martini-like API, but with much better performance. If you’ve used Martini before, then you’ll be familiar with Gin Gonic. Otherwise, it will only take you 10 minutes to learn Gin. It’s that easy!

Gin Gonic is a minimalistic framework that includes only the most essential libraries and features. This makes it perfect for developing high-performance REST APIs. Plus, it’s 40 times faster than Martini.

You can add middleware, nested groups, JSON validation, and rendering, but it still maintains its optimum performance. Gin Gonic uses httprouter, the fastest HTTP router for Go.

5. Buffalo

Building new web applications with Go is quick and simple with Buffalo. When you’re starting a new project, Buffalo already has everything set up for you—from front-end to back-end development.

It features Hot Reloading, which means that dev command will watch your .go and .html files automatically. It will then rebuild and restart your binary for you. Just run the dev command, and you’ll see the changes go live right before your eyes!

Buffalo is more than just a framework – it’s a holistic web development eco-system that lets you get straight to building your application.

6. Goji

Goji is a lightweight and fast web framework that has composability and simplicity as its main priority. Much like net/http.ServeMux, Goji is a minimalistic HTTP request multiplexer. It includes Einhorn support, which makes it possible for you to have websocket support in Goji.

Additional features include URL patterns, re-configurable middleware stack, graceful shutdown, and more. Goji can be used in production and has served billions of requests across several organizations.

7. Tiger Tonic

Inspired by Dropwizard, Tiger Tonic is a Go framework for developing JSON web services and building high-performance REST APIs. To stay true to the principles of Golang, Tiger Tonic strives to keep features orthogonal.

The downside to Tiger Tonic is its inadequacy when it comes to building large, back-end applications.

8. Gocraft

Another powerful yet minimalistic framework, Gocraft offers fast and scalable routing performance. It adds routing to the net/http package from the standard library.

Gocraft is a Go mux and middleware package that features casting and reflection capabilities so that you can type your code statically. You can also add an optional functionality with the built-in middleware or write your own.

Since performance is always one of the top concerns for developers, Gocraft is a great choice for developers. It’s very easy to write backend web applications using the Gocraft framework.

9. Mango

Although Mango is not actively maintained by its creator, Paul Bellamy, a lot of Go users still use it. The great thing about Mango is its modularity. You can choose from a variety of libraries to include in your project.

Mango lets you build reusable modules of HTTP functionality as quickly and easily as possible. It compiles a list of middleware and applications into a single HTTP server object to keep your code self-contained.

Integrated Development Environments (IDEs) for Golang

IDEs for Golang are gaining popularity, along with the Go Language. While many developers still prefer to use text editors, many prefer to use IDEs as well.

If you’re working on a large-scale project with an extensive codebase, an IDE can help you organize your code and navigate it with ease. Furthermore, IDEs can help you test your code and edit them accordingly.

Here are the top IDEs that work great with Golang.

1. Gogland

Software development company JetBrains released another reliable IDE, but this time, for Golang. Gogland is a commercial IDE that provides a robust ergonomic environment for Go developers. It also features coding assistance, a debugger, and an integrated terminal.

Because an established company created Gogland, it has an extensive IntelliJ plugin ecosystem where you can get additional tools, should you need more.

2. Visual Studio Code

Created by Microsoft, Visual Studio Code is a full-featured, open-source IDE and code editor that supports a wide variety of programming languages. It features smart completion with IntelliSense; debugging using breakpoints, call stacks, and an interactive console; built-in Git integration; and a hierarchical folder and file explorer.

As another popular IDE, Visual Studio Code has a supportive community of Go developers that regularly contribute. With Visual Studio Code, you can extend functionalities with the array of available plugins.

3. LiteIDE

LiteIDE is among the first Golang-centric, open-source IDEs that was created more than 5 years ago. As a C++ Qt application with a unique look and feel, LiteIDE offers code management, configurable build commands, gdb and Delve debugger, auto-completion and theming with WordApi, MIME type based system, and more. It also provides JSON and Golang support.

4. Wide

Wide is a web-based IDE for Golang programmers. It’s designed for collaborative development and works best for teams and web development agencies. Wide features include code highlight, debugging, Git integration, and more.

Because Wide is created and maintained by a Chinese developer, most of its documentation and support are in Chinese.

5. Atom With Go-Plus Plugin

If you’re already using Atom, your code editing experience in Golang can be improved with an open-source package called go-plus. With go-plus, you get instant, real-time feedback on your syntax and build errors.

The go-plus package offers almost all Golang support in Atom. It can also be used for tools, build flows, linters, vet, and coverage tools.

Go-plus also includes various code snippets and features such as autocomplete with gocode, code formatting with gofmt, goreturns, or goimports, and more.

6. Eclipse With GoClipse

Because Eclipse is a widely popular IDE, numerous plugins have been created for it. GoClipse is an Eclipse plugin for Golang that offers Go source code editing with configurable syntax highlighting and automatic indentation and brace completion.

GoClipse also serves as a project wizard and builder that reports syntax and build errors instantly. Additional features of GoClipse include debugging functionality and code assist.

7. Sublime Text With GoSublime

Sublime Text is another sophisticated text editor with a large community of contributors and developers. As such, a wide variety of plugins has been created for this IDE.

GoSublime is a Golang plugin for Sublime Text 3 that offers code completion from Gocode, lint/syntax check while you’re writing code, automatic addition and removal of package imports, and more.

8. Vim With Vim-Go Plugin

Vim is a free, open-source IDE that can be customized and configured with various plugins. If you’re a Golang programmer, you can use Vim with the vim-go plugin created by Fatih Arslan. Vim-go automatically installs all the necessary binaries for providing a smooth Vim integration for Golang.

Vim-go is a powerful plugin suite for writing and developing Go. Its features include advanced source code analysis, adding and removing import paths, multiple 3rd liner support, goto definition, quick file executions, and much more.

Vim-go is highly customizable, with individual features that can be enabled or disabled according to your need.

9. Komodo

Komodo is a full-featured Go language IDE that supports other programming languages such as Node.js, Python, Ruby, Perl, and more. With this Go IDE, you can write clean code easily. Its features include an advanced code editor, intelligent code completion, syntax checking, version control and unit testing, and a Go Code Intelligence that allows code browsing and code hinting.

The great thing about Komodo is that it works great for team collaboration since multiple developers can edit a document simultaneously. Komodo can be installed on Mac, Windows, or Linux with just one license.

10. IntelliJ IDEA With Go Language (golang.org) Support Plugin

IntelliJ IDEA (same company as JetBrains) is an IDE that can be used with Golang through the Go language support plugin. If you want to use IntelliJ IDEA with Golang, you need to install this plugin, albeit with limited features as opposed to Gogland.

Tools for Golang

Golang tools can be used for a wide variety of projects and web applications. Developers can write code and build applications as quickly and easily as possible with these helpful tools.

Here’s a list of the top Golang tools for your reference.

1. Apicompat

Apicompat is a new Go language tool that helps developers detect backward incompatible changes and exported declarations.

With Apicompat, you can avoid false positives. However, not every backward incompatible change can be detected by Apicompat. Swapping argument parameters and other changes still need to be considered by the library author.

2. Checkstyle

Inspired by Java Checkstyle, Checkstyle for Golang prints out coding style suggestions. It also lets developers check file line/function and line/param number, which can then be configured by the user.

3. Depth

Depth is another useful Golang tool that helps web developers retrieve and visualize Go source code dependency trees. It can be used as a standalone command-line application or as a particular package within your own project. You can add customizations by simply setting the appropriate flags on the Tree before resolving.

4. Go-Swagger

This toolkit includes a wide variety of features and functions. Go-Swagger is an implementation of Swagger 2.0 and can serialize and deserialize swagger specifications. It’s a minimalist yet powerful representation of your RESTful API.

With Go-Swagger, you can swagger spec documents, validate against JSON schema, and other extra rules. Other features include code generation, API generation based on swagger specs, spec document generation based on the code, extended string formats, and more.

5. Go Meta Linter

If you need to run Go lint tools and normalize their output concurrently, that’s exactly what Go Meta Linter can do for you. Go Meta Linter is intended to be used with a text editor or an IDE integration such as Sublime Linter plugin, Atom go-plus package, Emacs Flycheck checker, Vim/Neovim, and Go for Visual Studio Code. It also supports a wide variety of linters and configuration files like JSON.

6. Go-callvis

Go-callvis is a web development tool that allows you to visualize the call graph of your Go program with Graphviz’s dot format. This tool is especially useful when building large projects with complex codebases. This is also useful when you want to understand another developer’s code structure or rebuild someone else’s project.

With go-callvis, developers can focus specific package within a program; group functions according to package and methods according to type; and limit packages to custom path prefixes, and ignore those that contain them.

7. Gonative

Gonative is a simple Golang tool that lets you build Go toolchains with native libs, which can be cross-compiled while still utilizing the Cgo-enabled versions of the stdlib packages.

Gonative downloads the binary distributions for each platform and copies their libraries into its proper places. At the same time, Gonative sets the correct mod time to avoid unnecessary rebuilds.

Unfortunately, Gonative remains untested on Windows. Additionally, there’s no Linux/arm support provided.

8. Grapes

Grapes is a lightweight Golang tool designed to distribute commands over SSH easily. It’s written and actively maintained by Yaron Sumel.

Grapes will soon support full host key validation, so that’s something developers should watch out for.

9. Gosimple

The great thing about this Golang linter is that it focuses on simplifying Go source code. Gosimple always targets the latest Go version, so it requires Go version 1.6 or later.

If there’s a new Go release, gosimple will suggest the easiest and simplest methods to avoid complicated constructs.

10. Go Vendor

Go Vendor is the Golang tool that works with the standard Vendor folder. It allows developers to copy existing dependencies from $GOPATH with govendor add/update. You can also directly pull new dependencies or update existing dependencies with govendor fetch and move legacy systems with govendor migrate.

Wrapping It Up

If you’re coming from a JS/Node background, you need to learn some new programming concepts such as coroutines, channels, strict typing with compilation, interfaces, structs, pointers, and some other differences. But, once you get into the groove, you’ll find Golang easier and faster to use.

Web Frameworks for Python

A Web framework is a collection of packages or modules which allow developers to write Web applications (see WebApplications) or services without having to handle such low-level details as protocols, sockets or process/thread management.

The majority of Web frameworks are exclusively server-side technology, although, with the increased prevalence of AJAX, some Web frameworks are beginning to include AJAX code that helps developers with the particularly tricky task of programming (client-side) the user's browser. At the extreme end of the client-side Web Frameworks is technology that can use the web browser as a full-blown application execution environment (a la gmail for example): see Web Browser Programming for details.

As a developer using a framework, you typically write code which conforms to some kind of conventions that lets you "plug in" to the framework, delegating responsibility for the communications, infrastructure and low-level stuff to the framework while concentrating on the logic of the application in your own code. This "plugging in" aspect of Web development is often seen as being in opposition to the classical distinction between programs and libraries, and the notion of a "mainloop" dispatching events to application code is very similar to that found in GUI programming.

Generally, frameworks provide support for a number of activities such as interpreting requests (getting form parameters, handling cookies and sessions), producing responses (presenting data as HTML or in other formats), storing data persistently, and so on. Since a non-trivial Web application will require a number of different kinds of abstractions, often stacked upon each other, those frameworks which attempt to provide a complete solution for applications are often known as full-stack frameworks in that they attempt to supply components for each layer in the stack.

Many frameworks now provide an element of customization in their support for the above activities and abstractions, utilizing components in that they provide abstractions only for certain specific things. As a result, it can be possible for you to build your own full-stack framework almost entirely from existing components.

Popular Full-Stack Frameworks

A web application may use a combination of a base HTTP application server, a storage mechanism such as a database, a template engine, a request dispatcher, an authentication module and an AJAX toolkit. These can be individual components or be provided together in a high-level framework.

These are the most popular high-level frameworks. Many of them include components listed on the WebComponents page.

Name

Latest version

Latest update date

description

Django

1.11.7

2017-11-01

The Web framework for perfectionists (with deadlines). Django makes it easier to build better Web apps more quickly and with less code. Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design. It lets you build high-performing, elegant Web applications quickly. Django focuses on automating as much as possible and adhering to the DRY (Don't Repeat Yourself) principle. See Django

TurboGears

2.3.11

2017-07-04

the rapid Web development webframework you've been looking for. Combines SQLAlchemy (Model) or Ming (MongoDB Model), Genshi (View), Repoze and Tosca Widgets. Create a database-driven, ready-to-extend application in minutes. All with designer friendly templates, easy AJAX on the browser side and on the server side, with an incredibly powerful and flexible Object Relational Mapper (ORM), and with code that is as natural as writing a function. After reviewing the Documentation, check out the Tutorials

web2py

2.15.4

2017-09-02

* Python 2.6 to 2.7, Python 3.x friendly (compile but not tested no support yet) * All in one package with no further dependencies. Development, deployment, debugging, testing, database administration and maintenance of applications can be done via the provided web interface, but not required. * web2py has no configuration files, requires no installation, can be run off a USB drive. * web2py uses Python for the Model, View and the Controller * Built-in ticketing system to manage errors * Internationalization engine and pluralisation, caching system * Flexible authentication system (LDAP, MySQL, janrain etc) * NIX(Linux, BSD), Windows, Mac OSX, tested on EC2, Webfaction * works with MySQL, PostgreSQL, SQLite , Firebird, Oracle, MSSQL and the Google App Engine via an ORM abstraction layer. * Includes libraries to handle HTML/XML, RSS, ATOM, CSV, RTF, JSON, AJAX, XMLRPC, WIKI markup. * Production ready, capable of upload/download of very large files * Emphasis on backward compatibility.

See below for some other arguably less popular full-stack frameworks!

Other Full-Stack Frameworks

These frameworks also provide most, if not all of the technology stack. However, they are regarded as not being as popular as the frameworks listed above.

Name

Latest version

Latest update date

description

CubicWeb

3.25.3

2017-10-17

a semantic web application framework featuring a query language, a selection+view mechanism, multiple databases, security, workflows, reusable components, etc.

Django-hotsauce

0.9.0

2018-01-28

a general-purpose web toolkit sitting on top of Django and others. Django-hotsauce is an interactive Pythonic API to create scalable web applications using WSGI 1.0 spec. Provides native bindings for the Schevo DBMS, Durus, ZODB, and Authkit projects. Source codeDocumentation

Giotto

0.10.5

2013-01-18

a strict MVC framework that strictly separated Model, View and Controller elements so that Designers, Web Developers, and Sysadmins can work independently of each other. Giotto includes controller modules that allow applications to be built on top of the web, irc or the command line.

Grok

1.15

2017-05-30

built on the existing Zope 3 libraries, but aims to provide an easier learning curve and a more agile development experience. It does this by placing an emphasis on convention over configuration and DRY (Don't Repeat Yourself).

Pylons

1.0

2010-05-28

a lightweight Web framework emphasizing flexibility and rapid development. It combines the very best ideas from the worlds of Ruby, Python and Perl, providing a structured but extremely flexible Python Web framework. It was also one of the first projects to leverage the emerging WSGI standard, which allows extensive re-use and flexibility but only if you need it. Out of the box, Pylons aims to make Web development fast, flexible and easy. Pylons is built on top of Paste (see below). NOTE: Pylons the web framework is in maintenance-only status after merging with Pyramid to form the Pylons Project to develop web technologies using Python.

Reahl

3.2.0

2016-06-12

With Reahl, programming is done purely in Python, using concepts familiar from GUI programming - like reusable Widgets and Events.

wheezy.web

0.1.485

2015-05-24

A lightweight, high performance, high concurrency WSGI web framework with the key features to build modern, efficient web. Requires Python 2.4-2.7 or 3.2+. MVC architectural pattern (push-based). Includes routing, model update/validation, authentication/authorization, contentcaching with dependency, xsrf/resubmission protection, AJAX+JSON, i18n (gettext), middlewares, and more. Template engine agnostic (integration with: jinja2, mako, tenjin and wheezy template) plus html widgets.

Zope2

4.0b1

2017-09-18

Being the grandaddy of Python web frameworks, Zope has grown into a family of frameworks over the years. Zope 1 was released in 1999. Zope 2 is both a web framework and a general purpose application server, today it is primarily used by ContentManagementSystems. Zope 3 is both a standalone framework and a collection of related libraries, which are also included with newer releases of Zope 2. All of the Zope frameworks include the ZODB, an object database for Python.

  • Glashammer (0.2.1 Released 2009-03-31) is a full stack Python web framework with an emphasis on simplicity, flexibility, and extensibility. It is built atop excellent components and reinvents zero wheels. WSGI, routing, templating, forms, data, plugins, config, events, SQLAlchemy, Storm, Couchdb, OpenID, AppEngine, Jquery, etc.

  • Karrigell (3.1.1 Released 2010-09-02) is a flexible Python web framework, with a clear and intuitive syntax. It is independent from any database, ORM or templating engine, and lets the programmer choose between a variety of coding styles. A version for Python3.2+ (4.3.10 Released 2013-05-26) is was available at http://code.google.com/p/karrigell/

  • Kiss.py (1.0.0 Released 2014-06-23) MVC web framework in Python with Gevent, Jinja2, Werkzeug.

  • Lino (17.10.1 Released 2017-10-04), a framework for creating customized enterprise-level Rich Internet Applications using Sencha ExtJS and Django.

  • Nagare (0.4.1 Released 2012-01-18) - a new approach for the rapid development of web applications, thanks to advanced features like truely autonomous and reusable components, continuation, programmatic HTML/XML, automatic AJAX rendering and database ORM.

  • Porcupine (0.6 Released 2009-07-18) provides everything you need for building modern data-centric Web 2.0 applications, including the QuiX Javascript toolkit and the Porcupine Object Query Language (POQL). Requires Python 2.5 or later - not including 3.0 yet.

  • Pylatte (1.0 Released 2013-02-03) - Pylatte is Python3-based web framework. Pylatte is used pyl code to make web site. pyl code is compose to python and HTML. so pyl code seem like php code. easy to learn, easy to run.

  • Spyce (2.1.3 Released 2006-11-17)

  • Tipfy (1.0b3 Released 2011-07-18) tipfy is a small but powerful framework made specifically for Google App Engine.

  • Tornado (4.5.2 Released 2017-08-27) is an open source version of the scalable, non-blocking web server and and tools that power FriendFeed (acquired by Facebook with this project released as open source).

  • watson-framework (3.3.5 Released 2016-09-02, initial release 2012-11-26) A component based WSGI web framework giving you the tools needed to build your web apps quickly and easily:

    • Requires Python 3.3+.
    • MVC based architecture
    • Dependency injection
    • Event driven
  • webapp2 (3.0.0b1 Released 2016-09-13) - a lightweight framework compatible with Google App Engine’s webapp: it extends webapp to add better URI routing and exception handling, a full featured response object and a more flexible dispatching mechanism. Also offers sessions, localization, internationalization, domain and subdomain routing and secure cookies. Can be used outside of App Engine, independently of the App Engine SDK.

  • WebBot (0.5.0 Released 2013-04-10) - A QT inspired web framework that includes a graphical interface builder, AJAX abstraction, and integration support for Google's AppEngine.

  • WebCore (2.0.3 Released 2016-09-25) A full-stack, light-weight and efficient web development framework. Web applications as simple as a single file, or as structured as you want. Utilizes popular WSGI components, ORMs, etc. without locking you in, and offers a unique init.d-like middleware configuration.

  • web.py (0.38 Released 2016-07-08) Think about the ideal way to write a Web app. Write the code to make it happen.

  • Webware for Python (1.2.1 Released 2016-11-21) is a suite of Python packages and tools for developing object-oriented, web-based applications.

  • Werkzeug (0.12.2 Released 2017-05-16) is Unicode-aware, includes a powerful debugger, full featured request and response objects, HTTP utilities to handle entity tags, cache control headers, HTTP dates, cookie handling, file uploads, a powerful URL routing system and a bunch of community contributed addon modules.

  • WHIFF (1.1 Released 2013-07-09) WHIFF is a collection of support services for WSGI/Python web applications which allows applications to be composed by "dropping" dynamic pages into container directories. It automatically includes support for advanced features such as AJAX, jQueryUI widgets, Flash based charts and more. Extensive documentation and tutorial essays.

Popular Non Full-Stack Frameworks

These projects provide the base "application server", either running as its own independent process, upon Apache or in other environments. On many of these you can then introduce your own choice of templating engines and other components to run on top, although some may provide technologies for parts of the technology stack.

  • Bottle (0.12.13 Released 2017-01-09) is a fast and simple micro-framework for small web-applications. It offers request dispatching (Routes) with url parameter support, Templates, key/value Databases, a build-in HTTP Server and adapters for many third party WSGI/HTTP-server and template engines. All in a single file and with no dependencies other than the Python Standard Library.

  • CherryPy (11.1.0 Released 2017-10-29) is a pythonic, object-oriented HTTP framework. CherryPy powered web applications are in fact stand-alone Python applications embedding their own multi-threaded web server. TurboGears, web2py (see above) also use CherryPy.

  • Flask (0.12.2 Released 2017-05-16) is “a microframework for Python based on Werkzeug, Jinja 2 and good intentions.” Includes a built-in development server, unit tesing support, and is fully Unicode-enabled with RESTful request dispatching and WSGI compliance.

  • Hug (2.3.0 Released 2017-05-04) Embrace the APIs of the future. Hug aims to make developing APIs as simple as possible, but no simpler. It's one of the first fully future looking frameworks: only supporting Python3+.

  • Pyramid (1.9.1 Released 2017-07-13) a small, fast, down-to-earth, open source Python web development framework. It makes real-world web application development and deployment more fun, more predictable, and more productive. Pyramid is a Pylons Project, and is the successor to the Pylons web framework.

Other Non Full-Stack Frameworks

  • Albatross (1.42 Released 2011-04-27) a small and flexible Python toolkit for developing highly stateful Web applications; deploys to CGI, FastCGI, and ModPython servers.

  • Aquarium (2.3 Released 2007-01-01) offers convenient libraries, tight integration with Cheetah, adaptors for various Web environments; deploys to CGI, FastCGI, and ModPython servers.

  • AppWsgi - illustration of building your own ajax framework running on a mod_wsgi apache server

  • BlueBream (1.0 Released 2011-01-18) is a web framework best suited for medium to large projects split into many interchangeable and reusable components. Formerly known as Zope 3, and based on Zope Toolkit (ZTK).

  • Bobo (2.3.0 Released 2014-11-21) is a light-weight framework for creating WSGI web applications. It's goal is to be easy to use and remember. It addresses 2 problems: 1) mapping URLs to objects and 2) calling objects to generate HTTP responses. Bobo doesn't have a templating language, a database integration layer, or a number of other features that are better provided by WSGI middle-ware or application-specific libraries. Bobo builds on other frameworks, most notably WSGI and WebOb.

  • circuits (3.2 Released 2016-06-02) is a component based, event-driven light weight and high performance HTTP/WSGI framework. circuits has some similar features to CherryPy (see above), such as CherryPy's URL mapping. circuits applications are stand-alone applications with a high performance, multi-process web server with great concurrent scalability with full support for WSGI and deployment with other web servers.

  • Clastic (0.4.3 released 2015-04-19) is a functional web microframework that streamlines explicit development practices while eliminating global state. It's built on top of Werkzeug, so it's immediately familiar to Flask users, and WSGI, so it deploys the same as other Python web applications. It has a powerful and intuitive routing system, built-in development server, and metadata application. See this PayPal Engineering post for examples and screenshots.

  • Divmod Nevow (0.14.3 Released 2017-08-19) a comprehensive library including a resource model encouraging the separation of application and presentation logic, a markup system with support for designer-friendly XHTML templates and pure-Python templates, and a robust AJAX-like API (Divmod Athena) which supports the creation of highly dynamic Web pages in a structured manner.

  • Falcon (1.3.0 Released 2017-09-06) - lightweight, API-oriented framework designed to be fast. Falcon powers the popular Hug web framework. Supports Python 2.7 and 3.

  • Growler (0.8.0 Released 2016-09-07) - A micro web-framework built atop asyncio coroutines and chained middleware, that provides an easy way to implement complex applications.

  • Gunstar (0.2.2 released 2013-09-06) is a microframework based on WebOb and Jinja2.

  • MorePath (0.18.1 released 2017-07-30) Morepath is a Python web microframework, with super powers. It uses routing, but the routing is to models. Morepath is model-driven and flexible, which makes it expressive.

  • Pycnic (0.0.9 Released 2016-05-20) - A web framework that is object oriented and optimized for JSON APIs. Pycnic only includes the tools needed for web API creation allowing for a lighter footprint than most other frameworks. Supports Python 2.7 and 3.

  • Python Paste (1.7.5.1 Released 2010-09-20) brings consistency to Python Web development and Web application installation, providing tools for both developers and system administrators. Also, Pylons (see above) is built on top of Paste.

  • PyWebLib (1.3.13 Released 2017-01-18) - provides support for forms and sessions; used to implement web2ldap

  • Quixote (2.9.1 Released 2016-04-18) Allows developers to develop dynamic Web sites while using as much of their existing Python knowledge as possible

  • Sanic (0.6.0 Released 2017-08-03) - A Flask-like Python 3.5+ web server that's written to go fast.

  • Spinne (1.0.1 Released 2014-05-17) - A simple, easy and fast micro web framework for python 3.x.

  • weblayer (0.4.3 Released 2011-02-03) - weblayer is a lightweight, componentised Python package for writing web applications.

  • WebStack (1.2.7 Released 2007-10-29) - very lightweight, requiring layers of extra technology (such as XSLTools and others) to match full-stack frameworks in feature comparisons

  • WSGIServlets (1.0.1 Released 2011-11-09) - lightweight, object-oriented framework that doesn't get in your way. Intuitive class hierarchy makes coding WSGI applications, middleware or full-blown CMS and frameworks a simple task by providing developers a rich set of tools out-of-the-box. A link to a live tutorial (written with WSGIServlets) is available on the project's homepage. The tutorial is also included in the distribution along with a complete API reference manual.

Discontinued/Inactive Frameworks

The following frameworks are either discontinued, in that their developers may have stated that they no longer maintain the code, or appear to be inactively developed or maintained, in that the Web site for the project has remained unchanged for an extended period of time.

  • 4Suite (the server product seems to receive relatively infrequent updates and the site is often down)

  • Crusader is a powerful application server for Python based upon a scalable, extensible and easy-to-use general purpose server framework.

  • Cymbeline (1.3.1 Released 2005-12-09) an application server framework, including functionality such as DB and arbitrary object pooling, Web servers, persistant object repository, and a text console. As of 2013-08-13, this is a dead link.

  • Enamel - an abstraction layer over Twisted, Nevow, Formal and SQLAlchemy to converge their concepts under a single framework (Link no longer works)

  • GAE framework - (1.0 PRE, Released 2011-05-84) is a Python web framework that's designed for high-load web sites build on Google App Engine; Note: The project website appears to have been closed down: http://www.gaeframework.com

  • Gizmo(QP) (0.7 Released 2007-04-17) extends QP (see below) adding functionality to help with building rich and exacting web interfaces. Includes a Form module that supports (redundant) automatically generated client-side field validation as well as additional json callbacks.

  • maki (developers no longer use the product)

  • Pyroxide is built atop Apache's mod_python. It uses the MVC (model-view-controller) pattern and other classic object oriented patterns throughout. It abstracts the mod_python layer presenting a very sensible object oriented framework so that the developer deals with HTTP Requests, HTTP Responses, Page Controllers, Views and domain model objects. It integrates very well with AJAX frameworks such as Prototype and Mochikit. It comes with an elegant ORM framework and runs with Zope Page Templates (Simpletal project) out of the box. (site says: "Please note that this project is dead" and directs people to Django and/or Pylons)

  • Python Server Pages, or PSP (old Web site from 1999, dead link)

  • Python Servlet Engine (3.0.4 Released 2006-02-17) PSE parses your templates into byte compiled "servlets" to produce Web pages that run fast. (site says: "NOTE: The PSE Project is officially closed as of 3/28/2010")

  • QP (2.2 Released 2009-08-25) a package for defining and running multiple Web applications that are based on Durus for persistence, offering standard persistent Session and User classes, easy interactive database sessions, and QPY for safely assembling html. Packages require and run on Python >= 2.4 and yes that includes Python 3.x with the same code base!

  • Repoze.bfg (1.3) BFG is a "pay only for what you eat" Python web framework . BFG is a Python web application framework based on WSGI. BFG is also referred to as repoze.bfg. Ancestor of (and supplanted by) Pyramid.

  • SkunkWeb (3.4.0 Released 2004-09-10)

  • Snakelets (1.50 Released 2008-10) simple-to-use Python Web application server. Announced as discontinued upon release of version 1.50. As of 2013-08-13, dead link

  • Spark (0.2.1 Released 2006-9-15) Fast and lightweight Web kit. Supports mod_python, WSGI, Twisted. (2010-03-15, site hasn't responded for a week or so, seems dead; 2013-08-13, dead link).

  • Spiked (0.1.3 Released 2010-01-23) - web development framework built on a top of Twisted and Cheetah.

  • Wasp (2.00 Released 2007.07) - supports command-line, CGI and embedded web server modes, with templating, session mechanism and other modules emphasizing ease of use and familiar paradigms. (2010-03-15, website indicates that it is no longer active: "I AM SORRY BUT WASP WILL NOT BE RETURNING. I simply have no time for this venture, seeing as how I am working towards my masters..."; 2013-08-13, dead link)

Books and Articles

Content Management Systems

Content management systems (CMS) often allow you to build application like functionality upon them and typically provide many of the facilities seen in full-stack frameworks. See ContentManagementSystems for more details.

Web Components

Some frameworks promote interoperable components for things like templating/output and authentication/authorization, and so you might see users of different frameworks actually using the same component or library. See WebComponents for details of such components.

Web Client Frameworks

In contrast to server-oriented frameworks which may offer AJAX (asynchronous JavaScript and XML) support by serving pre-packaged (inflexible and highly specific but otherwise very useful) JavaScript components, and offering server-side support for requests made by such JavaScript components, Web client frameworks take more direct advantage of the dynamic capabilities of browser engines. Ways in which the full potential of browser engines can be realised are, for example, by compiling Python code into JavaScript or by embedding a Python interpreter into the Web browser itself. In some cases, Web browser engines can be run within separate customised applications rather than in a "web browser" per se. See Web Browser Programming for details.

Editorial Note

The above lists should be arranged in ascending alphabetical order - please respect this when adding new solutions. When specifying release dates please use the format YYYY-MM-DD.

Some special notes to contributors to this page who like to assume an advocacy position when "reorganising" the content:

  • Do not remove editorial guidelines: when people do this it not only indicates that they do not care about such guidelines, but it also leads others to believe that the page never had any structure or purpose.

  • If you must change the categories used on this page, at least attempt to assign all frameworks to meaningful categories. Do not invent special categories in order to elevate the profile of certain projects. Do not merge categories and put frameworks into a miscellaneous category.

  • Do not add links to projects unless they are Web frameworks. Instead, use the WebComponents, WebServers, Templating pages, or any page referenced by WebProgramming.

  • Some frameworks are not actively developed or maintained. Do not just move entries into the "Discontinued/Inactive Frameworks" section without at least doing some investigation first.

And some basic editing advice: use the preview button when making edits, rather than leaving tens of micro-changes in the history.

WebFrameworks (last edited 2018-01-28 20:23:21 by tkadm30)

0 thoughts on “Go Web Framework Comparison Essay”

    -->

Leave a Comment

Your email address will not be published. Required fields are marked *