[tor-commits] [community/translations] update contents: training slideshows

emmapeel at torproject.org emmapeel at torproject.org
Thu May 13 10:54:02 UTC 2021


commit 254382589f1b6d9324a115cbd0490b1a676e46a7
Author: emma peel <emma.peel at riseup.net>
Date:   Thu May 13 12:11:56 2021 +0200

    update contents: training slideshows
---
 assets/static/revealjs/dist/theme/tor.css          |  31 +-
 content/outreach/contents.lr                       |   2 +-
 .../technical-setup/bridge/docker/contents.lr      |   2 +-
 .../training/resources/tor-training/contents.lr    | 549 +++++++++++++++++++++
 flowblocks/slide.ini                               |  17 +-
 models/page.ini                                    |   1 +
 models/project.ini                                 |  51 ++
 models/projects.ini                                |  33 ++
 models/slideshow.ini                               |  43 ++
 models/text.ini                                    |   2 +
 templates/blocks/slide.html                        |  25 +-
 templates/onion-services.html                      |   2 +-
 templates/outreach-talk.html                       |   2 +-
 templates/relay-operations.html                    |   2 +-
 templates/slideshow.html                           |  32 +-
 15 files changed, 764 insertions(+), 30 deletions(-)

diff --git a/assets/static/revealjs/dist/theme/tor.css b/assets/static/revealjs/dist/theme/tor.css
index 2c55510..60c6c37 100644
--- a/assets/static/revealjs/dist/theme/tor.css
+++ b/assets/static/revealjs/dist/theme/tor.css
@@ -23,7 +23,7 @@ section.has-dark-background, section.has-dark-background h1, section.has-dark-ba
   --heading-color: #683086;
   --heading-line-height: 1.2;
   --heading-letter-spacing: normal;
-  --heading-text-transform: uppercase;
+  --heading-text-transform: none;
   --heading-text-shadow: none;
   --heading-font-weight: 600;
   --heading1-text-shadow: none;
@@ -77,7 +77,7 @@ section.has-dark-background, section.has-dark-background h1, section.has-dark-ba
   font-weight: 600;
   line-height: 1.2;
   letter-spacing: normal;
-  text-transform: uppercase;
+  text-transform: none;
   text-shadow: none;
   word-wrap: break-word; }
 
@@ -301,14 +301,31 @@ section.has-dark-background, section.has-dark-background h1, section.has-dark-ba
  *********************************************/
 @media print {
   .backgrounds {
-    background-color: #fff; } }
+    background-color: #fff; }
+}
 
+.print-pdf .footer {
+  display: none;
+}
 /*********************************************
  * FOOTER
  *********************************************/
 
 .footer {
   background-color: #683086;
+  min-height: 10%;
+}
+
+.footer img {
+  position:relative;
+  min-height: 1.5em;
+  padding: 5px;
+}
+
+.footer a {
+  font-size: 1.5em !important;
+  padding: 5px;
+  top: 10px;
 }
 
 /*********************************************
@@ -325,3 +342,11 @@ section.has-dark-background, section.has-dark-background h1, section.has-dark-ba
 hr.dark {
   border: 5px solid #683086;
 }
+
+.order-last {
+  text-align: left !important;
+}
+
+.order-first {
+  text-align: right !important;
+}
diff --git a/content/outreach/contents.lr b/content/outreach/contents.lr
index cd2b5fe..9cf4a65 100644
--- a/content/outreach/contents.lr
+++ b/content/outreach/contents.lr
@@ -1,4 +1,4 @@
-section: Community
+section: community
 ---
 section_id: outreach
 ---
diff --git a/content/relay-operations/technical-setup/bridge/docker/contents.lr b/content/relay-operations/technical-setup/bridge/docker/contents.lr
index 85ffb24..bfc1b38 100644
--- a/content/relay-operations/technical-setup/bridge/docker/contents.lr
+++ b/content/relay-operations/technical-setup/bridge/docker/contents.lr
@@ -9,7 +9,7 @@ body:
 ### 1. Deploy a container
 
 We provide a docker-compose file that helps you deploy the container.
-First, [download docker-compose.yml](https://gitlab.torproject.org/torproject/anti-censorship/docker-obfs4-bridge/raw/master/docker-compose.yml), and then write your bridge configuration to a new file, `.env`, which is in the same directory as `docker-compose.yml`. Here's a template:
+First, [download docker-compose.yml](https://gitlab.torproject.org/torproject/anti-censorship/docker-obfs4-bridge/raw/main/docker-compose.yml), and then write your bridge configuration to a new file, `.env`, which is in the same directory as `docker-compose.yml`. Here's a template:
 
 ```
 # Your bridge's Tor port.
diff --git a/content/training/resources/tor-training/contents.lr b/content/training/resources/tor-training/contents.lr
new file mode 100644
index 0000000..50e292f
--- /dev/null
+++ b/content/training/resources/tor-training/contents.lr
@@ -0,0 +1,549 @@
+_model: slideshow
+---
+title: The Tor Network
+---
+_template: slideshow.html
+---
+background: white
+---
+image: /static/images/onion.png
+---
+slides:
+
+#### slide ####
+title: Topics
+----
+description:
+- What is Tor?
+- Types of relays
+- Technical setup
+- More about relays
+- Relay diversity
+- Getting help
+
+
+#### slide ####
+title: What is Tor?
+----
+description:
+- Tor is free software and an open network.
+- Mitigates against tracking, surveillance and censorship.
+- Run by a US non-profit and volunteers from all over the world.
+- It's Tor, not TOR.
+
+
+#### slide ####
+title: The Tor network
+----
+description:
+- An open network that everyone can be a part of.
+- The network is composed of different types of servers run by volunteers around the world.
+- Your server will relay the Tor traffic to another server on the Internet.
+- Before entering the network, your server will automatically go through the relay lifecycle.
+
+
+#### slide ####
+title: Why run a Tor relay?
+----
+description:
+By running a Tor relay, you can help make the Tor network:
+- faster (and therefore more usable)
+- more robust against attacks
+- more stable in case of outages
+- safer for users (spying on more relays is harder than on a few)
+
+
+#### slide ####
+title: Types of Relays
+----
+slide_layout: title-slide
+----
+background_image: /static/images/onion-white.png
+----
+description:
+-
+
+
+#### slide ####
+title: Guard/middle (aka non-exit) relay
+----
+description:
+- A guard is the first relay in the chain of 3 relays building a Tor circuit.
+- A middle relay is neither a guard nor an exit, but acts as the second hop between them.
+- To become a guard, a middle relay has to be stable and fast (at least 2MByte/s); otherwise, it will remain a middle relay.
+
+
+#### slide ####
+title: Exit relay
+----
+description:
+- The exit relay is the final relay in a Tor circuit, and sends the traffic to its destination.
+- That is why exit relays have the most significant legal exposure and liability of all relays.
+- Before running an exit relay, talk with your local digital rights organization.
+- **You should not run a Tor exit relay from your home.**
+
+
+#### slide ####
+title: Bridge
+----
+description:
+- A bridge is a node in the network that is not listed in the public Tor directory, making it harder for ISPs and governments to block it.
+- Bridges are relatively easy, low-risk, and low bandwidth Tor relays to operate.
+- And there's another special kind of bridge: Pluggable transports. These hide your Tor traffic by adding a layer of obfuscation.
+
+
+#### slide ####
+title: The lifecycle of a new relay
+----
+description:
+Non-exit relays go through a lifecycle of four phases (defined in days):
+- Days 0-3: the unmeasured phase.
+- Days 3-8: network authorities start the remote measurement phase (the ramp-up guard phase).
+- Days 8-68: guard phase (where load counter intuitively drops and then rises higher).
+
+
+#### slide ####
+title: The lifecycle of a new relay
+----
+description:
+- After 68 days, if stable and fast enough, the relay will receive a **Guard flag** (steady-state guard phase).
+- Read about all the phases in: <https://blog.torproject.org/lifecycle-new-relay>
+
+
+#### slide ####
+title: Relay requirements
+----
+slide_layout: title-slide
+----
+background_image: /static/images/onion-white.png
+----
+description:
+-
+
+
+#### slide ####
+title: Before we start
+----
+description:
+- Never run a relay without the consent of the network administrator or machine owner.
+  Read the Terms of Service (ToS) first, so you don’t risk losing money.
+- Choose which type of relay you will host. A non-exit relay is an easy way to start helping the network.
+- Read the documentation: <https://community.torproject.org/relay>
+
+
+#### slide ####
+title: Bandwidth requirements
+----
+description:
+- It’s recommended to have at least 16 Mbit/s (Mbps) upload and download bandwidth available for Tor. More is better.
+- The minimum requirements for a relay are 10 Mbit/s (Mbps).
+- If you have less than 10 Mbit/s but at least 1 Mbit/s, we recommend running a bridge with obfs4 support.
+
+
+#### slide ####
+title: Monthly outbound traffic
+----
+description:
+- Relays must use at least 100 GByte of outbound/incoming traffic per month.
+- If you have a metered plan, you might want to configure Tor to use only a given amount of bandwidth or monthly traffic.
+- More (>2 TB/month) is better and recommended.
+
+
+#### slide ####
+title: Public IPv4 address
+----
+description:
+- Every relay needs a public IPv4 address - either directly on the host (preferred) or via NAT and port forwarding.
+- The IPv4 address is not required to be static, but static IP addresses are preferred.
+- Your IPv4 address should remain unchanged for at least 3 hours (network consensus).
+- You can only run two Tor relays per public IPv4.
+
+
+#### slide ####
+title: Other requirements
+----
+description:
+- Memory: A <40 Mbit/s non-exit relay should have at least 512 MB of RAM available.
+- Disk storage: Tor does not need much disk storage. A typical Tor relay needs less than 200 MB.
+
+
+#### slide ####
+title: Other requirements
+----
+description:
+- Any modern CPU should be fine.
+- Uptime: Ideally, the relay runs on a server which runs 24/7.
+
+
+#### slide ####
+title: Choosing your relay hosting
+----
+description:
+- The Tor community team maintains GoodBadISPs – a list about the experience of running relays: <https://community.torproject.org/relay/community-resources/good-bad-isps/>
+- Some providers only allow non-exit relays, so check the GoodBadISPs list before buying a service.
+- Running a relay can cost anywhere between a few bucks to hundreds per month.
+
+
+#### slide ####
+title: Technical setup
+----
+slide_layout: title-slide
+----
+background_image: /static/images/onion-white.png
+----
+description:
+-
+
+
+#### slide ####
+title: Non-exit relay - Debian/Ubuntu
+----
+description:
+- Enable the Tor Project package repository
+- Install the tor package
+
+```
+  $ apt update && apt install tor
+```
+
+
+#### slide ####
+title: Non-exit relay - Debian/Ubuntu
+----
+description:
+- Add relay configuration to the `/etc/tor/torrc` file:
+```
+  Nickname myNiceRelay
+  ExitRelay 0
+  SocksPort 0
+  ControORPort 443
+  lSocket 0
+  ContactInfo tor-operator at your-emailaddress-domain
+  Log notice syslog
+```
+
+
+#### slide ####
+title: Non-exit relay - Debian/Ubuntu
+----
+description:
+- Restart the tor daemon:
+
+```
+  $ systemctl restart tor at default
+```
+
+
+#### slide ####
+title: Non-exit relay - FreeBSD
+----
+description:
+- Install the tor package
+
+```
+  pkg install tor ca_root_nss
+```
+
+
+#### slide ####
+title: Non-exit relay - FreeBSD
+----
+description:
+  - Edit the configuration file `/usr/local/etc/tor/torrc`
+
+```
+  Nickname myNiceRelay
+  ORPort 9001
+  ExitRelay 0
+  SocksPort 0
+  ControlSocket 0
+  ContactInfo tor-operator at your-emailaddress-domain
+  Log notice syslog
+```
+
+
+#### slide ####
+title: Non-exit relay - FreeBSD
+----
+description:
+- Ensure that the random_id sysctl setting is enabled:
+
+```
+  echo "net.inet.ip.random_id=1" >> /etc/sysctl.conf
+  sysctl net.inet.ip.random_id=1
+```
+
+
+#### slide ####
+title: Non-exit relay - FreeBSD
+----
+description:
+- Start the tor daemon and make sure it starts at boot:
+
+```
+  sysrc tor_enable=YES
+  service tor start
+```
+
+
+#### slide ####
+title: Non-exit relay - FreeBSD
+----
+description:
+
+- Optional, but recommended to get package updates faster: <https://community.torproject.org/relay/setup/guard/freebsd/>
+
+
+#### slide ####
+title: Verify that your relay works
+----
+description:
+
+After restarting the service, verify that the log file contains the following entry:
+```
+  Self-testing indicates your ORPort is
+  reachable from the outside.
+  Excellent.
+  Publishing server descriptor.
+```
+
+About 3 hours after you started your relay, it should appear on Metrics portal in Relay Search.
+
+
+#### slide ####
+title: More about relays
+----
+slide_layout: title-slide
+----
+background_image: /static/images/onion-white.png
+----
+description:
+-
+
+
+#### slide ####
+title: Technical tips
+----
+description:
+- Enable automatic software updates.
+- Backup your Tor Identity Keys.
+- It's possible to limit bandwidth usage (and traffic). Check the parameters, for example, AccountingMax, AccountingRule, AccountingStart.
+- If you run more than one Tor relay, you need to set the MyFamily parameter.
+
+
+#### slide ####
+title: Orchestrating
+----
+description:
+- Running multiple relays by hand can be challenging.
+- Configuration management tools can make relay operators' lives easier:
+- Ansible-relayor: <http://github.com/nusenu/ansible-relayor>
+
+
+#### slide ####
+title: Metrics
+----
+description:
+- Metrics portal: <https://metrics.torproject.org>
+- You can search for how many relays are in the network, how many are exits, etc.
+- In 2021 there are ~6,600 public relays and ~1,500 bridges.
+- Check: how many relays are in your country? Who runs these relays? How diverse are they?
+
+
+#### slide ####
+title: Network diversity
+----
+slide_layout: title-slide
+----
+background_image: /static/images/onion-white.png
+----
+description:
+-
+
+
+#### slide ####
+title: Monoculture
+----
+description:
+- A single kernel vulnerability in GNU/Linux impacting all Tor relays could be devastating.
+- Diversity of Operating System (OS): ~90% of relays are Linux.
+
+
+#### slide ####
+title: Monoculture
+----
+description:
+- Diversity of Autonomous Systems (AS).
+- Try to avoid the following hosters: OVH SAS (AS16276), Online S.a.s. (AS12876), Hetzner Online GmbH (AS24940), DigitalOcean, LLC (AS14061).
+
+
+#### slide ####
+title: The TorBSD Diversity Project
+----
+description:
+- The Tor BSD Diversity Project (TDP) is an initiative seeking to extend the use of BSD Unix operating systems in the network.
+- Goals: increase the number of Tor relays running BSDs; Engage the BSD community about Tor anonymity; Port Tor related programs to BSD operating systems.
+
+
+#### slide ####
+title: More about exit relays
+----
+slide_layout: title-slide
+----
+background_image: /static/images/onion-white.png
+----
+description:
+-
+
+
+#### slide ####
+title: Legal information
+----
+description:
+- Many countries have regulations that exclude internet service providers from liability.
+- It's a good idea to consult with a lawyer or your local digital rights organization.
+- Under most circumstances, you will be able to handle legal matters by having an abuse response letter.
+
+
+#### slide ####
+title: Legal resources
+----
+description:
+- The EFF Tor Legal FAQ: <https://community.torproject.org/relay/community-resources/eff-tor-legal-faq/>
+- It's important to respond to abuse complaints in a timely manner (usually within 24 hours).
+- Abuse letter templates: <https://community.torproject.org/relay/community-resources/tor-abuse-templates>
+
+
+#### slide ####
+title: Tips for running an exit relay
+----
+description:
+- Get a separate IP for the relay, and don’t use it for other services.
+- Set up a Tor Exit Notice, so if someone checks your exit IP they'll know that it’s a Tor Exit.
+- If you receive excessive complaints, consider running a Reduced Exit Policy.
+- For more tips: <https://blog.torproject.org/tips-running-exit-node>
+
+
+#### slide ####
+title: Running relays with others
+----
+slide_layout: title-slide
+----
+background_image: /static/images/onion-white.png
+----
+description:
+-
+
+
+#### slide ####
+title: Running a relay with others
+----
+description:
+- You can work with your university department, employer or institution, or an organization like Torservers.org, Nos oignons, etc.
+- Some organizations – known as Relay Associations – are solely dedicated to this purpose: <https://community.torproject.org/relay/community-resources/relay-associations/>.
+
+
+#### slide ####
+title: Relays associations
+----
+description:
+- It's often advised to create some type of non-profit organization. This is useful for having a bank account and shared ownership.
+- The most important thing is to have a group of people (3-5 suggested to start) interested in helping.
+
+
+#### slide ####
+title: Running a relay with universities
+----
+description:
+- Universities are typically home to a reliable, robust, and well-equipped network.
+- Many computer science departments and university libraries run relays: Massachusetts Institute of Technology, Universität Stuttgart, the University of Waterloo.
+
+#### slide ####
+title: Running a relay with universities
+----
+description:
+- Read more: <https://community.torproject.org/relay/community-resources/tor-relay-universities/>
+
+
+
+#### slide ####
+title: At your company or organization
+----
+description:
+- If you work at a Tor-friendly company or organization, that's another ideal place to run a relay.
+- Companies like Brass Horn Communications, Quintex Alliance Consulting, and many others run relays.
+- And organizations like Digital Courage, Access Now, Derechos Digitales, Calyx Institute, and Lebanon Libraries in New Hampshire.
+
+
+#### slide ####
+title: Bad relays
+----
+slide_layout: title-slide
+----
+background_image: /static/images/onion-white.png
+----
+description:
+-
+
+
+#### slide ####
+title: What is a bad relay?
+----
+description:
+- A bad relay is one that either doesn't work properly or tampers with our users' connections. That can be either through maliciousness or misconfiguration.
+
+
+#### slide ####
+title: What is a bad relay?
+----
+description:
+- For example: tampering with exit traffic in any way (including dropping accepted connections). Or, running HSDirs that harvest and probe .onion addresses
+
+
+#### slide ####
+title: Reporting a bad relay
+----
+description:
+- The "Bad relays" private working group at the Tor Project work to detect misconfigured, malicious, or suspicious relays.
+- Users can report bad relays by sending an email to bad-relays at lists.torproject.org with the relay’s IP address or fingerprint, what kind of behavior you see, and any additional information needed to reproduce the issue.
+
+
+#### slide ####
+title: What happens to bad relays?
+----
+description:
+- After a relay is reported and behavior has been verified, the Tor Project will attempt to contact the relay operator.
+- The relay will be flagged to prevent it from being used (BadExit, Invalid, Reject).
+- The working group actively looks for bad relays using open source tools like exitmap, sysbilhunter.
+
+
+#### slide ####
+title: How do I get help running a Tor relay?
+----
+slide_layout: title-slide
+----
+background_image: /static/images/onion-white.png
+----
+description:
+-
+
+
+#### slide ####
+title: Getting help
+----
+description:
+- Read the Tor Relay documentation:
+  <https://community.torproject.org/relay>
+- Subscribe to the tor-relays mailing list: <https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-relays>
+- Join our IRC channel: #tor-relays in irc.oftc.net
+
+
+#### slide ####
+title: Thank you!
+----
+slide_layout: title-slide
+----
+background_image: /static/images/onion-white.png
+----
+description:
+-
diff --git a/flowblocks/slide.ini b/flowblocks/slide.ini
index 23cf3fb..78effe7 100644
--- a/flowblocks/slide.ini
+++ b/flowblocks/slide.ini
@@ -6,6 +6,11 @@ label = Title
 type = markdown
 translate = True
 
+[fields.subtitle]
+label = Subtitle
+type = markdown
+translate = True
+
 [fields.description]
 label = Description
 type = markdown
@@ -15,16 +20,24 @@ translate = True
 label = Image
 type = select
 source = record.attachments.images
+translate = False
 
 [fields.background]
 label = Background color
 type = string
+translate = False
 
-[fields.layout]
+[fields.slide_layout]
 label = Slide layout
 type = string
+translate = False
 
-[fields.background-image]
+[fields.background_image]
 label = Background image
 type = string
 translate = False
+
+[fields.author]
+label = Author
+type = string
+translate = False
diff --git a/models/page.ini b/models/page.ini
index 0671112..61ad278 100644
--- a/models/page.ini
+++ b/models/page.ini
@@ -15,6 +15,7 @@ translate = True
 [fields.section]
 label = Section
 type = string
+translate = True
 
 [fields.cta]
 label = Call To Action
diff --git a/models/project.ini b/models/project.ini
new file mode 100644
index 0000000..0590259
--- /dev/null
+++ b/models/project.ini
@@ -0,0 +1,51 @@
+[model]
+name = Project
+label = {{ this.title }}
+
+[fields.title]
+label = Title
+type = string
+
+[fields.url]
+label = url
+type = url
+
+[fields.active]
+label = Active
+type = boolean
+
+[fields.completed]
+label = Completed
+type = boolean
+
+[fields.subtitle]
+label = Subtitle
+type = markdown
+
+[fields.color]
+label = Color
+type = string
+
+[fields.body]
+label = body
+type = markdown
+
+[fields.mentors]
+label = Mentors
+type = strings
+
+[fields.languages]
+label = Languages
+type = strings
+
+[fields.difficulty]
+label = Difficulty Level
+type = string
+
+[fields.html]
+label = Html
+type = string
+
+[fields.key]
+label = key
+type = string
diff --git a/models/projects.ini b/models/projects.ini
new file mode 100644
index 0000000..c09bf77
--- /dev/null
+++ b/models/projects.ini
@@ -0,0 +1,33 @@
+[model]
+name = Projects
+label = {{ this.title }}
+
+[fields.title]
+label = Title
+type = string
+
+[fields.section]
+label = Section
+type = string
+translate = True
+
+[fields.section_id]
+label = Section_id
+type = string
+translate = False
+
+[fields.body]
+label = Body
+type = markdown
+
+[fields.color]
+label = Color
+type = string
+
+[fields.html]
+label = Html
+type = string
+
+[children]
+model = project
+order_by = title
diff --git a/models/slideshow.ini b/models/slideshow.ini
new file mode 100644
index 0000000..3f2062f
--- /dev/null
+++ b/models/slideshow.ini
@@ -0,0 +1,43 @@
+[model]
+name = Slideshow
+label = {{ this.title }}
+
+[fields.title]
+label = Title
+type = string
+translate = True
+
+[fields.description]
+label = Description
+type = string
+translate = True
+
+[fields.author]
+label = Author
+type = string
+translate = False
+
+[fields.subtitle]
+label = Subtitle
+type = string
+translate = True
+
+[fields.slides]
+label = Slides
+type = flow
+flow_blocks = slide
+
+[fields.color]
+label = Color
+type = string
+translate = False
+
+[fields.image]
+label = image
+type = string
+translate = False
+
+[fields.background]
+label = background
+type = string
+translate = False
diff --git a/models/text.ini b/models/text.ini
index 75e24ba..380668d 100644
--- a/models/text.ini
+++ b/models/text.ini
@@ -1,7 +1,9 @@
 [model]
 name = Text
 label = Text
+translate = True
 
 [fields.body]
 label = Body
 type = text
+translate = True
diff --git a/templates/blocks/slide.html b/templates/blocks/slide.html
index 5f96574..2d89823 100644
--- a/templates/blocks/slide.html
+++ b/templates/blocks/slide.html
@@ -1,5 +1,20 @@
-<section data-background-color="{{ this.background }}">
-  <h2>{{ this.title }}</h2>
-  {{ this.description }}
-
-</section>
+{% if this.slide_layout == "title-slide" %}
+  <section class="title" data-background-color="white" {% if this.background_image %} data-background-image="{{ this.background_image|asseturl }}" data-background-position="right bottom" data-background-size="3em" {% endif %} >
+    <h3>{{ this.title }}</h3>
+    <hr class="dark" />
+    {% if this.subtitle %}
+      <h4>{{ this.subtitle }}</h4>
+    {% endif %}
+    {% if this.author %}
+      <h5>{{ this.author }}</h5>
+    {% endif %}
+  </section>
+{% else %}
+  <section {% if this.background != "white" %} data-background-color="{{ this.background }}" {% else %} data-background-color="white" {% endif %} >
+    <h2>{{ this.title }}</h2>
+    {{ this.description }}
+    {% if this.image %}
+        <img data-src="{{ this.image }}">
+    {% endif %}
+  </section>
+{% endif %}
diff --git a/templates/onion-services.html b/templates/onion-services.html
index a42891a..603d459 100644
--- a/templates/onion-services.html
+++ b/templates/onion-services.html
@@ -32,7 +32,7 @@
           {{ _('Check out the code') }}<i class="ml-3 pt-2 fas fa-arrow-right"></i>
     </a>
   </div>
-  <div class="row py-5 text-center mx-auto">
+  <div id="featured-onions" class="row py-5 text-center mx-auto">
     <h2 class="display-4 text-primary text-center mx-auto">{{ _('Featured .onion sites') }}</h2>
   </div>
   <div class="row mx-auto">
diff --git a/templates/outreach-talk.html b/templates/outreach-talk.html
index 72443f8..ce98d72 100644
--- a/templates/outreach-talk.html
+++ b/templates/outreach-talk.html
@@ -52,7 +52,7 @@
             <span class="display-4 text-primary">
               <i class="fas fa-hand-holding-heart pb-4"></i>
             </span>
-            <h2 class="card-title">{{ _('Tor software is developed by the Tor Project, a 501(c)3 nonprofit organization.') }}</h2>
+            <h2 class="card-title">{{ _('Tor software is developed by the Tor Project, a 501(c)(3) nonprofit organization.') }}</h2>
             <p class="card-text">{{ _('We build free and open source software anyone can use.') }}</p>
           </div>
         </div>
diff --git a/templates/relay-operations.html b/templates/relay-operations.html
index 7690b3b..1109d78 100644
--- a/templates/relay-operations.html
+++ b/templates/relay-operations.html
@@ -21,7 +21,7 @@
   </div>
   <div class="row py-5 text-center mx-auto">
     <h2 class="display-4 text-primary text-center mx-auto my-3">{{ _('Connect with other Relay Operators') }}</h2>
-    <p class="text-center">{{ _('The best resource of all is the active community of relay operators on tor-relays mailing list and on IRC #tor-relays in irc.oftc.net. ') }}</p>
+    <p class="text-center">{{ _('The best resource of all is the active community of relay operators on tor-relays mailing list and on IRC') }} <a href="https://webchat.oftc.net/?channels=tor-relays" target="_blank">{{_('#tor-relays') }}</a> {{ _('in irc.oftc.net.') }}</p>
     <a class="btn btn-lg btn-outline-primary mx-auto my-3" href="https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-relays">
           {{ _('Relay Operators mailing list') }}<i class="ml-3 pt-2 fas fa-arrow-right"></i>
     </a>
diff --git a/templates/slideshow.html b/templates/slideshow.html
index f1d6065..c6b330e 100644
--- a/templates/slideshow.html
+++ b/templates/slideshow.html
@@ -16,24 +16,26 @@
 	<body>
     <div class="reveal">
 			<!-- Any section element inside of this container is displayed as a slide -->
-			<div class="slides">
-				<section class="title" data-background-color="#683086" data-background-image="{{ this.image|asseturl }}" data-background-position="right bottom" data-background-size="3em">
-				  <h3>{{ this.title }}</h3>
-					<hr />
-				  <h4>{{ this.subtitle }}</h4>
-					<p>{{ this.author }}</p>
-				</section>
+			<div class="slides {{ bag('alternatives', this.alt, 'order') }}">
+				<section>
+					<section class="title" data-background-color="#683086" data-background-image="{{ this.image|asseturl }}" data-background-position="right bottom" data-background-size="3em">
+					  <h3>{{ this.title }}</h3>
+						<hr />
+					  <h4>{{ this.subtitle }}</h4>
+						<p>{{ this.author }}</p>
+					</section>
 
-        {{ this.slides }}
+	        {{ this.slides }}
 
-				<div class="footer">
-					<div class="left">
-						<a href="https://torproject.org">torproject.org</a>
-					</div>
-					<div class="right">
-						<img src="{{ '/static/images/tor-logo/White.png'|asseturl }}">
+					<div class="footer">
+						<div class="left">
+							<a href="https://torproject.org">torproject.org</a>
+						</div>
+						<div class="right">
+							<img src="{{ '/static/images/tor-logo/White.png'|asseturl }}">
+						</div>
 					</div>
-				</div>
+				</section>
       </div>
 
     </div>





More information about the tor-commits mailing list