From d722b7636a49d7a515a0dc50793730133a151710 Mon Sep 17 00:00:00 2001 From: Saihajpreet Singh Date: Fri, 31 Jan 2025 16:04:11 +0000 Subject: [PATCH 1/2] feat: CFP section --- src/app/conf/2025/page.tsx | 7 +- src/app/conf/2025/speakers.tsx | 295 +++++++++++++++++++++++++++++++++ 2 files changed, 297 insertions(+), 5 deletions(-) create mode 100644 src/app/conf/2025/speakers.tsx 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..07f917989d --- /dev/null +++ b/src/app/conf/2025/speakers.tsx @@ -0,0 +1,295 @@ +"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. +

+

+ 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]}
+
+
+ ) +} From 8b6a9cb4e892577414929676dd5deb64ed00e862 Mon Sep 17 00:00:00 2001 From: Saihajpreet Singh Date: Mon, 3 Feb 2025 13:53:30 +0000 Subject: [PATCH 2/2] Address feedback --- src/app/conf/2025/layout.tsx | 2 +- src/app/conf/2025/speakers.tsx | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) 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/speakers.tsx b/src/app/conf/2025/speakers.tsx index 07f917989d..686a26ed72 100644 --- a/src/app/conf/2025/speakers.tsx +++ b/src/app/conf/2025/speakers.tsx @@ -235,7 +235,8 @@ export function Speakers() { 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. + 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{" "} @@ -268,8 +269,15 @@ export function Speakers() { 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. + guidance, please review{" "} + + how to submit your session + {" "} + for an event to see step-by-step instructions and helpful screenshots.