This repo contains the Thunderbird in-client Start page, the www.thunderbird.net website, and the updates / donation appeals website.
- The
prodbranch is used to update https://start.thunderbird.net, https://www.thunderbird.net, https://updates.thunderbird.net, and https://tb.pro. - The
masterbranch is used to update https://start-stage.thunderbird.net, https://www-stage.thunderbird.net, https://updates-stage.thunderbird.net, and https://stage.tb.pro.
Additional information can be found in our readthedocs documentation.
Install uv and make sure npm and git are available:
# Fedora/RHEL/CentOS
sudo dnf install npm git
# Ubuntu/Debian
sudo apt-get install npm gitThen run the setup script:
uv run pull-libs.pyThis installs Python dependencies, clones the required library repos, and installs the LESS compiler.
If you need the localizations to display pages translated from English into other languages:
sudo yum install gettext
l10n_tools/compile.shYou can re-run uv run pull-libs.py to keep the library repositories up-to-date. For the locale library you'll need to
manually rerun the compile.sh script anytime you pull.
A basic build is uv run build-site.py.
It builds www.thunderbird.net into the thunderbird.net directory by default.
There are additional arguments:
-
--all- Builds all sites (main website, start page, updates, tb.pro, roadmaps) in one invocation.
-
--startpage- This builds the start page into the
sitedirectory.
- This builds the start page into the
-
--tbpro- This builds the tbpro site into the
tb.prodirectory.
- This builds the tbpro site into the
-
--roadmaps- This builds the roadmaps site into the
roadmaps.thunderbird.netdirectory. Runuv run pull-libs.pyto download the latest content.
- This builds the roadmaps site into the
-
--enus- This restricts builds to only the 'en-US' locale, for faster testing.
-
--debug- This logs output for each locale built and some of the templates, used to make debugging easier.
-
--watch- This starts an HTTP server on localhost port 8000, and watches the template and assets folders for changes and then does quick rebuilds.
- Note that this only rebuilds when you modify a file. To add or remove files, you should start a new build.
-
--port- Sets the port to be used for the localhost server. Default is 8000. Format:
--port 8000.
- Sets the port to be used for the localhost server. Default is 8000. Format:
-
--buildcalendar- This builds the holiday calendars. Normally this will build every locale, but you can restrict the build to just US by using the
--enusoptions.
- This builds the holiday calendars. Normally this will build every locale, but you can restrict the build to just US by using the
-
--downloadlegal- This downloads the latest Thunderbird privacy policy document, renders it into html from markdown and puts it in the includes folder.
- You only need to run this when the document updates.
-
thunderbird.net templates are in the
sites/www.thunderbird.netdirectory, and start page in thesites/start.thunderbird.netdir. Assets are shared and in theassetsdir.
To view the website for testing purposes, run uv run build-site.py --watch. This also works with the start page.
You can then navigate to: http://127.0.0.1:8000 to view the website. None of the apache redirects work in this mode, so you have to click your desired locale manually in the browser, but the site should behave normally after that.
In general, you only need to manually build the website for testing and development purposes. GitHub Actions automatically builds and deploys when:
- This repository (
thunderbird-website) is pushed tomaster(stage) orprod(production). - https://github.com/thunderbird/thunderbird-notes.git (Release Notes) are updated (
mastertriggers stage,prodtriggers production). - https://github.com/thunderbird/thunderbird.net-l10n.git (Localizations) are updated (
mastertriggers stage). - https://github.com/mozilla-releng/product-details.git (Product Details) are updated (
productiontriggers production).
Any triggered build always uses the most recent data available from all sources. If changes don't produce any difference in the built files, no commit is made to https://github.com/thunderbird/tb-website-builds (which serves as a record of the static files that are deployed).
The websites are built inside a Docker container and deployed to AWS Fargate. The "Build and Deploy" workflow handles
the full pipeline: build from source, push to ECR, publish static files to tb-website-builds, and deploy via Pulumi + ECS.
Manual deployment via GitHub UI:
- Go to Actions → "Build and Deploy"
- Click "Run workflow" and select the environment (
stageorprod)
See the deployment documentation for more details.
You can contribute to content translation of www.thunderbird.net pages using Pontoon.
Most paths under /thunderbird path aren't localized. There's an override setting named ALWAYS_LOCALIZE that allows specific paths to be forwarded to the users locale.
Donation FAQ entries are found in sites/www.thunderbird.net/includes/faq.html.
There are several pytests located in ./tests. To run the full test-suite, simply use uv run pytest.
Calendar generation can be manually built by appending the option--buildcalendar. This queries our current calendar provider (Calendarific) and generates a .ics file per each locale specified in settings.py. For testing, you can limit this to just US by using the option --enus.
This option requires setting the CALENDARIFIC_API_KEY= environment variable. If you're using a paid plan you can also set CALENDARIFIC_IS_FREE_TIER=false to remove the sleep time between calls.