From 249e87400ceea8770a5ca847eea92bf314b9d022 Mon Sep 17 00:00:00 2001 From: Abdelrahman <79328931+2bdulra7manRea@users.noreply.github.com> Date: Mon, 3 Feb 2025 23:28:39 +0200 Subject: [PATCH 01/40] Fix argument example: Update Query to request Human instead of Droid (#1955) --- src/pages/learn/queries.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/learn/queries.mdx b/src/pages/learn/queries.mdx index b34e103c07..ce9c7ca617 100644 --- a/src/pages/learn/queries.mdx +++ b/src/pages/learn/queries.mdx @@ -55,7 +55,7 @@ If the only thing we could do was traverse objects and their fields, GraphQL wou ```graphql type Query { - droid(id: ID!): Droid + human(id: ID!): Human } ``` From ca406f494fb7fe436d4e218f28e109e39881271b Mon Sep 17 00:00:00 2001 From: John Mertic Date: Mon, 3 Feb 2025 17:44:21 -0500 Subject: [PATCH 02/40] Change members embed to landscape2 (#1952) * Change members embed to landscape2 * Fix Signed-off-by: John Mertic --------- Signed-off-by: John Mertic --- src/pages/community/foundation/members.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/community/foundation/members.mdx b/src/pages/community/foundation/members.mdx index 7351aaad27..84de1e800d 100644 --- a/src/pages/community/foundation/members.mdx +++ b/src/pages/community/foundation/members.mdx @@ -16,6 +16,6 @@ or [complete a membership application](https://join.graphql.org). From fab410f7554733ae34bad698d8beb2de374d1802 Mon Sep 17 00:00:00 2001 From: Saihajpreet Singh Date: Mon, 3 Feb 2025 22:45:22 +0000 Subject: [PATCH 03/40] feat: CFP section (#1949) * feat: CFP section * Address feedback --- src/app/conf/2025/layout.tsx | 2 +- src/app/conf/2025/page.tsx | 7 +- src/app/conf/2025/speakers.tsx | 303 +++++++++++++++++++++++++++++++++ 3 files changed, 306 insertions(+), 6 deletions(-) create mode 100644 src/app/conf/2025/speakers.tsx 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]}
+
+
+ ) +} From d7799da741bd8d957689296335b94a24c0067ea7 Mon Sep 17 00:00:00 2001 From: Benjie Date: Tue, 4 Feb 2025 11:50:00 +0100 Subject: [PATCH 04/40] Improve graphql-js.org redirects in vercel.json (#1958) --- vercel.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vercel.json b/vercel.json index c9dcc98bc5..ca46883581 100644 --- a/vercel.json +++ b/vercel.json @@ -52,7 +52,7 @@ }, { "source": "/graphql-js/:path*", - "destination": "https://graphql-js.org/:path*", + "destination": "https://graphql-js.org/docs/:path*", "permanent": true }, { From cd4325fca5c61748ba3ed0549c6131d0b199357e Mon Sep 17 00:00:00 2001 From: Denis Badurina Date: Thu, 6 Feb 2025 13:07:04 +0100 Subject: [PATCH 05/40] Add Hive Gateway readme (#1959) --- src/code/tools/hive/gateways-supergraphs/hive.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/code/tools/hive/gateways-supergraphs/hive.md b/src/code/tools/hive/gateways-supergraphs/hive.md index 467c6d4f92..af42b94f1e 100644 --- a/src/code/tools/hive/gateways-supergraphs/hive.md +++ b/src/code/tools/hive/gateways-supergraphs/hive.md @@ -4,3 +4,9 @@ description: Hive Gateway can act as a GraphQL federation gateway or a proxy for url: https://the-guild.dev/graphql/hive github: graphql-hive/gateway --- + +[Hive Gateway](https://the-guild.dev/graphql/hive/docs/gateway) is a fully open-source, MIT-licensed GraphQL router that can act as a [GraphQL Federation](https://the-guild.dev/graphql/hive/federation) gateway, a subgraph or a proxy gateway for any GraphQL API service. + +Hive Gateway provides a flexible, open-source solution tailored to meet the needs of modern GraphQL architectures. + +It supports deployment as a [standalone binary](https://the-guild.dev/graphql/hive/docs/gateway#starting-the-gateway), a [Docker image](https://the-guild.dev/graphql/hive/docs/gateway/deployment/docker), or a [JavaScript package](https://the-guild.dev/graphql/hive/docs/gateway#installation), making it compatible with environments such as [Node.js](https://the-guild.dev/graphql/hive/docs/gateway/deployment/runtimes/nodejs), [Bun](https://the-guild.dev/graphql/hive/docs/gateway/deployment/runtimes/bun), [Deno](https://the-guild.dev/graphql/hive/docs/gateway/deployment/runtimes/deno), [Google Cloud Functions](https://the-guild.dev/graphql/hive/docs/gateway/deployment/serverless/google-cloud-platform), [Azure Functions](https://the-guild.dev/graphql/hive/docs/gateway/deployment/serverless/azure-functions), [AWS Lambda](https://the-guild.dev/graphql/hive/docs/gateway/deployment/serverless/aws-lambda), or [Cloudflare Workers](https://the-guild.dev/graphql/hive/docs/gateway/deployment/serverless/cloudflare-workers). From 63f6e8332882f0ab1b0b25a4f3a417670d2aceac Mon Sep 17 00:00:00 2001 From: Lee Byron Date: Thu, 6 Feb 2025 06:17:22 -0800 Subject: [PATCH 06/40] Add Welcome new TSC members 2025 blog post (#1960) Co-authored-by: Benjie --- .../2025-02-05-welcome-tsc-members-2025.md | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/pages/blog/2025-02-05-welcome-tsc-members-2025.md diff --git a/src/pages/blog/2025-02-05-welcome-tsc-members-2025.md b/src/pages/blog/2025-02-05-welcome-tsc-members-2025.md new file mode 100644 index 0000000000..b695a74a50 --- /dev/null +++ b/src/pages/blog/2025-02-05-welcome-tsc-members-2025.md @@ -0,0 +1,38 @@ +--- +title: "Welcoming New TSC Members" +tags: ["foundation"] +date: 2025-02-05 +byline: Lee Byron +--- + +The GraphQL Technical Steering Committee is the body responsible for the technical oversight of all our open source projects and management of our open source community. Every year we vote on self-nominees to rotate up to half of TSC members, and we've just concluded the most recent vote. + +## Welcoming our new TSC members + +I’m excited to share that we have elected two new members to the GraphQL Technical Steering Committee (TSC), [Martin Bonnin](https://github.com/martinbonnin) and [Pascal Senn](https://github.com/PascalSenn), technical leads at Apollo and ChilliCream respectively. They have been consistent contributors to the GraphQL open source project over the last few years and I'm thrilled to have their help in and commitment to guiding and advancing the GraphQL technical project and broader ecosystem. + +In addition, we also re-elected three existing members, [Kewei Qu](https://github.com/Keweiqu) a technical lead at Meta working on the original GraphQL deployment, [Rob Richard](https://github.com/robrichard) an engineer at 1stDibs at the lead of the Streaming GraphQL project, and [Uri Goldshtein](https://github.com/urigo) founder of The Guild. These all join our existing [TSC members](https://github.com/orgs/graphql/teams/tsc/members). + +## Open Working Groups and the Role of the TSC + +GraphQL is an open project. All are welcome to join our [working group](https://github.com/graphql/graphql-wg/) meetings, champion proposals for project-wide improvements, or contribute directly across our open source projects. + +It has been critical to keep access to these working groups open, but it does mean a rotating cast of contributors over time. The primary role of the TSC is to provide continuity as the stewards of this group and our processes, and co-owners of our technical projects. + +While the TSC is a closed group, our focus is always on strengthening the work that happens in our open Working Group meetings—that is where technical work moves forward. + +## Our Processes + +To learn more about the TSC and how we work, check out these resources: + +- **[2025 TSC Elections](https://github.com/graphql/graphql-wg/issues/1612)** — we use Github issues for most things across the Working Group and TSC, and this one tracked the TSC election itself. Anyone could self-nominate via a Google Form, and we held a vote via OpaVote. +- **[TSC Charter](https://github.com/graphql/graphql-wg/blob/main/GraphQL-TSC.md)** — this lists out in detail how the TSC is governed, which contains more detail about when and how we take votes, and what we're accountable for. +- **[GraphQL Working Group](https://github.com/graphql/graphql-wg/)** — this is where we organize meetings and contribution across the Working Group, where you'll find past and upcoming agendas and can join an upcoming meeting simply by adding yourself to the next agenda file in a PR. + +--- + +I'm beyond lucky to get to work with such a talented group of volunteers both directly on the TSC and across the GraphQL community. + +Welcome, Martin and Pascal! + +— Lee From 520c22ccf7d49b1932b4c544cff2b596d2e1c87b Mon Sep 17 00:00:00 2001 From: Benjie Date: Thu, 6 Feb 2025 15:05:18 +0000 Subject: [PATCH 07/40] Improve flow of documentation around GraphiQL (#1956) --- src/pages/graphql-js/running-an-express-graphql-server.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pages/graphql-js/running-an-express-graphql-server.mdx b/src/pages/graphql-js/running-an-express-graphql-server.mdx index c73b403198..230b67a5e9 100644 --- a/src/pages/graphql-js/running-an-express-graphql-server.mdx +++ b/src/pages/graphql-js/running-an-express-graphql-server.mdx @@ -52,6 +52,8 @@ You can run this GraphQL server with: node server.js ``` +At this point you will have a running GraphQL API; but you can't just visit it in your web browser to use it - you need a GraphQL client to issue GraphQL queries to the API. Let's take a look at how to add the GraphiQL (GraphQL with an `i` in the middle) integrated development environment to your server. + ## Using GraphiQL [GraphiQL](https://github.com/graphql/graphiql) is GraphQL's IDE; a great way of querying and exploring your GraphQL API. From f5f4989e5dad7952113588de0b4a0888815ef34f Mon Sep 17 00:00:00 2001 From: Lee Byron Date: Thu, 6 Feb 2025 07:33:57 -0800 Subject: [PATCH 08/40] Update 2025-02-05-welcome-tsc-members-2025.md Minor cleanup --- src/pages/blog/2025-02-05-welcome-tsc-members-2025.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/pages/blog/2025-02-05-welcome-tsc-members-2025.md b/src/pages/blog/2025-02-05-welcome-tsc-members-2025.md index b695a74a50..010d694111 100644 --- a/src/pages/blog/2025-02-05-welcome-tsc-members-2025.md +++ b/src/pages/blog/2025-02-05-welcome-tsc-members-2025.md @@ -7,13 +7,13 @@ byline: Lee Byron The GraphQL Technical Steering Committee is the body responsible for the technical oversight of all our open source projects and management of our open source community. Every year we vote on self-nominees to rotate up to half of TSC members, and we've just concluded the most recent vote. -## Welcoming our new TSC members +### Our new TSC elections... I’m excited to share that we have elected two new members to the GraphQL Technical Steering Committee (TSC), [Martin Bonnin](https://github.com/martinbonnin) and [Pascal Senn](https://github.com/PascalSenn), technical leads at Apollo and ChilliCream respectively. They have been consistent contributors to the GraphQL open source project over the last few years and I'm thrilled to have their help in and commitment to guiding and advancing the GraphQL technical project and broader ecosystem. -In addition, we also re-elected three existing members, [Kewei Qu](https://github.com/Keweiqu) a technical lead at Meta working on the original GraphQL deployment, [Rob Richard](https://github.com/robrichard) an engineer at 1stDibs at the lead of the Streaming GraphQL project, and [Uri Goldshtein](https://github.com/urigo) founder of The Guild. These all join our existing [TSC members](https://github.com/orgs/graphql/teams/tsc/members). +In addition, we also re-elected three existing members, [Kewei Qu](https://github.com/Keweiqu) a technical lead at Meta working on the original GraphQL deployment, [Rob Richard](https://github.com/robrichard) an engineer at 1stDibs and the lead of the Streaming GraphQL project, and [Uri Goldshtein](https://github.com/urigo) founder of The Guild. These all join our existing [TSC members](https://github.com/orgs/graphql/teams/tsc/members). -## Open Working Groups and the Role of the TSC +### Open working groups and the role of the TSC GraphQL is an open project. All are welcome to join our [working group](https://github.com/graphql/graphql-wg/) meetings, champion proposals for project-wide improvements, or contribute directly across our open source projects. @@ -21,7 +21,7 @@ It has been critical to keep access to these working groups open, but it does me While the TSC is a closed group, our focus is always on strengthening the work that happens in our open Working Group meetings—that is where technical work moves forward. -## Our Processes +### Our processes To learn more about the TSC and how we work, check out these resources: @@ -29,7 +29,6 @@ To learn more about the TSC and how we work, check out these resources: - **[TSC Charter](https://github.com/graphql/graphql-wg/blob/main/GraphQL-TSC.md)** — this lists out in detail how the TSC is governed, which contains more detail about when and how we take votes, and what we're accountable for. - **[GraphQL Working Group](https://github.com/graphql/graphql-wg/)** — this is where we organize meetings and contribution across the Working Group, where you'll find past and upcoming agendas and can join an upcoming meeting simply by adding yourself to the next agenda file in a PR. ---- I'm beyond lucky to get to work with such a talented group of volunteers both directly on the TSC and across the GraphQL community. From ce6b63aa01dbef48897aa144300df1be94ff7b48 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Tue, 11 Feb 2025 19:57:03 +1100 Subject: [PATCH 09/40] Blog: How to write a successful conference proposal (#1936) Co-authored-by: Saihajpreet Singh Co-authored-by: Benjie --- ...write-a-successful-conference-proposal.mdx | 140 ++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 src/pages/blog/2025-02-11-how-to-write-a-successful-conference-proposal.mdx diff --git a/src/pages/blog/2025-02-11-how-to-write-a-successful-conference-proposal.mdx b/src/pages/blog/2025-02-11-how-to-write-a-successful-conference-proposal.mdx new file mode 100644 index 0000000000..960b23b35e --- /dev/null +++ b/src/pages/blog/2025-02-11-how-to-write-a-successful-conference-proposal.mdx @@ -0,0 +1,140 @@ +--- +title: "How to write a successful conference proposal" +tags: ["blog"] +date: 2025-02-11 +byline: Donna Zhou +--- + +By the end of this blog, you'll know: + +* how to write a conference proposal, and +* how to maximise your chance of getting selected to speak + +Speaking at a conference is a goal you can achieve now. You don't have to wait until you've "made it" as a principal engineer. + +I'm going to share with you what I've learned from speaking at the [GraphQL Conference](https://graphql.org/conf/2023/sessions/81daf0dd0b26efdc784ba0a530e54a68/) and how I maximised my chances of getting selected. I'm going to share the full text of my successful conference proposal so you can see how achievable this is. I will also share advice from [Benjie](https://github.com/benjie), a GraphQL Conference proposal reviewer and member of the Technical Steering Committee. + +By this end of this blog, you will have the skills and confidence to write your own successful conference proposal. + +## Why you should speak at a conference +Speaking at conferences is a great way to share knowledge and a fantastic opportunity to meet and learn from your peers. The GraphQL Conference is a fantastic way to connect with the community in person. + +Although it is not the primary motivation, speaking at a conference helps you stand out as an engineer. It demonstrates that you are an expert on the topic. + +## You are already enough +Many developers want to speak at a conference, yet I'm sure the next thought most people have is "but I'm not senior or good enough to do that!" + +You don't need to wait until you are a big deal principal engineer to give a conference talk. At any stage of your career, you have valuable information to share. I'm sure you have already achieved something worth sharing in a conference talk. + +In this blog I will explain how to take the experiences you already have, and present it as a winning conference proposal. **You are already enough!** + +## Selecting conference talk ideas +You will maximise your chance of getting selected if you choose a topic **that more engineers are interested in**. + +Before I became a software engineer, I was a stand-up comedian. When making jokes is your job, you need a systematic way to generate many ideas (jokes) and test them with audiences. You can use the same approach for selecting conference topic ideas. + +### Generating talk ideas +Comedians have to generate new ideas (jokes) all the time. Demanding jobs such as Saturday Night Live require new scripts every week. It's part of the job, so quickly generating ideas is the first skill they teach you at comedy school. + +Here's what I learned at The Second City (the comedy school where Tina Fey, Stephen Colbert, and Steve Carell studied). To generate heaps of ideas, get a blank piece of paper (or digital equivalent) and start writing down ideas **without judging them or editing them.** I suggest setting a short timer to timebox the activity, for example 10 minutes. + +The most important point about this exercise is not pre-judging yourself. Humans are not good at multi-threading. If you're busy judging your ideas, you don't have enough brain power to be creative. Give yourself the permission to come up with crappy ideas. This is only an exercise and nobody is going to see what you write down. + +You can also use prompts to help you think of talk ideas: +* What have I worked on in the last 12 months (or longer)? +* Where have I been spending my time over the past year? +* What are the technologies that I'm interested in? +* What have I been reading about? + +After the timer is up and you have your ideas, then you can look through and start selecting your most promising ideas. Remember, only start judging after finishing writing down all the ideas. + +### Testing talk ideas +It's useful to think about the conference proposal selection process from the perspective of a conference organiser. I interviewed Benjie, part of the team organising the GraphQL Conference and Technical Steering Committee, for his advice. He told me, the most important thing he looked for was **interesting topics and unique perspectives**. The most important factor in getting accepted to speak at a conference is having an idea that resonates. + +So how do you know if your idea is interesting? An effective way to assess your talk ideas is to test them with colleagues. If your idea resonates with them, you've probably found an idea that many developers want to learn about. + +Test your conference ideas where it's appropriate. Perhaps a team demo, brown bags, meetups, writing an internal blog, or simply talking to colleagues. What grabs their attention? Which conversation topics come up again and again? + +### Narrowing down the list +To maximise your chances of getting selected, you should only submit your most promising talk ideas. + +Try and rank your remaining conference talk ideas with these prompts (you'll see why in the next section): +* Which of these ideas resonated most with colleagues? +* Which of these ideas do I have the most expertise in? +* Which of these ideas am I most proud of, or most excited by? + +I usually only have one or two proposals at a time, which I submit to many conferences. You might have more ideas, but try and keep your list short. Be efficient with your time and only submit the ideas you are sure about. + +## Writing the proposal +Here are my top tips, including suggestions from Benjie. + +After explaining these tips, in the next section I'll share the full text of my GraphQL Conference proposal, so you can see how achievable this is. + +### Get straight to the point +A conference organiser needs to understand what your proposal is about within the first few seconds of reading your proposal. Get straight to the point about what you are going to share. + +Conference organisers don't have time to call you and ask for clarification, so you must make sure what you write is very clear. Ask colleagues and friends to review your proposal for clarity. + +### A proposal is like a movie trailer +You'll see below, a proposal is very short. You'll usually be given a small word limit. + +You only have enough room to explain the main idea of your talk. You don't have enough room to explain all the points you will present in the talk. This is like a movie trailer. Show just enough excitement to grab a person's interest, but don't give the full story away. If they want to know all the details, they'll have to accept your talk first! + +The proposal never contains slides nor speech content. You write slides and the speech after being accepted, so don't worry about having this ready beforehand. + +### Explain why you're the best person to give the talk +Demonstrate your credentials and why you're the best person to give this talk. Explain why you are knowledgeable about the topic. + +Benjie said he was looking for **unique perspectives**. Demonstrate why you're uniquely qualified to deliver this talk. + +A conference organiser might not know who you are. Explaining your credentials is essential so the organiser trusts you to deliver on your talk proposal. + +### Emphasis community connections (optional) +If you have participated in the community, write about how you've contributed to the community. Similar to the previous point, a conference organiser doesn't know anything about most applicants. If the organisers have seen or interacted with you already, they will have more trust in you. + +I've been involved in the GraphQL community as a maintainer of GraphQL Java and contributed to the specification. The conference organisers trusted me to deliver the talk because they could see I was already contributing to the community. + +### Save your work +Save your proposal, so you can recycle the proposal for other conferences. It also means you're protected in case a website loses your work. + +## My GraphQL Conference proposal in full +This was the conference proposal that got accepted for the GraphQL Conference in 2023. See how I used the tips above in the additional notes below. + +> **Title:** How to make your first open source contribution (1) +> +> **Description:** +> Have you always wanted to make an open source contribution, but not sure where to start? (2) +> +> Getting started with open source is much easier than it seems. +> +> A year ago, I started regularly contributing to GraphQL Java and the GraphQL Scalars project. I caught the open source bug and made it a habit, and now I'm a maintainer of GraphQL Java (3). It has been an incredible learning experience, and it has been very rewarding to meet the engineers using the library all over the world. +> +> But it wasn't always an open source fairytale! Many years ago I tried to contribute to another project, and it was a total failure. I didn't have a great experience and it put me off open source for a long time. In this talk, I want to explain what I did differently to succeed this time around (4). +> +> **Speaker bio:** +> I am a maintainer of GraphQL Java and software engineer at Atlassian (5). I've published a book, GraphQL with Java and Spring, all about the official Spring for GraphQL integration and the GraphQL Java library. + +Notice my proposal was very short, but it was also very clear. A tip: when you ask colleagues to review your proposal, don't ask them "was it clear?" because they'll probably say "yes" to be polite. If you want more accurate feedback, instead ask them to explain the proposal back to you. + +Additional commentary on my proposal +1. Straight to the point in the title: My talk is going to be about how a beginner can make their first open source contribution. I would avoid puns, jokes, and pop culture references in the title because they might not make sense to a reviewer and can detract from your message. +2. Why this talk is interesting: this is a common question many engineers have. +3. Emphasise your credentials to build trust, and emphasise community connections. +4. Why this talk is interesting: I didn't always succeed. I initially failed miserably, but made changes and then became a maintainer. Note that I don't actually explain any steps for how to make an open source contribution in this short proposal. I deliberately stopped short of explaining so you'll only find out if you accept my conference talk! Remember, this is like a movie trailer. Show just enough excitement to grab a person's interest, but don't give the story away. +5. Explaining my credentials, why I'm uniquely qualified to give this talk. I also mentioned where I work and the book so it's easier to verify my credentials. + +## Dealing with rejection +Rejection sucks, particularly after putting in so much effort to write a proposal. Even great talk proposals can still be rejected. Perhaps the conference organisers were looking for different topics, or there was some other factor you can't control. + +This is why I want to prepare you upfront, you will be applying to many conferences. If you keep trying, you will eventually get accepted. You can reuse most of your talk proposal for other conferences, so your effort is not wasted. You should only spend a few minutes on each subsequent application. + +If it helps, I tried to reframe my disappointment of getting rejected. Instead, I tried to make a game out of collecting rejections. My goal was to collect 100 conference rejections, because I knew every submission was improving my chances. Although I was rejected from quite a few conferences, I didn't achieve my "goal" of 100 rejections. + +When a rejection happens, it's worth remembering your reasons for wanting to speak at a conference, which I wrote about at the top of this page. I promise the payoff is worth the uncomfortable feeling of getting rejected. Don't give up. + +While I encourage you to continue trying, each rejection also gives you the opportunity to assess if there is anything you can do better next time. In my experience, conference organisers are usually too busy to deliver detailed feedback. You could instead ask a colleague or friend for help. Try to ask colleagues who have already spoken at conferences, as they've already achieved what you're aiming for. + +## Apply for GraphQLConf 2025 +In this page we walked through every thing you need to know for writing a successful conference proposal. + +You already have what it takes. I encourage you to apply to speak at GraphQLConf 2025! The call for proposals is open, [apply now!](https://sessionize.com/graphqlconf-2025). From c1c5eb80e3c21b669a0c5fa8bb9b23c6f593178d Mon Sep 17 00:00:00 2001 From: Jonathan Eatherly Date: Wed, 12 Feb 2025 03:41:25 -0600 Subject: [PATCH 10/40] Minor doc typo fix in authorization.mdx (#1962) --- src/pages/learn/authorization.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/learn/authorization.mdx b/src/pages/learn/authorization.mdx index da91da0089..f23fab82ef 100644 --- a/src/pages/learn/authorization.mdx +++ b/src/pages/learn/authorization.mdx @@ -33,7 +33,7 @@ function Post_body(obj, args, context, info) { } ``` -Notice that we define "author owns a post" by checking whether the post's `authorId` field equals the current user’s `id`. Can you spot the problem? We would need to duplicate this code for each entry point into the service. Then if the authorization logic is not kept perfectly in sync, users could see different data depending on which API they use. Yikes! We can avoid that by having a [single source of truth](/learn/thinking-in-graphs/#business-logic-layer) for authorization, instead of putting it the GraphQL layer. +Notice that we define "author owns a post" by checking whether the post's `authorId` field equals the current user’s `id`. Can you spot the problem? We would need to duplicate this code for each entry point into the service. Then if the authorization logic is not kept perfectly in sync, users could see different data depending on which API they use. Yikes! We can avoid that by having a [single source of truth](/learn/thinking-in-graphs/#business-logic-layer) for authorization, instead of putting it in the GraphQL layer. Defining authorization logic inside the resolver is fine when learning GraphQL or prototyping. However, for a production codebase, delegate authorization logic to the business logic layer. Here’s an example of how authorization of the `Post` type's fields could be implemented separately: From 5cab7e462040504d28d268e13784ab9cae3fba28 Mon Sep 17 00:00:00 2001 From: Saihajpreet Singh Date: Wed, 12 Feb 2025 15:11:46 +0530 Subject: [PATCH 11/40] remove academic registration (#1961) --- src/app/conf/2025/register.tsx | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/app/conf/2025/register.tsx b/src/app/conf/2025/register.tsx index 0e54fd7e37..c15c105ae7 100644 --- a/src/app/conf/2025/register.tsx +++ b/src/app/conf/2025/register.tsx @@ -8,10 +8,6 @@ export function Register() { title="Register" subtitle="Join a diverse community of GraphQL developers, architects, and enthusiasts while experiencing premium content and networking opportunities in a vendor-neutral environment. We never sell attendee lists or contact information, nor do we authorize others to do so. If you receive an email claiming to sell an attendee list for a Linux Foundation event, please forward it to events@linuxfoundation.org." listItems={[ - { - title: "Academics", - description: `Academics registrations are for current full-time students and faculty members. Full-time faculty and students will need to upload a valid copy of their Faculty or Student ID when registering. If you have any questions, please email graphql_events@linuxfoundation.org`, - }, { title: "Speakers", description: `You should have received a registration link in your acceptance email. If you did not, please contact cfp@linuxfoundation.org for more details.`, From d1bfca3f4d9dce337c815b8d643cf05bf5592a53 Mon Sep 17 00:00:00 2001 From: Saihajpreet Singh Date: Mon, 17 Feb 2025 10:02:42 +0530 Subject: [PATCH 12/40] style: run prettier (#1967) --- src/pages/blog/2025-02-05-welcome-tsc-members-2025.md | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/blog/2025-02-05-welcome-tsc-members-2025.md b/src/pages/blog/2025-02-05-welcome-tsc-members-2025.md index 010d694111..13e9536c47 100644 --- a/src/pages/blog/2025-02-05-welcome-tsc-members-2025.md +++ b/src/pages/blog/2025-02-05-welcome-tsc-members-2025.md @@ -29,7 +29,6 @@ To learn more about the TSC and how we work, check out these resources: - **[TSC Charter](https://github.com/graphql/graphql-wg/blob/main/GraphQL-TSC.md)** — this lists out in detail how the TSC is governed, which contains more detail about when and how we take votes, and what we're accountable for. - **[GraphQL Working Group](https://github.com/graphql/graphql-wg/)** — this is where we organize meetings and contribution across the Working Group, where you'll find past and upcoming agendas and can join an upcoming meeting simply by adding yourself to the next agenda file in a PR. - I'm beyond lucky to get to work with such a talented group of volunteers both directly on the TSC and across the GraphQL community. Welcome, Martin and Pascal! From 9d00088b71170481cc678d8194ecdf16e2e280a5 Mon Sep 17 00:00:00 2001 From: Jory Burson Date: Sun, 16 Feb 2025 23:36:15 -0500 Subject: [PATCH 13/40] Adds Sponsors Section + Grafbase (#1964) * Add Grafbase logo for 2025 Conf * Create sponsors.tsx * Update page.tsx * use the new design --------- Co-authored-by: Saihajpreet Singh --- public/img/conf/Sponsors/Grafbase.svg | 7 +++ src/app/conf/2025/page.tsx | 4 +- .../2025/{past-sponsors.tsx => sponsors.tsx} | 61 ++++++++----------- 3 files changed, 36 insertions(+), 36 deletions(-) create mode 100644 public/img/conf/Sponsors/Grafbase.svg rename src/app/conf/2025/{past-sponsors.tsx => sponsors.tsx} (63%) diff --git a/public/img/conf/Sponsors/Grafbase.svg b/public/img/conf/Sponsors/Grafbase.svg new file mode 100644 index 0000000000..8bafcfde35 --- /dev/null +++ b/public/img/conf/Sponsors/Grafbase.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/app/conf/2025/page.tsx b/src/app/conf/2025/page.tsx index 08a33b1f1e..43bc84cc9a 100644 --- a/src/app/conf/2025/page.tsx +++ b/src/app/conf/2025/page.tsx @@ -5,7 +5,7 @@ import { Sponsor } from "./sponsorship" import { Venue } from "./venue" import { FAQ } from "./faq" import { Register } from "./register" -import { PastSponsors } from "./past-sponsors" +import { Sponsors } from "./sponsors" import { Speakers } from "./speakers" export const metadata: Metadata = { @@ -62,7 +62,7 @@ export default function Page() {
- + diff --git a/src/app/conf/2025/past-sponsors.tsx b/src/app/conf/2025/sponsors.tsx similarity index 63% rename from src/app/conf/2025/past-sponsors.tsx rename to src/app/conf/2025/sponsors.tsx index 9e3d25dcc0..5cd8c50222 100644 --- a/src/app/conf/2025/past-sponsors.tsx +++ b/src/app/conf/2025/sponsors.tsx @@ -1,10 +1,4 @@ -import Stellate from "public/img/conf/Sponsors/Stellate.svg" -import Hasura from "public/img/conf/Sponsors/Hasura.svg" -import TheGuild from "public/img/conf/Sponsors/TheGuild.svg" -import Apollo from "public/img/conf/Sponsors/Apollo.svg" -import Tyk from "public/img/conf/Sponsors/Tyk.svg" -import IBM from "public/img/conf/Sponsors/IBM.svg" -import Graphweaver from "public/img/conf/Sponsors/Graphweaver.svg" +import Grafbase from "public/img/conf/Sponsors/Grafbase.svg" import { clsx } from "clsx" import NextImage from "next-image-export-optimizer" @@ -19,34 +13,33 @@ const SPONSORS: Array<{ title: string logos: Array }> = [ - { - title: "Diamond", - logos: [ - { icon: TheGuild, name: "The Guild", link: "https://the-guild.dev/" }, - { - icon: IBM, - name: "IBM", - link: "https://www.ibm.com/products/api-connect", - }, - ], - }, - { - title: "Gold", - logos: [ - { icon: Apollo, name: "Apollo", link: "https://www.apollographql.com/" }, - { - icon: Graphweaver, - name: "Graphweaver", - link: "https://graphweaver.com/", - }, - { icon: Hasura, name: "Hasura", link: "https://hasura.io/" }, - ], - }, + // { + // title: "Diamond", + // logos: [ + // { icon: TheGuild, name: "The Guild", link: "https://the-guild.dev/" }, + // { + // icon: IBM, + // name: "IBM", + // link: "https://www.ibm.com/products/api-connect", + // }, + // ], + // }, + // { + // title: "Gold", + // logos: [ + // { icon: Apollo, name: "Apollo", link: "https://www.apollographql.com/" }, + // { + // icon: Graphweaver, + // name: "Graphweaver", + // link: "https://graphweaver.com/", + // }, + // { icon: Hasura, name: "Hasura", link: "https://hasura.io/" }, + // ], + // }, { title: "Silver", logos: [ - { icon: Stellate, name: "Stellate", link: "https://stellate.co/" }, - { icon: Tyk, name: "Tyk", link: "https://tyk.io/" }, + { icon: Grafbase, name: "Grafbase", link: "https://grafbase.com/" }, ], }, ] @@ -99,10 +92,10 @@ function List({ ) } -export function PastSponsors() { +export function Sponsors() { return (
-

Thanks to our 2024 sponsors!

+

Sponsors

{SPONSORS.map(({ title, logos }, i) => ( <>
From 389e49979282cdfbb97ee3393e178568948d1102 Mon Sep 17 00:00:00 2001 From: Saihajpreet Singh Date: Wed, 19 Feb 2025 17:18:25 +0530 Subject: [PATCH 14/40] feat: update grafbase logo (#1968) --- public/img/conf/Sponsors/Grafbase.svg | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/public/img/conf/Sponsors/Grafbase.svg b/public/img/conf/Sponsors/Grafbase.svg index 8bafcfde35..2b99439008 100644 --- a/public/img/conf/Sponsors/Grafbase.svg +++ b/public/img/conf/Sponsors/Grafbase.svg @@ -1,7 +1,5 @@ - - - - - - + + + + From 17b8f503a343e357c4692121585017fcad1242ff Mon Sep 17 00:00:00 2001 From: Jeroen Date: Wed, 19 Feb 2025 12:56:37 +0100 Subject: [PATCH 15/40] Added new library for PHP: graphql-attribute-schema [server][php] (#1965) Easily build your GraphQL schema for **webonyx/graphql-php** using PHP attributes instead of large configuration arrays. --- .../php/server/graphql-attribute-schema.md | 111 ++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 src/code/language-support/php/server/graphql-attribute-schema.md diff --git a/src/code/language-support/php/server/graphql-attribute-schema.md b/src/code/language-support/php/server/graphql-attribute-schema.md new file mode 100644 index 0000000000..f07fe4cfc1 --- /dev/null +++ b/src/code/language-support/php/server/graphql-attribute-schema.md @@ -0,0 +1,111 @@ +--- +name: graphql-attribute-schema +description: Easily build your GraphQL schema for webonyx/graphql-php using PHP attributes instead of large configuration arrays. +url: https://jerowork.github.io/graphql-attribute-schema +github: jerowork/graphql-attribute-schema +--- + +Easily build your GraphQL schema for `webonyx/graphql-php` using PHP attributes instead of large configuration arrays. + +A simple example: + +```php +use Jerowork\GraphqlAttributeSchema\Attribute\Enum; +use Jerowork\GraphqlAttributeSchema\Attribute\Field; +use Jerowork\GraphqlAttributeSchema\Attribute\InputType; +use Jerowork\GraphqlAttributeSchema\Attribute\Mutation; +use Jerowork\GraphqlAttributeSchema\Attribute\Query; +use Jerowork\GraphqlAttributeSchema\Attribute\Type; + +final readonly class CreateUserMutation +{ + #[Mutation] + public function createUser(CreateUserInputType $input): User + { + // Business logic to create a user + } +} + +final readonly class UserQuery +{ + #[Query(description: 'Get a user')] + public function user(int $userid): User + { + // Fetch and return user data + } +} + +#[InputType] +final readonly class CreateUserInputType +{ + public function __construct( + #[Field] + public int $userId, + #[Field] + public string $name, + #[Field(name: 'phoneNumber')] + public ?string $phone, + ) {} +} + +#[Type] +final readonly class User +{ + // Define fields as class properties + public function __construct( + #[Field] + public int $userId, + #[Field] + public string $name, + public ?string $phone, + #[Field(description: 'The status of the user')] + public UserStatusType $status, + ) {} + + // Define fields with methods for additional logic + #[Field] + public function getPhoneNumber(): string + { + return sprintf('+31%s', $this->phone); + } +} + +#[Enum(description: 'The status of the user')] +enum UserStatusType: string +{ + case Created = 'CREATED'; + case Removed = 'REMOVED'; +} +``` + +This will result in the following GraphQL schema: + +```graphql +type Mutation { + createUser(input: CreateUserInput!): User! +} + +type Query { + user(userId: Int!): User! +} + +input CreateUserInput { + userId: Int! + name: String! + phoneNumber: String +} + +type User { + userId: Int! + name: String! + status: UserStatus! + phoneNumber: String +} + +enum UserStatus { + CREATED + REMOVED +} +``` + +Available attributes: `Mutation`, `Query`, `Type`, `InterfaceType`, `InputType`, `Enum`, `EnumValue`, `Field`, `Arg`, `Autowire`, `Scalar`, `Cursor` From a45a2d54f2dc3cbe23a72f788c333807110d21b8 Mon Sep 17 00:00:00 2001 From: Jory Burson Date: Sat, 1 Mar 2025 08:35:50 -0500 Subject: [PATCH 16/40] Update venue.tsx (#1972) Amend tram directions per local attendee feedback --- src/app/conf/2025/venue.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/conf/2025/venue.tsx b/src/app/conf/2025/venue.tsx index cbffc86db0..07478f21f9 100644 --- a/src/app/conf/2025/venue.tsx +++ b/src/app/conf/2025/venue.tsx @@ -28,7 +28,7 @@ const HOW_TO_GET_TO_VENUE = [ { title: "Public Transportation", description: - 'Take tram 26 from Amsterdam Central Station to the "Rietlandpark" stop. The venue is a 5-minute walk from there.', + 'Take tram 26 from Amsterdam Central Station to the "Kattenburgerstraat" stop. The venue is in front of the tram stop.', icon: , }, { From 4da2ae80178e7ebd9e69a9ae2f18834c878693c5 Mon Sep 17 00:00:00 2001 From: Jeff Auriemma Date: Mon, 3 Mar 2025 05:07:38 -0500 Subject: [PATCH 17/40] Update Apollo Server code snippet (#1969) * Update Apollo Server code snippet Resolves #1078 * Prettier --- .../javascript/server/apollo-server.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/code/language-support/javascript/server/apollo-server.md b/src/code/language-support/javascript/server/apollo-server.md index d88aa3ef09..ac951b7f41 100644 --- a/src/code/language-support/javascript/server/apollo-server.md +++ b/src/code/language-support/javascript/server/apollo-server.md @@ -17,17 +17,18 @@ Then run `node server.js` with this code in `server.js`: ```js import { ApolloServer } from "@apollo/server" import { startStandaloneServer } from "@apollo/server/standalone" -import { buildSchema } from "graphql" -const schema = buildSchema(` - type Query { - hello: String - } -`) +// The GraphQL schema +const typeDefs = `#graphql + type Query { + hello: String + } +` +// A map of functions which return data for the schema. const resolvers = { Query: { - hello: () => "Hello World!", + hello: () => "world", }, } @@ -37,7 +38,6 @@ const server = new ApolloServer({ }) const { url } = await startStandaloneServer(server) - console.log(`🚀 Server ready at ${url}`) ``` From 14413f18784796aa1bc399900d2e70b7aab78932 Mon Sep 17 00:00:00 2001 From: Jem <6413628+jemgillam@users.noreply.github.com> Date: Thu, 6 Mar 2025 16:40:07 +0000 Subject: [PATCH 18/40] Local gathering "identity" advice (#1975) Co-authored-by: Benjie --- .../community/foundation/local-initiative.mdx | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/pages/community/foundation/local-initiative.mdx b/src/pages/community/foundation/local-initiative.mdx index 7eb9410a7b..fd479d983e 100644 --- a/src/pages/community/foundation/local-initiative.mdx +++ b/src/pages/community/foundation/local-initiative.mdx @@ -63,6 +63,38 @@ shall not be referred to as "official", but are still encouraged to follow the guidelines that are applicable (in particular, the Code of Conduct and Brand Guidelines must still be honoured). +### Local identity + +Locals are encouraged to use the name of their area in their Local name and identity. +The area chosen to be in the Local name should be meaningfully "local." It should +be culturally identified as a "local area," and at its largest should be a region that you +can reasonably commute within by public or private transport for an evening event. Often +this is a city, but we appreciate that's an imperfect simplification. + +
+ - GraphQL San Francisco +
+
+ - GraphQL California +
+ +If a brand or company wishes to be featured in the Local's identity, it must take secondary +precedence after the local area name and GraphQL: + +
+
+ - London GraphQL sponsored by Acme + - London GraphQL hosted by Acme and Brand X + - London GraphQL
sponsored by Acme +- London GraphQL
hosted by Acme and Brand X +
+
+ - Acme GraphQL + - Acme presents London GraphQL + - London GraphQL
presented by Acme +
+
+ ## Support Each approved Local is entitled to request the following support for each From b4b6cc96422c92009f42e5773e00e5ac8d7c0926 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goire=20Paris?= Date: Mon, 17 Mar 2025 20:12:25 +0100 Subject: [PATCH 19/40] Use "a" instead of "an" (#1976) It is followed by a consonant sound. --- src/pages/learn/schema.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/learn/schema.mdx b/src/pages/learn/schema.mdx index c47a6bf9d7..f38920d22a 100644 --- a/src/pages/learn/schema.mdx +++ b/src/pages/learn/schema.mdx @@ -58,7 +58,7 @@ The language is readable, but let's go over it so that we can have a shared voca - `name` and `appearsIn` are [fields](#object-types-and-fields) on the `Character` type. That means that `name` and `appearsIn` are the only fields that can appear in any part of a GraphQL query that operates on the `Character` type. - `String` is one of the built-in [Scalar types](#scalar-types). These are types that resolve to a single scalar value and can't have sub-selections in the query. We'll go over Scalar types more later. - `String!` means that the field is a [Non-Null type](#non-null), meaning the GraphQL service promises to give you a value whenever you query this field. In SDL, we represent those with an exclamation mark. -- `[Episode!]!` represents an [List type](#list) of `Episode` objects. When a List is Non-Null, you can always expect an array (with zero or more items) when you query the `appearsIn` field. In this case, since `Episode!` is also Non-Null within the list, you can always expect every item in the array to be an `Episode` object. +- `[Episode!]!` represents a [List type](#list) of `Episode` objects. When a List is Non-Null, you can always expect an array (with zero or more items) when you query the `appearsIn` field. In this case, since `Episode!` is also Non-Null within the list, you can always expect every item in the array to be an `Episode` object. Now you know what a GraphQL Object type looks like and how to read the basics of SDL. From b563486d4dd80a47d20ad04a889088e5b69e5460 Mon Sep 17 00:00:00 2001 From: NOORAS FATIMA ANSARI Date: Thu, 20 Mar 2025 02:39:07 +0530 Subject: [PATCH 20/40] Highlight text issue fix (#1979) --- src/globals.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/globals.css b/src/globals.css index fbaf495fe1..4d74f4b054 100644 --- a/src/globals.css +++ b/src/globals.css @@ -148,7 +148,7 @@ div[id^="headlessui-menu-items"] { } ::selection { - @apply bg-primary/50 dark:bg-primary; + @apply bg-primary/50 dark:bg-primary/50; } @media (prefers-color-scheme: dark) { From 99fcdf4f935e3009ea4dbc927101cd85ef73a18a Mon Sep 17 00:00:00 2001 From: Jem <6413628+jemgillam@users.noreply.github.com> Date: Wed, 2 Apr 2025 16:15:52 +0100 Subject: [PATCH 21/40] SME initiative: Add talk selection process to conf page and SME launch blog post (#1982) * Add talk selection process to conf page * Add last updated note * initial blog post commit * Finish editorial * add p tags * styles --- src/app/conf/2025/speakers.tsx | 94 +++++++++++++++++- .../Comparison_Method.gif | Bin 0 -> 744708 bytes .../index.mdx | 72 ++++++++++++++ 3 files changed, 161 insertions(+), 5 deletions(-) create mode 100644 src/pages/blog/2025-04-02-seeking-graphql-subject-matter-experts/Comparison_Method.gif create mode 100644 src/pages/blog/2025-04-02-seeking-graphql-subject-matter-experts/index.mdx diff --git a/src/app/conf/2025/speakers.tsx b/src/app/conf/2025/speakers.tsx index 686a26ed72..bb2f0c6975 100644 --- a/src/app/conf/2025/speakers.tsx +++ b/src/app/conf/2025/speakers.tsx @@ -21,7 +21,10 @@ function TabHeading({ function DatesTab() { return ( <> - Dates to Remember +

+ Last Updated: 2025-04-02 +

+ Dates to Remember