Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 41 additions & 33 deletions src/content.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,12 @@ const keynoters = defineCollection({
bio: z.string().optional(),
image: image().optional(),
order: z.number(),
homepage: z.url().optional(),
mastodon_url: z.url().optional(),
bluesky_url: z.url().optional(),
twitter_url: z.url().optional(),
linkedin_url: z.url().optional(),
github_url: z.url().optional(),
homepage: z.string().url().optional(),
mastodon_url: z.string().url().optional(),
bluesky_url: z.string().url().optional(),
twitter_url: z.string().url().optional(),
linkedin_url: z.string().url().optional(),
github_url: z.string().url().optional(),
}),
});

Expand Down Expand Up @@ -200,13 +200,13 @@ const speakers = defineCollection({
submissions: z.array(reference("sessions")),
affiliation: z.string().nullable(),
homepage: z.string().nullable(),
gitx_url: z.url().nullable().optional(),
linkedin_url: z.url().nullable(),
mastodon_url: z.url().nullable(),
bluesky_url: z.url().nullable().optional(),
twitter_url: z.url().nullable(),
discord: z.url().nullable().optional(),
tiktok: z.url().nullable().optional(),
gitx_url: z.string().url().nullable().optional(),
linkedin_url: z.string().url().nullable(),
mastodon_url: z.string().url().nullable(),
bluesky_url: z.string().url().nullable().optional(),
twitter_url: z.string().url().nullable(),
discord: z.string().url().nullable().optional(),
tiktok: z.string().url().nullable().optional(),
}),
});

Expand Down Expand Up @@ -235,16 +235,16 @@ const sessions = defineCollection({
state: z.enum(["confirmed"]).optional().nullable(),
tweet: z.string(),
resources: z
.array(z.object({ resource: z.url(), description: z.string() }))
.array(z.object({ resource: z.string().url(), description: z.string() }))
.nullable(),
duration: z.string(),
level: z.enum(["beginner", "intermediate", "advanced"]),
delivery: z.enum(["in-person", "remote", ""]),
room: z.string().nullable(),
start: z.string().nullable(),
end: z.string().nullable(),
website_url: z.url(),
youtube_url: z.url().nullable(),
website_url: z.string().url(),
youtube_url: z.string().url().nullable(),
sessions_in_parallel: z.array(z.string()).nullable(),
sessions_after: z.array(z.string()).nullable(),
sessions_before: z.array(z.string()).nullable(),
Expand Down Expand Up @@ -328,27 +328,31 @@ const days = defineCollection({
});

const sponsors = defineCollection({
loader: glob({ pattern: "*/index.md", base: "./src/content/sponsors" }),
loader: glob({
pattern: "*/index.md",
base: "./src/content/sponsors",
generateId: ({ entry }) => entry.replace(/\/index\.md$/, ""),
}),
schema: z.object({
name: z.string(),
url: z.url(),
url: z.string().url(),
tier: z.string(),
location: z.string().optional(),
industry: z.string().optional(),
description: z.string().optional(),
socials: z
.object({
linkedin: z.url().optional().nullable(),
blog: z.url().optional().nullable(),
github: z.url().optional().nullable(),
mastodon: z.url().optional().nullable(),
bluesky: z.url().optional().nullable(),
twitter: z.url().optional().nullable(),
instagram: z.url().optional().nullable(),
discord: z.url().optional().nullable(),
facebook: z.url().optional().nullable(),
youtube: z.url().optional().nullable(),
tiktok: z.url().optional().nullable(),
linkedin: z.string().url().optional().nullable(),
blog: z.string().url().optional().nullable(),
github: z.string().url().optional().nullable(),
mastodon: z.string().url().optional().nullable(),
bluesky: z.string().url().optional().nullable(),
twitter: z.string().url().optional().nullable(),
instagram: z.string().url().optional().nullable(),
discord: z.string().url().optional().nullable(),
facebook: z.string().url().optional().nullable(),
youtube: z.string().url().optional().nullable(),
tiktok: z.string().url().optional().nullable(),
})
.optional(),
event_name: z.string().optional().nullable(),
Expand All @@ -360,7 +364,11 @@ const sponsors = defineCollection({
});

const jobs = defineCollection({
loader: glob({ pattern: "*/!(index).md", base: "./src/content/sponsors" }),
loader: glob({
pattern: "*/!(index).md",
base: "./src/content/sponsors",
generateId: ({ entry }) => entry.replace(/\.md$/, ""),
}),
schema: z.object({
title: z.string(),
location: z.string().nullable(),
Expand All @@ -378,7 +386,7 @@ const jobs = defineCollection({
stack: z.array(z.string()).optional().nullable(),
benefits: z.array(z.string()).nullable(),
description2: z.string().optional().nullable(),
apply_link: z.url().optional(),
apply_link: z.string().url().optional(),
draft: z.boolean().optional().default(false),
sponsor: reference("sponsors").optional(),
}),
Expand All @@ -393,15 +401,15 @@ const sprints = defineCollection({
pythonLevel: z.enum(["Any", "Beginner", "Intermediate", "Advanced"]),
contactPerson: z.object({
name: z.string(),
email: z.email().optional().nullable(),
email: z.string().email().optional().nullable(),
github: z.string().optional().nullable(),
twitter: z.string().optional().nullable(),
}),
links: z
.array(
z.object({
title: z.string(),
url: z.url(),
url: z.string().url(),
})
)
.optional(),
Expand Down
Binary file not shown.
Binary file not shown.
53 changes: 0 additions & 53 deletions src/content/pages/_community-activities/index.mdx

This file was deleted.

Binary file not shown.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
80 changes: 80 additions & 0 deletions src/content/pages/community-organisers-summit/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
---
title: Community Organisers Summit
url: /community-organisers-summit
subtitle: Community Organisers Summit, booths, and more
---

# Community Organisers Summit

The vibrant Python community plays a key role in driving the language's growth and success by engaging individuals through meetups, conferences, forums, and numerous other opportunities.

Effective communication is essential to avoid redundancy and learn from past mistakes. By gathering at EuroPython, we can exchange stories of our community experiences, as well as share personal challenges and triumphs, empowering more communities to prosper and progress.

![Community organisers group photo from EuroPython 2025](./community-organisers.jpg)

At EuroPython 2026, we are excited to host a special Community Organisers Summit. This event brings together individuals who actively contribute to organizing Python events and communities across Europe and beyond. The goal is to facilitate networking, knowledge sharing, and collaboration among community organisers.

### What to Expect

The **Community Organisers Summit** is designed as a collaborative, hands-on experience that moves from shared context into deeper discussion and practical reflection.

It begins with a **short introduction**, setting the stage for the day’s activities and welcoming attendees from across the Python community.

From there, the summit moves into **facilitated small group discussions**, where participants explore topics related to organizing Python events and communities. These sessions are designed to encourage in-depth conversation, knowledge sharing, and exchange of real-world experiences.

Each group will then come back together for **short presentations**, sharing key insights, discussion points, and conclusions that emerged during their conversations.

![Community organisers participating in an open space discussion at EuroPython 2025](./community-organisers-open-space.jpg)

In essence, the Community Organisers Summit is a crucial component of EuroPython, bringing together organisers from across the Python ecosystem to connect, learn from one another, and collaborate on strengthening our communities.

Whether you're organizing a local meetup, a regional conference, or a large-scale community initiative, the summit is an opportunity to learn from peers, share experiences, discuss common challenges, and build stronger connections across the Python ecosystem.

- **Location:** Glass room (Floor 0)
- **Time:** Friday 17 July 10:45
- **Programme:** [https://ep2026.europython.eu/session/community-organizers-summit-opening-and-introduction](https://ep2026.europython.eu/session/community-organizers-summit-opening-and-introduction)

---

### Featured Workshop

**The Experience Is the Community** by ***Georgi Ker***

The day concludes with a featured, interactive workshop exploring the POPCOM model (Participation, Connection, Mentorship). Through structured exercises and reflection, participants will examine their own communities and leave with practical tools to improve engagement and community experience.

- **Location:** Glass room (Floor 0)
- **Time:** Friday 17 July 14:30
- **Programme:** [https://ep2026.europython.eu/session/the-experience-is-the-community](https://ep2026.europython.eu/session/the-experience-is-the-community)

---

## Community Organisers Lunch

![Community organisers networking during the Community Organisers Lunch in EuroPython 2025](./community-organisers-lunch.jpg)

The Community Organisers Lunch continues the discussions from the morning sessions in a more informal setting over lunch, bringing together Python communities to connect, share experiences, and keep the conversation going. It’s open to all organisers, including those not attending the summit.

- **Location:** Red carpet (Floor 2)
- **Time:** Friday 17 July 12:55
- **Programme:** [https://ep2026.europython.eu/session/communities-organizers-lunch](https://ep2026.europython.eu/session/communities-organizers-lunch)

---

## Community Booths

![Community booths showcasing Python projects and initiatives at EuroPython 2025 community area](./community-booths.jpg)

Each year, we reserve booth space for communities, initiatives, nonprofit organizations, and open source projects that support the Python community and the wider open source ecosystem.

Don't miss out on this opportunity to learn, develop, and contribute to something greater!

- **Location:** Community area (Floor 0)
- **Time:** Wednesday to Friday, 15-17 July

## PyLadies Open Space & Lunch

A series of initiatives that bring together underrepresented groups in the Python community to connect, learn, and collaborate.

Through talks, workshops, and networking opportunities, these events provide a safe space to share experiences, meet new people, and help build a more inclusive Python community.

Check out [the PyLadies activities page](https://ep2026.europython.eu/pyladies) for more information.
12 changes: 11 additions & 1 deletion src/data/nav.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@ const L = {
langSummit: { label: "Language Summit", url: "/language-summit" },
rustSummit: { label: "Rust Summit", url: "/rust-summit" },
packagingSummit: { label: "Packaging Summit", url: "/packaging-summit" },
communityOrganisersSummit: {
label: "Community Organisers Summit",
url: "/community-organisers-summit",
},

// Events & Social
sprints: { label: "Sprints Weekend", url: "/sprints" },
Expand Down Expand Up @@ -140,7 +144,12 @@ export const NAV_MENUS: NavMenu[] = [
},
{
label: "Summits",
items: [L.langSummit, L.rustSummit, L.packagingSummit],
items: [
L.langSummit,
L.rustSummit,
L.packagingSummit,
L.communityOrganisersSummit,
],
},
{
label: "Events & Social",
Expand Down Expand Up @@ -269,6 +278,7 @@ export const FOOTER_COLUMNS: FooterColumn[] = [
L.langSummit,
L.rustSummit,
L.packagingSummit,
L.communityOrganisersSummit,
],
},
{
Expand Down
1 change: 1 addition & 0 deletions src/pages/overview.astro
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ const categories = [
{ name: "Language Summit", href: "/language-summit/" },
{ name: "Packaging Summit", href: "/packaging-summit/" },
{ name: "Rust Summit", href: "/rust-summit/" },
{ name: "Community Organisers Summit", href: "/community-organisers-summit/" },
],
},
{
Expand Down
Loading