Coen van der Kamp
Coen van der Kamp
18 september 2020

Wagtail Packages

This article is about Wagtail packages and how you can find them.

What is a package?

A package is an installable piece of software that adds functionality to Python.

Most packages are created because the functionality is needed in a project. The author might open-source the package so that others can benefit. But sharing and contributing to free software isn’t philanthropy. Packages that are used by others receive feedback and contributions. Open-source is a recipe for healthy and successful software.

Django and Wagtail are packages. Django is developed at the Lawrence Journal-World newspaper for their newspaper websites. Wagtail is a content management system (CMS) on top of Django and developed for the Royal College of Art in London. The Royal College needed an easy to use CMS with complete freedom when it comes to the frontend.

This article is about packages designed to add functionality to Wagtail.

Meet Venus! Venus is a "coral glow", which is interchangeable with the "banana" color morph, ball python. Ball pythons are native to West and Central Africa - living in grasslands and shrublands. They are the smallest of the African pythons. Her color morph produces shades of yellow and orange with black speckles like a ripe banana.

Photo by Timothy Dykes on Unsplash.

Wagtail add-ons, Wagtail plugins, or Wagtail packages?

What is in a name? The concept of add-ons, plugins, or packages is used in all kinds of software. To me, these terms are interchangeable. In Python, it is called a package or third-party package. Indicating it is not created by you (first), Python (second) but created by someone else (third).

Packages are uploaded to the Python Package Index (PyPi) and installable via Package Installer for Python (pip). For example pip install wagtail, will download the Wagtail package from PyPi and install it to your Python.

Python, Django or Wagtail Packages?

Wagtail stands on the shoulders of giants. Python and Django are a solid basis:

  • Python has “batteries included”. It comes with a rich and versatile standard library. Python also has 260,000+ third-party packages.
  • Django adds web framework functionality to Python. There are 10,000+ third-party packages designed to extend Django.
  • Wagtail adds content management system functionality to Django. There are 250+ third-party packages that extend Wagtail.

You don’t always need a Wagtail package. Functionality might be provided via Python, Python package, Django, or a Django package.

Some examples:

  • Requests is a Python package to handle requests and responses. Useful to connect your Wagtail site to any backend system.
  • Django comes with django.contrib.auth it provides authentication logic like login and logout views.
  • Django Rest Framework is a Django package to create an API.

All these packages are not Wagtail packages. They are not visible in the Wagtail admin interface. However, they can be used in your Wagtail project.

Awesome lists

Awesome lists are lists of awesome things curated by the community.

Awesome Python, Awesome Django, and Awesome Wagtail are great to browse and get inspired. But note that they only list awesome packages, and thus a subset of all available packages.

There is no rating system. A package is listed or not.

Python Package Index

I mentioned the Python Package Index (PyPi) as a place for developers to upload packages. This index can also be browsed and searched.

PyPi does not have a rating system and does not measure popularity. However, PyPi does measure download count and teams up with Google BigQuery to track that data. Unfortunately, download count isn’t visible on PyPi.

PyPi contains all serious Python packages. But also less serious packages with doubtful quality. PyPi is the right place if you know what you look for. Browsing for inspiration is hard.

Djangopackages.org

Djangopackages.org allows anyone to add a package.

Packages are grouped per topic on comparison grids. A grid displays various features: usage, last edit, contributors, etc. Custom comparison lines can be added.

The Wagtail core team decided to embrace djangopackages.org as the Wagtail package directory. We will promote it in support channels and documentation.

Some advantages:

  • Djangopackages.org is maintained and hosted.
  • Content is crowd-sourced.
  • Pure Django packages are listed too.
  • Djangopackages.org has an API. We can create a dedicated landing page and pull in the content.

I added all packages that I know of to Djangopackages.org. I also categorised those packages and created the grids. See Wagtail grids below.

Wrapping up

Now you know what Wagtail packages are and where to find them. Wagtail is built on top of Django and Python. Use those powers!

If you find or created a nice Wagtail package, please add it to Djangopackages.org 😉

Wagtail grids

The new Wagtail grids on Djangopackages.org are:

We love code