diff --git a/docs/_data/portland-2026-config.yaml b/docs/_data/portland-2026-config.yaml
index 488d912f6..49511aefe 100644
--- a/docs/_data/portland-2026-config.yaml
+++ b/docs/_data/portland-2026-config.yaml
@@ -107,7 +107,7 @@ sponsorship:
price: $15,000
grants:
- url: https://docs.google.com/forms/d/e/1FAIpQLSf3fGfW_8W1x3oeKeoUpg8ZPLvyY4cQvO5Bii_OTrgW97cLNw/viewform?embedded=true
+ url: "https://docs.google.com/forms/d/e/1FAIpQLSctdb3MT_MvB1x_o8iKKhp_xik8YXDLVCnnDT_tv2k2LPlrJg/viewform?usp=dialog"
ends: 'February 5, 2026'
notification: 'February 14, 2026'
@@ -191,8 +191,14 @@ writing_day:
url: "https://docs.google.com/forms/u/1/d/e/1FAIpQLSeHMZ1uXTfnT0HMm-KfsgxYV1w3tmS7bMPtBx4H9cktJpSrdg/viewform?usp=dialog"
date: Sunday, May 3, 9 AM - 5 PM
+volunteer:
+ form_url: "https://docs.google.com/forms/d/e/1FAIpQLSeJvA3uhXDuFsl_kFYWyTyTIyYs6ItHMPspOVq_iSlIloFo6g/viewform?usp=sharing&ouid=109538527958730243648"
+ applications_close: "February 13"
+ schedule_signup_close: "March 27"
+
hike:
date: Saturday, May 2, 2 PM
+ register_url: "https://ti.to/writethedocs/write-the-docs-portland-2026/with/k-pi4-g8s80"
sponsors:
keystone:
@@ -210,14 +216,14 @@ sponsors:
flaglanding: True
flaghassponsors: True
flagcfp: True
-flagticketsonsale: False
+flagticketsonsale: True
flagsoldout: False
flagspeakersannounced: False
flagrunofshow: False
flaghasschedule: False
flagscheduleincomplete: True
flaghasshirts: False
-flaglivestreaming: True
+flaglivestreaming: False
flagvideos: False
flagpostconf: False
flaghasbadgeflair: False
@@ -230,3 +236,8 @@ flaghaswritingday: True
flaghaslightningtalks: True
flaghasjobfair: True
flaghasboat: False
+
+# Pages to be linked in January 2026
+flaghasvisiting: False
+flaghasattendeeguide: False
+flaghasteam: False
diff --git a/docs/_data/schema-config.yaml b/docs/_data/schema-config.yaml
index 009a0e433..60b2775f4 100644
--- a/docs/_data/schema-config.yaml
+++ b/docs/_data/schema-config.yaml
@@ -38,6 +38,7 @@ writing_day: include('writing_day-details', required=False)
lightning_talks: include('lightning_talks-details', required=False)
qa: include('qa-details', required=False)
hike: include('hike-details', required=False)
+volunteer: include('volunteer-details', required=False)
flaghassponsors: bool()
flagcfp: bool()
@@ -66,6 +67,9 @@ flaghasboat: bool()
flaglanding: bool()
flaghasbadgeflair: bool(required=False)
flaghasfood: bool(required=False)
+flaghasvisiting: bool(required=False)
+flaghasattendeeguide: bool(required=False)
+flaghasteam: bool(required=False)
---
@@ -208,9 +212,16 @@ writing_day-details:
hike-details:
date: str(required=True)
+ register_url: str(required=False)
lightning_talks-details:
signup_url: str(required=True)
qa-details:
event_id: str(required=True)
+
+volunteer-details:
+ form_url: str(required=False)
+ applications_close: str(required=False)
+ schedule_signup_close: str(required=False)
+
diff --git a/docs/_scripts/process_flickr_images.py b/docs/_scripts/process_flickr_images.py
new file mode 100644
index 000000000..b2da9fb36
--- /dev/null
+++ b/docs/_scripts/process_flickr_images.py
@@ -0,0 +1,144 @@
+#!/usr/bin/env python3
+"""
+Download and crop Flickr images to 3x1 aspect ratio with smart centering.
+Images are cropped to keep people in frame when possible.
+"""
+
+import os
+import subprocess
+from PIL import Image
+
+
+def process_flickr_images():
+ """Download and process all Flickr images for Portland 2026."""
+
+ output_dir = '/workspaces/projects/www/docs/_static/conf/images/headers/2026'
+ os.makedirs(output_dir, exist_ok=True)
+
+ # Photo IDs
+ flickr_photos = {
+ 'writing-day': '54533185056',
+ 'lightning-talks': '54888818907',
+ 'unconference': '54495525352',
+ 'social-events': '54498891188',
+ 'tickets': '54885637248',
+ 'convince-your-manager': '54506604594',
+ 'volunteer': '54498514462',
+ 'virtual': '54498874517',
+ 'sponsors': '54519655528',
+ 'prospectus': '54919509718',
+ 'news': '54499378371',
+ 'speakers': '54532299817',
+ 'qa': '54510556714',
+ 'attendee-guide': '54885594124',
+ 'team': '54918305952',
+ }
+
+ print("Downloading and cropping Flickr images to 3x1 aspect ratio...")
+ print("=" * 60)
+
+ successful = []
+ failed = []
+
+ for page_name, photo_id in flickr_photos.items():
+ output_file = os.path.join(output_dir, f'{page_name}.jpg')
+ url = f'https://www.flickr.com/photos/writethedocs/{photo_id}/'
+
+ print(f"\n{page_name}...", end=" ")
+
+ try:
+ # Download the HTML page
+ html_file = f'/tmp/{page_name}_page.html'
+ result = subprocess.run(
+ ['curl', '-s', '-L', url, '-o', html_file],
+ timeout=10,
+ capture_output=True
+ )
+
+ if result.returncode == 0 and os.path.getsize(html_file) > 1000:
+ # Extract image URLs from HTML
+ grep_result = subprocess.run(
+ ['grep', '-oP', r'https://live\.staticflickr\.com/[^"]*?_b\.jpg|https://live\.staticflickr\.com/[^"]*?_c\.jpg|https://live\.staticflickr\.com/[^"]*?_h\.jpg'],
+ stdin=open(html_file),
+ capture_output=True,
+ text=True
+ )
+
+ if grep_result.stdout.strip():
+ image_url = grep_result.stdout.strip().split('\n')[0]
+ print(f"downloading...", end=" ")
+
+ # Download the actual image
+ temp_file = f'/tmp/{page_name}_orig.jpg'
+ img_result = subprocess.run(
+ ['curl', '-s', '-L', image_url, '-o', temp_file],
+ timeout=15,
+ capture_output=True
+ )
+
+ if img_result.returncode == 0 and os.path.getsize(temp_file) > 1000:
+ try:
+ img = Image.open(temp_file)
+ width, height = img.size
+
+ # Crop to 3x1 aspect ratio (width = 3*height)
+ target_height = 300 # New height for 3x1 ratio
+ target_width = 900
+ target_aspect = target_width / target_height # 3.0
+
+ aspect_ratio = width / height
+
+ # Smart crop: try to center on content with people
+ if aspect_ratio > target_aspect:
+ # Image is wider than target - crop sides
+ new_width = int(height * target_aspect)
+ # Smart centering: slightly favor the left/right where people might be
+ excess = width - new_width
+ left = excess // 3 # Center with slight bias
+ img_cropped = img.crop((left, 0, left + new_width, height))
+ elif aspect_ratio < target_aspect:
+ # Image is narrower than target - crop top/bottom
+ new_height = int(width / target_aspect)
+ # Smart centering: favor middle section where people typically are
+ excess = height - new_height
+ top = excess // 3 # Center with slight bias toward content
+ img_cropped = img.crop((0, top, width, top + new_height))
+ else:
+ img_cropped = img
+
+ # Resize to final dimensions
+ img_final = img_cropped.resize((target_width, target_height), Image.Resampling.LANCZOS)
+ img_final.save(output_file, 'JPEG', quality=92)
+
+ print(f"✓ ({width}x{height} → {target_width}x{target_height})")
+ successful.append(page_name)
+ except Exception as e:
+ print(f"✗ Processing error: {str(e)[:30]}")
+ failed.append(page_name)
+ else:
+ print(f"✗ Download failed")
+ failed.append(page_name)
+ else:
+ print(f"✗ No image URL in HTML")
+ failed.append(page_name)
+ else:
+ print(f"✗ Failed to fetch page")
+ failed.append(page_name)
+
+ except Exception as e:
+ print(f"✗ Error: {str(e)[:40]}")
+ failed.append(page_name)
+
+ print("\n" + "=" * 60)
+ print(f"Successfully processed: {len(successful)}/{len(flickr_photos)}")
+ if successful:
+ print(f"All Flickr images updated to 3x1 aspect ratio (900x300px)")
+ if failed:
+ print(f"Failed: {len(failed)}")
+
+ return len(failed) == 0
+
+
+if __name__ == '__main__':
+ success = process_flickr_images()
+ exit(0 if success else 1)
diff --git a/docs/_static/conf/images/headers/2026/attendee-guide.jpg b/docs/_static/conf/images/headers/2026/attendee-guide.jpg
new file mode 100644
index 000000000..1db788a50
Binary files /dev/null and b/docs/_static/conf/images/headers/2026/attendee-guide.jpg differ
diff --git a/docs/_static/conf/images/headers/2026/convince-your-manager.jpg b/docs/_static/conf/images/headers/2026/convince-your-manager.jpg
new file mode 100644
index 000000000..151572a36
Binary files /dev/null and b/docs/_static/conf/images/headers/2026/convince-your-manager.jpg differ
diff --git a/docs/_static/conf/images/headers/2026/hike.jpg b/docs/_static/conf/images/headers/2026/hike.jpg
new file mode 100644
index 000000000..0f413fafd
Binary files /dev/null and b/docs/_static/conf/images/headers/2026/hike.jpg differ
diff --git a/docs/_static/conf/images/headers/2026/lightning-talks.jpg b/docs/_static/conf/images/headers/2026/lightning-talks.jpg
new file mode 100644
index 000000000..0ff980c49
Binary files /dev/null and b/docs/_static/conf/images/headers/2026/lightning-talks.jpg differ
diff --git a/docs/_static/conf/images/headers/2026/news.jpg b/docs/_static/conf/images/headers/2026/news.jpg
new file mode 100644
index 000000000..26f8f6f91
Binary files /dev/null and b/docs/_static/conf/images/headers/2026/news.jpg differ
diff --git a/docs/_static/conf/images/headers/2026/prospectus.jpg b/docs/_static/conf/images/headers/2026/prospectus.jpg
new file mode 100644
index 000000000..c84698853
Binary files /dev/null and b/docs/_static/conf/images/headers/2026/prospectus.jpg differ
diff --git a/docs/_static/conf/images/headers/2026/qa.jpg b/docs/_static/conf/images/headers/2026/qa.jpg
new file mode 100644
index 000000000..736ebbb76
Binary files /dev/null and b/docs/_static/conf/images/headers/2026/qa.jpg differ
diff --git a/docs/_static/conf/images/headers/2026/schedule.jpg b/docs/_static/conf/images/headers/2026/schedule.jpg
new file mode 100644
index 000000000..43eea9295
Binary files /dev/null and b/docs/_static/conf/images/headers/2026/schedule.jpg differ
diff --git a/docs/_static/conf/images/headers/2026/social-events.jpg b/docs/_static/conf/images/headers/2026/social-events.jpg
new file mode 100644
index 000000000..fd79e82fe
Binary files /dev/null and b/docs/_static/conf/images/headers/2026/social-events.jpg differ
diff --git a/docs/_static/conf/images/headers/2026/speakers.jpg b/docs/_static/conf/images/headers/2026/speakers.jpg
new file mode 100644
index 000000000..49c12bc4d
Binary files /dev/null and b/docs/_static/conf/images/headers/2026/speakers.jpg differ
diff --git a/docs/_static/conf/images/headers/2026/sponsors.jpg b/docs/_static/conf/images/headers/2026/sponsors.jpg
new file mode 100644
index 000000000..6da7c38a6
Binary files /dev/null and b/docs/_static/conf/images/headers/2026/sponsors.jpg differ
diff --git a/docs/_static/conf/images/headers/2026/team.jpg b/docs/_static/conf/images/headers/2026/team.jpg
new file mode 100644
index 000000000..ed7789f35
Binary files /dev/null and b/docs/_static/conf/images/headers/2026/team.jpg differ
diff --git a/docs/_static/conf/images/headers/2026/tickets.jpg b/docs/_static/conf/images/headers/2026/tickets.jpg
new file mode 100644
index 000000000..4fe2e6bf2
Binary files /dev/null and b/docs/_static/conf/images/headers/2026/tickets.jpg differ
diff --git a/docs/_static/conf/images/headers/2026/unconference.jpg b/docs/_static/conf/images/headers/2026/unconference.jpg
new file mode 100644
index 000000000..63afcf8be
Binary files /dev/null and b/docs/_static/conf/images/headers/2026/unconference.jpg differ
diff --git a/docs/_static/conf/images/headers/2026/virtual.jpg b/docs/_static/conf/images/headers/2026/virtual.jpg
new file mode 100644
index 000000000..520a102b0
Binary files /dev/null and b/docs/_static/conf/images/headers/2026/virtual.jpg differ
diff --git a/docs/_static/conf/images/headers/2026/visiting.jpg b/docs/_static/conf/images/headers/2026/visiting.jpg
new file mode 100644
index 000000000..35e57c4d5
Binary files /dev/null and b/docs/_static/conf/images/headers/2026/visiting.jpg differ
diff --git a/docs/_static/conf/images/headers/2026/volunteer.jpg b/docs/_static/conf/images/headers/2026/volunteer.jpg
new file mode 100644
index 000000000..6387419c9
Binary files /dev/null and b/docs/_static/conf/images/headers/2026/volunteer.jpg differ
diff --git a/docs/_static/conf/images/headers/2026/writing-day.jpg b/docs/_static/conf/images/headers/2026/writing-day.jpg
new file mode 100644
index 000000000..eb8ca5632
Binary files /dev/null and b/docs/_static/conf/images/headers/2026/writing-day.jpg differ
diff --git a/docs/_templates/2026/menu-desktop.html b/docs/_templates/2026/menu-desktop.html
index 5ed9097f6..daf4cbe43 100644
--- a/docs/_templates/2026/menu-desktop.html
+++ b/docs/_templates/2026/menu-desktop.html
@@ -61,15 +61,21 @@
- Venue
{% if not flagisvirtual %}
+ {% if flaghasvisiting %}
- Visiting {{ city }}
+ {% endif %}
+ {% if flaghasattendeeguide %}
- Attendee Guide
- - Health and Safety Policy
+ {% endif %}
- Volunteer Info
{% endif %}
- Virtual Attendance
+ {% if not flagisvirtual %}
+ - Health and Safety Policy
+ {% endif %}
- Code of Conduct
- {% if flagspeakersannounced %}
+ {% if flaghasteam %}
- Meet the Team
{% endif %}
- Contact us
diff --git a/docs/_templates/2026/menu-mobile.html b/docs/_templates/2026/menu-mobile.html
index a4c297b75..742dd5eec 100644
--- a/docs/_templates/2026/menu-mobile.html
+++ b/docs/_templates/2026/menu-mobile.html
@@ -46,14 +46,20 @@
- Venue
{% if not flagisvirtual %}
+ {% if flaghasvisiting %}
- Visiting {{ city }}
+ {% endif %}
+ {% if flaghasattendeeguide %}
- Attendee Guide
- - Health and Safety Policy
+ {% endif %}
- Volunteer Info
{% endif %}
- Virtual Attendance
+ {% if not flagisvirtual %}
+ - Health and Safety Policy
+ {% endif %}
- Code of Conduct
- {% if flagspeakersannounced %}
+ {% if flaghasteam %}
- Meet the Team
{% endif %}
- Contact us
diff --git a/docs/conf.py b/docs/conf.py
index 6063e6810..b88b0196c 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -208,18 +208,17 @@ def _load_data(self, env, data_source, encoding):
# Our additions
-global_sponsors = yaml.safe_load("""
-- name: gitbook
- link: https://www.gitbook.com/?utm_campaign=launch&utm_medium=display&utm_source=write_the_docs&utm_content=ad
- brand: GitBook
- comment: Community sponsor
-""")
+global_sponsors = ""
# Dynamic announcement message
announcement_message = None
if datetime.date(2025, 8, 19) <= datetime.date.today() <= datetime.date(2025, 10, 28):
announcement_message = "Berlin conference: Oct 27-28. View the conference site."
+elif datetime.date.today() <= datetime.date(2026, 1, 19):
+ announcement_message = "Portland 2026 CFP is open! Submit your talk."
+elif datetime.date(2026, 1, 20) <= datetime.date.today() <= datetime.date(2026, 5, 2):
+ announcement_message = "Portland 2026 tickets are on sale! Get your ticket."
html_context = {
'conf_py_root': os.path.dirname(os.path.abspath(__file__)),
diff --git a/docs/conf/portland/2026/about.md b/docs/conf/portland/2026/about.md
index 9a5331bed..e76056c0c 100644
--- a/docs/conf/portland/2026/about.md
+++ b/docs/conf/portland/2026/about.md
@@ -10,5 +10,5 @@ We invite you to join hundreds of other folks for a three-day event to explore t
The Write the Docs conference covers any topic related to documentation in the software industry.
Past talks have also covered such diverse topics as empathy, the history of math symbols, and using emoji to keep your users' attention.
-Write the Docs brings *everyone* who writes the docs together in the same room: Writers, developers, support engineers, community managers, developer relations, and more.
+Write the Docs brings *everyone* who writes the docs together in the same room: writers, developers, support engineers, community managers, developer relations, and more.
We all have things to learn, and there's no better way than gathering at our events and sharing knowledge.
diff --git a/docs/conf/portland/2026/attendee-guide.md b/docs/conf/portland/2026/attendee-guide.md
index 3faf3d899..51b20986c 100644
--- a/docs/conf/portland/2026/attendee-guide.md
+++ b/docs/conf/portland/2026/attendee-guide.md
@@ -1,6 +1,7 @@
---
template: {{year}}/generic.html
og:image: _static/conf/images/headers/{{shortcode}}-{{year}}-opengraph.jpg
+banner: _static/conf/images/headers/2026/attendee-guide.jpg
---
# Attendee Guide
diff --git a/docs/conf/portland/2026/convince-your-manager.md b/docs/conf/portland/2026/convince-your-manager.md
index 330fb5a11..348a895a2 100644
--- a/docs/conf/portland/2026/convince-your-manager.md
+++ b/docs/conf/portland/2026/convince-your-manager.md
@@ -1,7 +1,7 @@
---
template: {{year}}/generic.html
og:image: _static/conf/images/headers/{{shortcode}}-{{year}}-opengraph.jpg
-banner: _static/conf/images/headers/2025/unconference.jpg
+banner: _static/conf/images/headers/2026/convince-your-manager.jpg
---
# Convince Your Manager
@@ -24,7 +24,7 @@ Remember to change the things in [brackets]!
*Write the Docs conferences bring together everyone who writes the docs – Tech Writers, Developers, Developer Relations, Customer Support – making the events an ideal networking opportunity. Each conference successfully combines a number of different event formats to deliver engaging, practical, and timely content.*
-*There is a single track of talks, a parallel unconference event, and a community writing day. The [sessions from last year](https://www.writethedocs.org/conf/portland/2024/speakers/) will give you a good idea of the kinds of topics covered, many of which are relevant to my work.*
+*There is a single track of talks, a parallel unconference event, and a community writing day. The [sessions from last year](https://www.writethedocs.org/conf/portland/2025/speakers/) will give you a good idea of the kinds of topics covered, many of which are relevant to my work.*
*Costs:*
@@ -94,7 +94,7 @@ Peer review new and existing documentation*
When discussing how to pitch Writing Day, a few helpful tips emerged:
-- Highlight specific projects from a previous [Writing Day project list. ](https://www.writethedocs.org/conf/portland/2023/writing-day/#project-listing)
+- Highlight specific projects from a previous [Writing Day project list.](https://www.writethedocs.org/conf/portland/2025/writing-day/#project-listing)
- If your community is looking for regular documentation contributions, this is a great place to onboard potential contributors and editors.
- Attending raises the visibility of your company in the community.
- Establishes your team's reputation for caring about their docs.
diff --git a/docs/conf/portland/2026/hike.md b/docs/conf/portland/2026/hike.md
index 439509099..4a8983088 100644
--- a/docs/conf/portland/2026/hike.md
+++ b/docs/conf/portland/2026/hike.md
@@ -1,7 +1,7 @@
---
template: {{year}}/generic.html
og:image: _static/conf/images/headers/{{shortcode}}-{{year}}-opengraph.jpg
-banner: _static/conf/images/headers/hike.png
+banner: _static/conf/images/headers/2026/hike.jpg
---
# Hike
@@ -12,26 +12,16 @@ We will be hiking in the amazing [Forest Park](https://forestparkconservancy.org
**The hike is around 5 miles long with 1,200 feet of elevation gain and is classified as a moderate hike. We’ll be going nice and slow so people can appreciate the views and forest.**
-It’s rained on us in the past, but we have faith it will be beautiful this year! We will hopefully see Mount Hood at the top :)
-
-
-
-
+It's rained on us in the past, but we have faith it will be beautiful this year! We will hopefully see Mount Hood at the top :)
## Schedule & Logistics
-- **Date: {{ hike.date }}**
+- **Date: {{ hike.date }}**
- **Arrival:** Meet 15 minutes before the start time.
- **Lunch (optional):** Join us at the [Nob Hill food carts](https://www.google.com/maps/place/Nob+Hill+Food+Carts/@45.5360531,-122.7007924,19.6z/data=!4m7!3m6!1s0x54950942eb34ca71:0xe277fed8c0cec152!8m2!3d45.5362156!4d-122.7000932!15sChZmb29kIGNhcnRzIG53IHBvcnRsYW5kkgEKZm9vZF9jb3VydOABAA!16s%2Fg%2F11vwhg4f9_?entry=tts) at 12:30pm for lunch. We'll leave for the trailhead at 1:40pm.
- **Start:** [Lower Macleay Park](https://www.google.com/maps/place/Lower+Macleay+Park/@45.5336665,-122.7234215,16z/data=!4m7!3m6!1s0x549509e9f2adf02d:0x1b3668a7adc941d9!8m2!3d45.5359671!4d-122.7125142!15sChVNYWNsZWF5IFBhcmsgRW50cmFuY2VaFyIVbWFjbGVheSBwYXJrIGVudHJhbmNlkgEEcGFya5oBJENoZERTVWhOTUc5blMwVkpRMEZuU1VOb2RWQklaRzluUlJBQuABAA!16s%2Fg%2F11g7wcqxt9?coh=164777&entry=tt&shorturl=1). Meet at the pavilion at the park entrance.
- **End:** Oregon Zoo around 5pm, where we will take the MAX back to town.
-- **Tickets:** Participating in the hike is free, but please [register for your ticket](https://ti.to/writethedocs/write-the-docs-portland-2026/with/k-pi4-g8s80) so we can contact you in advance for day-of weather and logistics information.
+- **Tickets:** Participating in the hike is free, but please [register for your ticket]({{ hike.register_url }}) so we can contact you in advance for day-of weather and logistics information.
## What to Bring
diff --git a/docs/conf/portland/2026/lightning-talks.md b/docs/conf/portland/2026/lightning-talks.md
index bd57e3998..febfc2608 100644
--- a/docs/conf/portland/2026/lightning-talks.md
+++ b/docs/conf/portland/2026/lightning-talks.md
@@ -1,7 +1,7 @@
---
template: {{year}}/generic.html
og:image: _static/conf/images/headers/{{shortcode}}-{{year}}-opengraph.jpg
-banner: _static/conf/images/headers/2025/lightning-talks.jpg
+banner: _static/conf/images/headers/2026/lightning-talks.jpg
---
# What is a Lightning Talk?
@@ -10,16 +10,6 @@ A Lightning Talk is a brief presentation, lasting up to five minutes, where you
Lightning Talks are a fantastic opportunity for first-time speakers. Regardless of your speaking experience, we invite you to submit a talk.
-
-
-
-
**Supporting first-time speakers is important to us, so we have created two speaker categories:**
- First-time speakers
@@ -35,10 +25,8 @@ Submit your Lightning Talk in person at the registration/check-in table.
**Submissions are open:**
-- During Writing Day on Sunday
-- Monday morning, until the end of the last morning break
-- Monday afternoon, post-Monday Lightning Talks
-- Tuesday morning, until the end of the last morning break
+- One week prior to the conference (Monday submissions only)
+- During the conference from Sunday to Tuesday morning, until the end of the last morning break
**Speaker selection and announcements:**
diff --git a/docs/conf/portland/2026/news/index.rst b/docs/conf/portland/2026/news/index.rst
index 0056bb324..8624f2b7a 100644
--- a/docs/conf/portland/2026/news/index.rst
+++ b/docs/conf/portland/2026/news/index.rst
@@ -1,4 +1,5 @@
:template: {{year}}/generic.html
+:banner: _static/conf/images/headers/2026/news.jpg
News
====
diff --git a/docs/conf/portland/2026/opportunity-grants.md b/docs/conf/portland/2026/opportunity-grants.md
index 6e0561653..7996aec18 100644
--- a/docs/conf/portland/2026/opportunity-grants.md
+++ b/docs/conf/portland/2026/opportunity-grants.md
@@ -1,7 +1,7 @@
---
template: {{year}}/generic.html
og:image: _static/conf/images/headers/{{shortcode}}-{{year}}-opengraph.jpg
-banner: _static/conf/images/headers/2025/grants.jpg
+banner: _static/conf/images/headers/2026/tickets.jpg
---
# Opportunity Grants
@@ -20,10 +20,16 @@ We prioritize applications based on the overall impact that granting an applicat
Grant applicants, like all other participants in the Write the Docs community, are required to follow the [Code of Conduct](https://www.writethedocs.org/conf/portland/2026/code-of-conduct/).
+
+
## Schedule
- **Now - {{ grants.ends }}:** Grant applications open
-- **{{ grants.notification }}:** Grant recipients notified
+- **February 13, 2026:** Grant recipients notified
## What is Covered
@@ -42,7 +48,7 @@ The application form will ask for an estimate of your costs.
## Grant Amounts
-The total amount of grant funds to be distributed is based upon sponsors and number of tickets sold. We will not know the full amount until we near the deadline. In 2024, $3,500 was distributed in grant funds. There is no limit on the amount you request, but please consider this amount when making your request. We rarely fund only one individual and aim to use our budget for two or more people. We do not award partial grants.
+The total amount of grant funds to be distributed is based upon sponsors and number of tickets sold. We will not know the full amount until we near the deadline. For 2026, we have $3,500 total to distribute for grant funds. There is no limit on the amount you request, but please consider this amount when making your request. We rarely fund only one individual and aim to use our budget for two or more people. We do not award partial grants.
## Are you part of a marginalized or underrepresented group in tech?
@@ -70,6 +76,6 @@ You do not have to tell us which underrepresented group(s) you belong to.
## Application
-
+
You can also view [the application form]({{ grants.url }}) in its own page.
diff --git a/docs/conf/portland/2026/qa.rst b/docs/conf/portland/2026/qa.rst
index 50fa43e83..74b771a7a 100644
--- a/docs/conf/portland/2026/qa.rst
+++ b/docs/conf/portland/2026/qa.rst
@@ -1,5 +1,6 @@
:template: {{year}}/generic.html
:og:image: _static/conf/images/headers/{{shortcode}}-{{year}}-opengraph.jpg
+:banner: _static/conf/images/headers/2026/qa.jpg
Speaker Q&A
===========
diff --git a/docs/conf/portland/2026/schedule.rst b/docs/conf/portland/2026/schedule.rst
index 9b15fb560..d68e03be6 100644
--- a/docs/conf/portland/2026/schedule.rst
+++ b/docs/conf/portland/2026/schedule.rst
@@ -1,4 +1,5 @@
:template: {{year}}/generic.html
+:banner: _static/conf/images/headers/2026/schedule.jpg
:og:image: _static/conf/images/headers/{{shortcode}}-{{year}}-opengraph.jpg
Schedule
diff --git a/docs/conf/portland/2026/social-events.md b/docs/conf/portland/2026/social-events.md
index 824ec1f5b..b2c902ace 100644
--- a/docs/conf/portland/2026/social-events.md
+++ b/docs/conf/portland/2026/social-events.md
@@ -1,6 +1,7 @@
---
template: {{year}}/generic.html
og:image: _static/conf/images/headers/{{shortcode}}-{{year}}-opengraph.jpg
+banner: _static/conf/images/headers/2026/social-events.jpg
---
# Social Events
@@ -26,9 +27,7 @@ and make sure you know your way around the conference venue.
Join us for our Monday night social event! This is a great chance to meet more of your fellow documentarians
and chat about the conference in a relaxed atmosphere.
-**Where**: {{about.social_venue}}
+**Where**: TBD
**When**: 7-9 PM
*Both alcoholic and non-alcoholic drinks and snacks will be provided.*
-
-Sponsored by [Mintlify](https://mintlify.com/?utm_source=writethedocs&utm_medium=referral)!
diff --git a/docs/conf/portland/2026/speakers.rst b/docs/conf/portland/2026/speakers.rst
index 7967ae478..7d20b3e2b 100644
--- a/docs/conf/portland/2026/speakers.rst
+++ b/docs/conf/portland/2026/speakers.rst
@@ -1,5 +1,5 @@
:template: {{year}}/generic.html
-:banner: _static/conf/images/headers/speakers.jpg
+:banner: _static/conf/images/headers/2026/speakers.jpg
:og:image: _static/conf/images/headers/{{shortcode}}-{{year}}-opengraph.jpg
Conference Speakers
diff --git a/docs/conf/portland/2026/sponsors/index.rst b/docs/conf/portland/2026/sponsors/index.rst
index d2a51db8c..0b0648dfe 100644
--- a/docs/conf/portland/2026/sponsors/index.rst
+++ b/docs/conf/portland/2026/sponsors/index.rst
@@ -1,6 +1,6 @@
:template: {{year}}/generic.html
:og:image: _static/conf/images/headers/{{shortcode}}-{{year}}-opengraph.jpg
-:banner: _static/conf/images/headers/2025/sponsors.jpg
+:banner: _static/conf/images/headers/2026/sponsors.jpg
{% include "include/sponsors.jinja" with context %}
diff --git a/docs/conf/portland/2026/sponsors/prospectus.rst b/docs/conf/portland/2026/sponsors/prospectus.rst
index a09ea1301..5879835ae 100644
--- a/docs/conf/portland/2026/sponsors/prospectus.rst
+++ b/docs/conf/portland/2026/sponsors/prospectus.rst
@@ -1,6 +1,6 @@
:template: {{year}}/generic.html
:og:image: _static/conf/images/headers/{{shortcode}}-{{year}}-opengraph.jpg
-:banner: _static/conf/images/headers/2025/sponsors.jpg
+:banner: _static/conf/images/headers/2026/prospectus.jpg
.. role:: strike
:class: strike
diff --git a/docs/conf/portland/2026/team.md b/docs/conf/portland/2026/team.md
index 652e46ca9..d596c1061 100644
--- a/docs/conf/portland/2026/team.md
+++ b/docs/conf/portland/2026/team.md
@@ -1,7 +1,7 @@
---
template: {{year}}/generic.html
og:image: _static/conf/images/headers/{{shortcode}}-{{year}}-opengraph.jpg
-banner: _static/conf/images/headers/2025/team.jpg
+banner: _static/conf/images/headers/2026/team.jpg
---
% Use this comment to resize images: sips -Z 250 *.jpg
diff --git a/docs/conf/portland/2026/tickets.rst b/docs/conf/portland/2026/tickets.rst
index f215f2f14..f7d3802a9 100644
--- a/docs/conf/portland/2026/tickets.rst
+++ b/docs/conf/portland/2026/tickets.rst
@@ -1,6 +1,6 @@
:template: {{year}}/generic.html
:og:image: _static/conf/images/headers/{{shortcode}}-{{year}}-opengraph.jpg
-:banner: _static/conf/images/headers/2025/tickets.jpg
+:banner: _static/conf/images/headers/2026/tickets.jpg
Tickets
=======
diff --git a/docs/conf/portland/2026/unconference.md b/docs/conf/portland/2026/unconference.md
index 56bab72ae..7125eae37 100644
--- a/docs/conf/portland/2026/unconference.md
+++ b/docs/conf/portland/2026/unconference.md
@@ -1,7 +1,7 @@
---
template: {{year}}/generic.html
og:image: _static/conf/images/headers/{{shortcode}}-{{year}}-opengraph.jpg
-banner: _static/conf/images/headers/2025/unconference.jpg
+banner: _static/conf/images/headers/2026/unconference.jpg
---
# What is an Unconference?
@@ -12,22 +12,10 @@ The Unconference consists of attendee-driven sessions that provide the opportuni
Everyone! All attendees are invited to lead a session on a topic. Sessions can be organized around a presentation, group discussion or anything in between.
-
-
-
-
**Who can attend an Unconference session?**
Everyone!
-
-
## Schedule
**Date: {{ unconf.date }}**
@@ -36,9 +24,11 @@ Everyone!
- Each session is 40 minutes in length
### Scheduling a Session
-- Sign up during Writing Day or the Welcome Reception on Sunday, and anytime during the conference on Monday and Tuesday.
-- Write the title and your name on a note. Select a time slot and table number and place the note on the large schedule. You can only sign up in person.
-- The online version will be updated periodically throughout the conference.
+
+- Sign up online one week prior to the conference (Monday morning sessions only).
+- Sign up for all sessions in-person anytime during the conference, Sunday through Tuesday.
+- During the conference, write the title and your name on a sticky note. Select a time slot and table number and place the note on the large schedule.
+- The online schedule will be available to view only during the conference. This will be updated regularly.
Exact times to be posted on our [Schedule](/conf/{{shortcode}}/{{year}}/schedule) page.
diff --git a/docs/conf/portland/2026/venue.md b/docs/conf/portland/2026/venue.md
index 881c3a469..c9868a63e 100644
--- a/docs/conf/portland/2026/venue.md
+++ b/docs/conf/portland/2026/venue.md
@@ -17,15 +17,15 @@ Our conference will be held at Revolution Hall, a beautiful venue located in the
If you drive to the conference, note that the venue does not have parking onsite. There is street parking east of the venue (15th Ave. and higher street numbers) and allows for all-day free parking. Additionally, there is 1-2 hour street parking directly around the venue.
-Bus transit stops are located near the venue. All transit in Portland announce major stops verbally in English, and most buses have a visual display of upcoming stops. Refer to the [Visiting Portland page](https://www.writethedocs.org/conf/portland/2026/visiting/) for more information on public transportation.
+Bus transit stops are located near the venue. All transit in Portland announce major stops verbally in English, and most buses have a visual display of upcoming stops. More information on public transportation will be shared as the conference nears.
## Conference Layout
### Registration and Welcome Wagon
**Location:**
-- May 2: 1st floor near Martha's Cafe
-- May 3-5: 2nd floor
+- May 3: 1st floor near Martha's Cafe
+- May 4-5: 2nd floor
### Writing Day, Unconference, and Welcome Reception
@@ -41,7 +41,7 @@ Bus transit stops are located near the venue. All transit in Portland announce m
### Other Venue Spaces (open to the public)
-- Martha’s Coffee: 7-3pm
+- Martha's Coffee: 7am-3pm
- Show Bar: 3-11pm
- Roof Deck: 3-11pm, weather permitting
- Outdoor seating and city park
diff --git a/docs/conf/portland/2026/virtual.md b/docs/conf/portland/2026/virtual.md
index 85ee8a7cc..d9a15264f 100644
--- a/docs/conf/portland/2026/virtual.md
+++ b/docs/conf/portland/2026/virtual.md
@@ -1,5 +1,6 @@
---
template: {{year}}/generic.html
+banner: _static/conf/images/headers/2026/virtual.jpg
---
# Virtual Attendance
diff --git a/docs/conf/portland/2026/visiting.md b/docs/conf/portland/2026/visiting.md
index 2b0b9355f..fa82a52bb 100644
--- a/docs/conf/portland/2026/visiting.md
+++ b/docs/conf/portland/2026/visiting.md
@@ -1,6 +1,6 @@
---
template: {{year}}/generic.html
-banner: _static/conf/images/headers/hike.png
+banner: _static/conf/images/headers/2026/visiting.jpg
og:image: _static/conf/images/headers/{{shortcode}}-{{year}}-opengraph.jpg
---
diff --git a/docs/conf/portland/2026/volunteer.md b/docs/conf/portland/2026/volunteer.md
index 513b28888..ad8d6dd43 100644
--- a/docs/conf/portland/2026/volunteer.md
+++ b/docs/conf/portland/2026/volunteer.md
@@ -1,12 +1,12 @@
---
template: {{year}}/generic.html
og:image: _static/conf/images/headers/{{shortcode}}-{{year}}-opengraph.jpg
-banner: _static/conf/images/headers/2025/volunteer.jpg
+banner: _static/conf/images/headers/2026/volunteer.jpg
---
# Volunteer Information
-Our volunteer application is open! We are looking for volunteers to provide support with a variety of conference roles - registration, Writing Day, Unconference, stage support, catering, load out, and more.
+Our volunteer sign up form is open. We are looking for volunteers to provide support with a variety of conference roles - registration, Writing Day, Unconference, float, catering, load out, and more.
Completing this form signs you up to volunteer. We will close the form once volunteer capacity is reached. Another form will be sent out once the speaker schedule is released mid-February.
@@ -16,7 +16,7 @@ Each individual must volunteer for two or more 3-4 hour shifts and receives a **
@@ -24,8 +24,8 @@ Each individual must volunteer for two or more 3-4 hour shifts and receives a **
**Timeline:**
-- **Now - February 14**: Volunteer applications open
-- **February 14 - March 26**: Volunteer schedule sign up open
+- **Now-{{ volunteer.applications_close }}**: Volunteer applications open
+- **{{ volunteer.applications_close }}-{{ volunteer.schedule_signup_close }}**: Volunteer schedule sign up open
- **End of March**: Volunteer schedule emailed
## Volunteer Roles
@@ -38,17 +38,13 @@ Each individual must volunteer for two or more 3-4 hour shifts and receives a **
- Check in attendees, provide general information inquiries, answer venue questions, and field other requests or direct individuals to the correct staff member who can provide support.
-### Stage Support
-
-- Assist presenters while on stage - troubleshoot issues with slides, video, or audio portions of their presentation. Please apply for this role if you have some A/V knowledge; it is not required, but experience with different operating systems is a plus!
-
### Unconference
- Assist the Unconference coordinator, help folks sign up to host a session, maintain an updated schedule, direct individuals and groups to their tables, and keep tables looking neat.
-### Catering
+### Float
-- Set up catering, replenish beverages and snacks, and notify venue staff of coffee refills and cleaning needs.
+- Provide support where needed. Be a runner. Support staff with catering set up.
### Venue Load Out
@@ -59,3 +55,9 @@ Each individual must volunteer for two or more 3-4 hour shifts and receives a **
Unfortunately, we cannot offer travel assistance to volunteers. We encourage you to apply for the Opportunity Grant. [View grant application here!](https://www.writethedocs.org/conf/{{ shortcode }}/{{ year }}/opportunity-grants/)
Contact katie@writethedocs.org with any additional questions.
+
+## Volunteer Sign Up Form
+
+
+
+You can also view [the volunteer form]({{ volunteer.form_url }}) in its own page.
diff --git a/docs/conf/portland/2026/writing-day.md b/docs/conf/portland/2026/writing-day.md
index 3a7f836a3..a5a1a1548 100644
--- a/docs/conf/portland/2026/writing-day.md
+++ b/docs/conf/portland/2026/writing-day.md
@@ -1,7 +1,7 @@
---
template: {{year}}/generic.html
og:image: _static/conf/images/headers/{{shortcode}}-{{year}}-opengraph.jpg
-banner: _static/conf/images/headers/2025/writing-day.jpg
+banner: _static/conf/images/headers/2026/writing-day.jpg
---
# What is Writing Day?
@@ -33,13 +33,7 @@ If you have a project, we encourage you to submit it before the conference! This
- Love letters
- The Documentarian Manifesto
-Find specific examples on the [Portland Writing Day 2023 project list](https://www.writethedocs.org/conf/portland/2023/writing-day/#project-listing).
-
-
+Find specific examples on the [Portland Writing Day 2025 project list](https://www.writethedocs.org/conf/portland/2025/writing-day/#project-listing).
## Schedule
@@ -73,12 +67,6 @@ Come with the following tools:
Leading a project at Writing Day is a wonderful opportunity to engage with documentarians from a variety of backgrounds, experience, and expertise. Their collective wealth of experience can upgrade your documentation and create a more inclusive project. This empowers all of us to work together to create opportunities for each other and bigger, better communities.
-
-
**Tips to create and lead a new project effectively:**
- **Provide a project overview with a specific focus or goals:** Your overview is a 2 minute pitch that describes your project and clearly defines a focus area or goal.
@@ -105,78 +93,3 @@ Writing Day is the perfect opportunity to participate and learn about new projec
**We're excited to have another wonderful Writing Day!**
-
-## Project List
-
-### Enhance Your Portfolio! Contribute to an Open Source Repository
-
-Project organizer: Mike Jang, he/him.
-
-While we've open sourced our enterprise [documentation repository](https://github.com/nginx/documentation), we've done something different. We've set up [Good first issues](https://github.com/nginx/documentation/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22good%20first%20issue%22) that do not require Git knowledge.
-
-We love all types of contributions. Examples:
-
-- We have not completed our move towards "sentence case" in our headings
-- We are missing alternative text for a few of our screenshots
-
-If you've never used git or if you're already an expert, we welcome your contributions.
-
-If you're a technical expert, our Good first issues give you the chance to test our how-tos and tutorials! If you remember Manny Silva's [Docs as Tests](https://www.docsastests.com/), several of our Good first issues include testable procedures.
-
-**And we hope to have interesting swag!**
-
-### Docs as Tests and Doc Detective: Help us test your docs!
-
-Project organizer: Manny Silva, he/him. Project session: All day.
-
-[Docs as Tests](https://www.docsastests.com/) and [Doc Detective](https://doc-detective.com/) are back at Writing Day and our goal is to test at least 10 docs sets! Does your project or product have a UI? APIs? SDKs? We can help you test them and keep your docs accurate.
-
-Docs as Tests is a strategy for keeping docs up-to-date by treating procedures and code snippets as testable assertions of product behavior. You have the docs, so let's get testing! By validating that documentation contents work as written, you can:
-
-- Prevent broken docs
-- Ensure consistent UX between docs and products
-- Build user trust
-
-We want every writer to be confident in their docs. Come by our table, and we’ll help you set up Docs as Tests with whatever tools (like Doc Detective) or strategies (like unit testing code snippets) are appropriate. Establish a zero-trust relationship between your docs and product, catching bugs in both as you go.
-
-### Help improve the WTD Salary Survey
-
-* Project organizer: Kay Smoljak, she/her.
-* Project session: Afternoon.
-
-The [Write the Docs Salary Survey](https://writethedocs.org/surveys/) has been running annually since 2019, with the goal of identifying appropriate salary ranges and providing a basis for pay negotiations.
-
-Our goal for Writing Day is to improve the clarity, inclusivity, neutrality and relevance of the [questions, instructions, and general flow of the survey](https://github.com/writethedocs/salary-survey?tab=readme-ov-file#write-the-docs-annual-documentation-salary-survey).
-
-### Research the Docs! (Sponsor session)
-
-Project organizer: Kyle Rollins, he/him. Project session: All day.
-
-Join the MongoDB docs and design teams for a dual-purpose documentation research project.
-
-*What is this?*
-
-* An opportunity to work with a product designer on a research activity.
-* Learn how to give qualitative feedback using MongoDB documentation.
-
-*Why participate?*
-
-* Join us to experience professional product research in action.
-* Leave with the knowledge and materials to facilitate your own documentation research project.
-
-Your participation helps the MongoDB team better understand the MongoDB docs’ strengths and weaknesses. It also gives MongoDB team the opportunity to share how you can facilitate your own documentation research project. We appreciate your help in making the MongoDB documentation the best that it can be.
-
-### Crowdsource the Docs: Help improve Docker's API reference
-
-Project organizer: Sarah Sanders, she/her. Project session: All day.
-
-[Docker’s API Docs](https://github.com/docker/docs/tree/main/content/reference/api) are critical for developers and they could use some TLC! Docker's API docs are a part of our open source offerings. We need your help to crowdsource and implement feedback to improve our API documentation.
-
-Our goal is to work together to make the docs more clear, helpful, and user-friendly.
-
-Here's our plan of action:
-
-* Review the current Docker API pages to identify gaps and UX issues.
-* Brainstorm ways to improve clarity, usefulness, and approachability.
-
-Whether you're great at structuring docs, writing clear examples, identifying pain points, or just love helping others understand complex systems - this project is for you!