---
title: Tutorials for everyone from everyone
description: 'The tutorials site was refreshed. Tutorials are written in discourse.
  They are then pulled and displayed on different sites: ubuntu.com, snapcraft.io,
  maas.io and jaas.ai.'
url: https://canonical.com/blog/tutorials-for-everyone-from-everyone?format=md
---

1. [Blog](https://canonical.com/blog)
2. Article

---

[toto](https://canonical.com/blog/author/tbmb "More about toto")

11 March 2020

# Tutorials for everyone from everyone

[Community](https://canonical.com/blog/tag/community)
[Design](https://canonical.com/blog/tag/design)
[web and design](https://canonical.com/blog/tag/web-and-design)

---

Share the article

**TL:DR** The tutorials site was refreshed. Tutorials are written in Discourse. They are then pulled and displayed on different sites: [ubuntu.com](https://ubuntu.com/tutorials), [snapcraft.io](https://snapcraft.io/tutorials), [maas.io](https://maas.io/tutorials) and [jaas.ai](https://jaas.ai/tutorials).

Contributing to open source tools goes beyond writing code. Some of the best contributions simply explain to others how to use the software through tutorials and documentation.

To help communities easily create and contribute to tutorials, recent updates have been made, which have been outlined in this article.

## What existed

Our tutorials were written in a [git repository](https://github.com/canonical-web-and-design/tutorials.ubuntu.com/) as markdown files, which were then converted into HTML format when building, and deployed into a nice looking website.

This was good, but all tutorials were aggregated in the same place and it felt complicated to link it to other sites like [snaps](https://snapcraft.io), [juju](https://jaas.ai) or [maas](https://maas.io).

This process meant that in order to contribute, technical knowledge around using git, making code proposals, etc, was required.

From a user that just wants to share a few tips, to a technical writer that wants to provide in-depth tricks, tutorials should be written by everyone.

## What works for documentation

[Discourse](https://www.discourse.org/) is a platform made for community discussions. One of the uses of the platform is documentation management. To make it easier for communities to stay up-to-date, the documentation can be modified by anyone. Once a change is made the site will pick the latest version and display it nicely in its documentation section.

For example, [this post](https://forum.snapcraft.io/t/snap-documentation/11127) on Discourse:

Becomes this page in [snapcraft.io’s documentation](https://snapcraft.io/docs):

This allows contributors to have much more control over the content and removes the technical overhead of using git, building sites, etc. This makes the documentation easier to manage for the writers and the website developers, since the site gets the latest updates

It seemed quite natural to have the same process for tutorials.

## What was updated for tutorials

Most of the tools have Discourse platforms of their own: [snap](https://forum.snapcraft.io/c/tutorials), [maas](https://discourse.maas.io/c/tutorials), [juju](https://discourse.jujucharms.com/c/tutorials) and [ubuntu](https://discourse.ubuntu.com/c/tutorials). A new category was added to each of them, the *tutorials* category, with all of the existing tutorials imported into this new category

In the same way that documentation is generated, a new section on each website has been added. It pulls directly from Discourse to display a web page. You can find this section on [ubuntu.com](https://ubuntu.com/tutorials), [snapcraft.io](https://snapcraft.io/tutorials), [maas.io](https://maas.io/tutorials) and [jaas.ai](https://jaas.ai/tutorials).

As an example this [Discourse post](https://discourse.ubuntu.com/t/create-a-bootable-usb-stick-on-ubuntu/14011):

Becomes this page on [ubuntu.com tutorials section](https://ubuntu.com/tutorials/tutorial-create-a-usb-stick-on-ubuntu#1-overview):

## How does it work?

Most of Canonical’s websites are written in Python using the framework [Flask](http://flask.pocoo.org/). The webteam wrote a [Python module](https://pypi.org/project/canonicalwebteam.discourse-docs/) that gets the data from the relevant Discourse and gives the right context to the HTML

What is great about it is that from now on when a new tool would require a tutorials section, it becomes very simple to integrate it in the relevant website.

## We need you!

At Canonical we love to share what we learn, but we also love to hear stories from the community.

If you have anything that you would like to share as a tutorial, come and meet us in [Discourse](https://discourse.ubuntu.com/). All the information about writing tutorials can be found in this great tutorial about [How to write a tutorial](https://ubuntu.com/tutorials/tutorial-guidelines#1-overview).

## Sign up for our newsletter

Get the latest Canonical news and updates in your inbox.

Work email:

\*I agree to receive information about Canonical's
products and services.

By submitting this form, I confirm that I have read and agree to [Canonical's Privacy Policy](https://canonical.com/legal/dataprivacy).

Sign up

## Share on

---

## Related posts

[### Canonical becomes Gold Sponsor of Trifecta Tech Foundation](https://canonical.com/blog/canonical-becomes-gold-sponsor-of-trifecta-tech-foundation)

Canonical is pleased to announce it is now a Gold Sponsor of the Trifecta Tech Foundation, a non-profit that creates open source building blocks for critical infrastructure...

[Canonical](https://canonical.com/blog/author/canonical)

30 June 2026

[### Challenges designers face in open source (and how to fix them)](https://canonical.com/blog/challenges-designers-face-in-open-source-and-how-to-fix-them)

Open source powers up to 90% of modern software, yet many projects lack usability. Canonical’s Design team surveyed 115 cross-functional professionals to uncover the 4 core...

[Kola Ojoodide](https://canonical.com/blog/author/kola-ojoodide)

26 June 2026

[### Why web engineering is great](https://canonical.com/blog/why-web-engineering-is-great)

Hi, I’m Johann! I’m an engineering manager in Canonical’s web team. For the larger part of my 15 years of work experience as engineer, I’ve been working in web development....

[Johann Wolf](https://canonical.com/blog/author/johannwolf)

27 April 2026

[### Unmasking the Resolute Raccoon](https://canonical.com/blog/unmasking-the-resolute-raccoon)

You’ve almost certainly seen them… In the forest, rummaging through a dumpster, in poorly aging millennial memes. Raccoons are ubiquitous and endlessly entertaining creatures....

[Aaron Prisk](https://canonical.com/blog/author/aaronprisk)

26 February 2026
