diff --git a/src/app/conf/2025/layout.tsx b/src/app/conf/2025/layout.tsx index 3c0f0b93ab..3d1ca82c72 100644 --- a/src/app/conf/2025/layout.tsx +++ b/src/app/conf/2025/layout.tsx @@ -48,7 +48,7 @@ export default function Layout({ } links={[ { children: "Sponsor", href: "/conf/2025/#sponsors" }, - { children: "Speakers", href: "/conf/2025/#speakers" }, + { children: "Submit to Speak", href: "/conf/2025/#speakers" }, { children: "Register", href: "/conf/2025/#register" }, { children: "Recap", href: "/conf/2024" }, { children: "Resources", href: "/conf/2025/resources" }, diff --git a/src/app/conf/2025/page.tsx b/src/app/conf/2025/page.tsx index 0e173e6eea..08a33b1f1e 100644 --- a/src/app/conf/2025/page.tsx +++ b/src/app/conf/2025/page.tsx @@ -6,6 +6,7 @@ import { Venue } from "./venue" import { FAQ } from "./faq" import { Register } from "./register" import { PastSponsors } from "./past-sponsors" +import { Speakers } from "./speakers" export const metadata: Metadata = { title: "GraphQLConf 2025 — Sept 08-10", @@ -63,11 +64,7 @@ export default function Page() { - + diff --git a/src/app/conf/2025/speakers.tsx b/src/app/conf/2025/speakers.tsx new file mode 100644 index 0000000000..686a26ed72 --- /dev/null +++ b/src/app/conf/2025/speakers.tsx @@ -0,0 +1,303 @@ +"use client" +import clsx from "clsx" + +import { useState, useEffect, ReactNode } from "react" +import Link from "next/link" + +function TabHeading({ + children, + className, +}: { + children: ReactNode + className?: string +}) { + return ( +

+ {children} +

+ ) +} + +function DatesTab() { + return ( + <> + Dates to Remember +
    +
  • CFP Opens: Tuesday, 4 February
  • +
  • CFP Close: Sunday, 4 May at 23:59 CEST (UTC+2)
  • +
  • CFP Notifications: Monday, 9 June
  • +
  • Schedule Announced: Wednesday, 11 June
  • +
  • Slides due date: Friday, 5 September
  • +
  • + Event Dates: Monday, 8 September - Wednesday, 10 September, 2024 +
  • +
+ + ) +} + +function TopicsTab() { + return ( + <> + Suggested Topics +
    +
  • GraphQL Working Group
  • +
      +
    • + GraphQL Specification (including incremental delivery, nullability) +
    • +
    • GraphQL-over-HTTP specification
    • +
    • Federation specification
    • +
    • + Reference software (GraphQL.js, graphql-http, GraphiQL and LSP) +
    • +
    +
  • GraphQL in Production
  • +
      +
    • Case studies
    • +
    • Federation and Distributed Systems
    • +
    • + Schema evolution (including backwards compatibility and versioning) +
    • +
    • Security
    • +
    • Scaling
    • +
    • Observability, telemetry and tracing
    • +
    +
  • Developer Experience
  • +
      +
    • Frontend
    • +
    • Backend
    • +
    • Patterns and community trends
    • +
    • Testing
    • +
    • Documentation
    • +
    +
+ + ) +} + +function NotesTab() { + return ( + <> + Important Notes +
    +
  • + All speakers are required to adhere to our{" "} + + Code of Conduct + + . We also highly recommend that speakers take our online{" "} + + Inclusive Speaker Orientation Course + + . +
  • +
  • + Panel submissions must include the names of all participants in the + initial submission to be considered. In an effort to promote speaker + diversity, The Linux Foundation does not accept submissions with + all-male panels, and speakers must not all be from the same company. +
  • +
  • + Complimentary Passes For Speakers – One complimentary pass for the + event will be provided for each accepted speaker. +
  • +
  • + Avoid sales pitches and discussing unlicensed or potentially + closed-source technologies when preparing your proposal; these talks + are almost always rejected due to the fact that they take away from + the integrity of our events, and are rarely well-received by + conference attendees. +
  • +
  • + All accepted speakers are required to submit their slides prior to the + event. +
  • +
+ + Preparing to Submit Your Proposal + +

+ While it is not our intention to provide you with strict instructions on + how to prepare your proposal, we hope you will take a moment to review + the following guidelines that we have put together to help you prepare + the best submission possible. To get started, here are three things that + you should consider before submitting your proposal: +

+
    +
  • What are you hoping to get from your presentation?
  • +
  • What do you expect the audience to gain from your presentation?
  • +
  • How will your presentation help better the ecosystem?
  • +
+

+ There are plenty of ways to give a presentation about projects and + technologies without focusing on company-specific efforts. Remember the + things to consider that we mentioned above when writing your proposal + and think of ways to make it interesting for attendees while still + letting you share your experiences, educate the community about an + issue, or generate interest in a project. +

+ How to Give a Great Talk +

+ We want to make sure submitters receive resources to help put together a + great submission and if accepted, give the best presentation possible. + To help with this, we recommend viewing seasoned speaker Dawn Foster's + in-depth talk:{" "} + + Getting Over Your Imposter Syndrome to Become a Conference Speaker – + Dawn Foster, VMware + + . +

+ + Have More Questions? First Time Submitting? Don't Feel Intimidated + +

+ Linux Foundation events are an excellent way to get to know the + community and share your ideas and the work that you are doing and we + strongly encourage first-time speakers to submit talks for our events. + In the instance that you aren't sure about your abstract,{" "} + + reach out to us + {" "} + and we will be more than happy to work with you on your proposal. +

+ + ) +} + +function TypesTab() { + return ( + <> + Submission Types +
    +
  • + Session Presentation: Typically 30 minutes in length, 1-2 speakers + presenting on a topic +
  • +
  • + Panel Discussion: Typically 30 minutes in length, 3-4 speakers + presenting on a topic +
  • +
  • Birds of a Feather: Typically 45 minutes to 1 hour in length
  • +
  • Lightning Talk: Typically 5-10 minutes in length
  • +
  • Workshop: Typically 1-2 hours in length
  • +
+ + ) +} +export function Speakers() { + const [buttonText, setButtonText] = useState("Submit a Proposal") + const [isDisabled, setIsDisabled] = useState(false) + const [activeTab, setActiveTab] = useState("dates") + + useEffect(() => { + const checkDate = () => { + const currentDate = new Date() + const closingDate = new Date("2025-05-12T00:00:00Z") + if (currentDate >= closingDate) { + setButtonText("CFP Closed") + setIsDisabled(true) + } + } + + checkDate() + const timer = setInterval(checkDate, 60000) // Check every minute + + return () => clearInterval(timer) + }, []) + + const tabContent = { + dates: , + topics: , + types: , + notes: , + } + + return ( +
+

Call for Proposals

+

+ Putting on an amazing conference depends on great content, which is + where you come in! Join other GraphQL leaders and community members as a + presenter by submitting to our Call for Proposals (CFP) and sharing your + experience across a wide range of topics. Please click through all of + the tabs below before submitting a proposal. +

+

+ For any questions regarding the CFP process, please email{" "} + + cfp@linuxfoundation.org + + . +

+ +

+ Please be aware that the Linux Foundation uses Sessionize for CFP + submissions. Sessionize is a cloud-based event content management + software designed to be intuitive and user-friendly. If you need + guidance, please review{" "} + + how to submit your session + {" "} + for an event to see step-by-step instructions and helpful screenshots. +

+
+
+ {["dates", "topics", "types", "notes"].map(tab => ( + + ))} +
+ {/* @ts-ignore - fine code */} +
{tabContent[activeTab]}
+
+
+ ) +}