The resource directory at oursqlfoundation.org/resources/ is maintained by the community. Each resource is a single Markdown file — or a folder with a Markdown file and images.
There are two ways to contribute.
Pick the folder that matches the resource type:
content/resources/software/ — open source tools, databases, proxies
content/resources/saas/ — managed cloud database services
content/resources/services/ — consulting, support, managed services
content/resources/training/ — courses, tutorials, certifications
content/resources/books/ — MySQL books and reference material
content/resources/events/ — conferences, meetups, community events
content/resources/community/ — blogs, forums, aggregators, chat
Single file — for most resources:
content/resources/software/proxysql.md
Folder (leaf bundle) — use this when you have a cover image, PDF, or other files to include alongside the resource (recommended for books):
content/resources/books/high-performance-mysql/
index.md
cover.jpeg
Lowercase letters and hyphens only. No spaces or special characters.
percona-server-for-mysql.md ✓
Percona Server.md ✗
Events — prefix the file with the date:
2026-09-11-percona-live-amsterdam.md
aggregator-mysql-events.md ← for aggregator pages without a specific date
All types (single file):
---
title: "Resource Name"
link: "https://example.com"
description: "One or two sentences describing what it is."
subcategories: ["Database Software"] # pick from the list for this section, see below
---Every resource also carries a handful of tag facets — small, controlled sets of values (not free text) used to power the filters on each category page. The field name in front matter must be the plural shown below — Hugo taxonomies require it. The full machine-readable list (including which URL each one filters to) lives in data/taxonomy_schema.yaml; this is the human-readable version of the same thing.
Pick a subcategories value from your section's list, and set whichever facets apply — all are optional and multi-value (a resource can carry more than one).
content/resources/software/ — subcategories: Database Software · Monitoring & Observability · Backup & Recovery · Data Warehouse & Analytics · Replication & High Availability · Proxies & Traffic Management · Connectors & Drivers · Database Management & GUI · DevOps & Deployment · Schema Management & Migration · Testing & Benchmarking · Security · AI & Ecosystem Skills (a resource can carry more than one subcategory, e.g. a backup tool that's also a data lakehouse)
compatibility: ["MySQL"] # MySQL, MariaDB, Percona Server, TiDB, Vitess, HeatWave, Galera, Group Replication, RDS MySQL, DuckDB
deployment: ["Self-Hosted"] # Self-Hosted, Kubernetes, Docker, Cloud-Native, On-Premises
pricing: ["Open Source"] # Open Source, Commercial, Free, Paid, Enterprise, Open Source & Open CoreEvery one of these seven sections gets the same structured detail page (hero, actions row, sticky "Details" panel) — which fields the panel shows, in what order, and what the primary action button says is configured per section in data/resource_detail.yaml, not hardcoded per template. A field with no value for a given resource just doesn't render — no placeholder row — so it's always safe to leave any of these unset.
Fields shared by every section:
member: true # optional (software/saas/services/community only) — shows the
# "OurSQL Member" badge. Only set this when the resource's org is
# an actual OurSQL Foundation member/sponsor/partner.
last_reviewed: 2026-08-14 # optional — shows a "Last reviewed" row, credited to the editorial
# team. Only set it once someone has actually reviewed the listing.
github: "owner/repo" # optional (software/saas/services only) — shorthand, or a full
# https://github.com/... URL. Adds a "View on GitHub" button and a
# Repository row. Only set it when it's a genuinely separate URL
# from `link` — skip it if `link` already points at the repo.The full description (Markdown body, under the front matter) renders as the "About" section — plain-text description still serves as the short hero subtitle. "Suggest an update" always appears (top-right and in the Details panel) and links straight to editing the resource's own file on GitHub.
content/resources/saas/ — subcategories: Managed Databases · Monitoring SaaS · Backup & Recovery SaaS · Migration & Replication SaaS · Developer Platforms · Security & Compliance SaaS
cloud-providers: ["AWS"] # AWS, Azure, GCP, Multi-Cloud, Private Cloud
compliance: ["SOC 2"] # SOC 2, HIPAA, GDPR, PCI DSS
pricing: ["Pay-as-you-go"] # Pay-as-you-go, Subscription, Free Tier Available
compatibility: ["MySQL"] # MySQL, MariaDB, Percona Server, TiDB, Vitesscontent/resources/services/ — subcategories: Consulting · Support · Managed Services · Migration Services · Performance Tuning · Architecture & HA Design · Cloud & Kubernetes · Security & Compliance · Training Providers
delivery: ["Remote"] # Remote, On-Site, Hybrid
countries: ["Global"] # a country name (e.g. "Germany"), or "Global" if not region-specific
compatibility: ["MySQL"] # MySQL, MariaDB, Percona Server, TiDB, Vitess, Galera
foundation-status: ["Sponsor"] # Foundation Member, Sponsor, Partner — only if it actually appliescontent/resources/training/ — subcategories: Courses · Workshops · Certifications · Academic Resources · Training Providers
training-formats: ["Self-Paced"] # Self-Paced, Instructor-Led, Workshop, Certification, Practice Lab
levels: ["Beginner"] # Beginner, Intermediate, Advanced
pricing: ["Free"] # Free, Paid, Free Trial Available
languages: ["English"] # English, Spanish, Portuguese, German, Chinese, Other
author: "Percona" # optional — shown as "Organization" on the detail page
date: 2026-10-06 # optional — start of a specific dated delivery (a workshop
# cohort, a bootcamp). Leave unset for self-paced / evergreen
# courses — the "Date(s)" row only shows once BOTH `date` and
# `date_end` are set, specifically so it never turns an ongoing
# course into what looks like a one-day event.
date_end: 2026-10-08 # optional — end of that same rangecontent/resources/books/ (leaf bundle with cover image) — subcategories: Books · Blogs · Newsletters · Reports & Research · Whitepapers · Case Studies · Podcasts & Videos · Documentation Portals
---
title: "High Performance MySQL, 4th Edition"
link: "https://..."
description: "One or two sentences."
authors: ["Silvia Botros", "Jeremy Tinley"]
year: 2021
subcategories: ["Books"]
topics: ["Performance"] # Administration, Development, Architecture, Replication, Performance, Security, Migration, Scaling, Other
audiences: ["Advanced"] # DBA, Developer, Architect, Beginner, Advanced
pricing: ["Paid"] # Free, Paid
images:
- cover.jpeg
---images[0] (the cover) replaces the usual square logo in the hero with a portrait book-cover shape — the only section where the hero media isn't square. authors and year show as their own Details-panel rows.
content/resources/events/ — subcategories: Foundation Events · Community Calls · Webinars · Meetups · Conferences · Partner & Member Events · Past Events & Recordings — prefix the filename with the date
date: 2026-09-11
date_end: 2026-09-13 # optional — end date, for a multi-day conference
format: "in-person" # or "online" — drives the card's Online/In-person badge
city: "Amsterdam" # optional, only for in-person events — omit for online-only,
# the Details panel's Location row is skipped when there's no
# city and countries is just ["Global"]
countries: ["Netherlands"] # a country name, or "Global" for an online/worldwide event
event_year: ["2026"]
event-formats: ["In-Person"] # In-Person, Online, Hybrid
organizers: ["Community"] # OurSQL Foundation, Community, Member & Partner — also the
# detail page's "Organizer" row
online_url: "https://..." # optional — shown as a Details-panel "Online" link
registration_url: "https://..." # optional — becomes the primary "Register" button for an
# upcoming event, and a "Registration" row either way
recording_url: "https://..." # optional — becomes the primary "Watch recording" button and a
# "Recording" row, but ONLY once the event's `date` has passed —
# never set this for something that hasn't happened yetWhether an event is upcoming or past is computed from date (compared to today), never a field you set by hand — it drives the "Past event" badge in the hero and which of the fields above are actually shown.
content/resources/community/ — subcategories: Forums · Slack, Discord & IRC · Mailing Lists · Reddit & Social · Blog Aggregators · Podcasts & Videos
platforms: ["Forum"] # Forum, Slack, Discord, Mailing List, Reddit, Meetup, YouTube, Podcast
languages: ["English"] # English, Spanish, Portuguese, German, Chinese, Other
access: ["Open"] # Open, Registration Required
listing-status: ["Active"] # Active, Archivedcontent/resources/member-directory/ (leaf bundle with photo) — subcategories: Members · Sponsors · Partners · Adopters · People · Awards. Every entry needs a url override so its address stays under /resources/member-directory/<subcategory-slug>/, not the flat content path:
---
title: "Full Name"
url: "/resources/member-directory/people/full-name/" # subcategory-slug matches the subcategories value, lowercased
description: "One line — role, company."
role: "Job title, Company · other affiliation" # optional, shown on the profile and any author card
company: "Company Name" # optional — shown as a "Company" row on the profile
company_url: "/resources/services/company-slug/" # optional — link company_url only when that
# exact company already has its own page in the catalog
# (services/software/saas/…); otherwise omit it and
# `company` renders as plain text
project: "Project Name" # optional — same pattern as company, for a specific tool
project_url: "/resources/software/project-slug/" # or project this person created/leads
subcategories: ["People"]
images:
- photo.jpg
---Only set company/project when the bio actually names one — most People entries won't have both, some (an independent consultant, say) may have neither.
Slashes ("/") aren't safe inside a facet value — Hugo treats them as URL path separators and breaks the filter link. Use "&" or "," instead (e.g. "Slack, Discord & IRC", not "Slack / Discord / IRC").
Not comfortable with Git? Open an issue and describe the resource — someone from the community will add it.
| Type | Issue template |
|---|---|
| Software | Add Software resource |
| SaaS Solutions | Add SaaS resource |
| Services | Add Services resource |
| Training | Add Training resource |
| Books | Add Book |
| Events | Add Event |
| Community | Add Community resource |
Not sure which type fits? Open a general issue and describe it in your own words.
Questions? contact@oursqlfoundation.org