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
22 changes: 7 additions & 15 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,10 @@ Here's what the workflow for a new member looks like:
For a new member to join, they must create an issue asking to join and providing the information requested in our
[Join][join] page.

### 2. Create `src/content/members/<member-slug>.json`
### 2. Create `data/members/<member-id>.json`

After verifying that the prospective member's submitted data is correct, create a JSON file in
`src/content/members/<member-slug>.json` with this data. The member slug should contain no spaces.
`data/members/<member-id>.json` with all the member's information.

### 3. Add logo to `public/images/members`

Expand All @@ -69,15 +69,7 @@ magick logo.jpg -resize '>800x' -quality 99 -define webp:lossless=false -define

Remember that a corresponding `logo.webp.license` file must also be added.

### 4. Add role to `src/memberRoles.json`

The step which actually causes a member to show up on the website is adding them to `src/memberRoles.json`. For an
entry's key, use the same member slug you used in the JSON filename. Members should have a “Member” role by default,
though members can also have custom roles.

At this point, the member will show up on the website.

### 5. (Technically Optional) Add logo to `src/assets/images/members`
### 4. (Technically Optional) Add logo to `src/assets/images/members`

For a member's logo to show up on the homepage, it must be added to `src/assets/images/members/<slug>/minimal.svg`. This
should be a white- or greyscale-only version of the member's logo. If in doubt, check the other existing logos. Note
Expand All @@ -89,13 +81,13 @@ For the logo to actually show up on the homepage, you also need to edit `MemberL
appropriate place. Check if giving the `maxHeight` property a specific value will make the new logo fit in better
from a visually proportional point of view.

### 6. Add member logo to Google Drive
### 5. Add member logo to Google Drive

When onboarding members, we will receive logo files for those members. Make sure to contribute these logo files, and any
modified logo files you create, back to our [“Member Logos”][member-logos] Google Drive folder. If you don't have
access, contact @selviano.

### 7. Update member information in CRM
### 6. Update member information in CRM

Make sure the new member company's information is up to date in our [CRM][crm]. This is important in order to make sure
we don't use out of date data. If the company is not yet in the CRM, add it and apply the appropriate labels. If the
Expand All @@ -111,7 +103,7 @@ plan to renew, or (2) their report due date, plus a grace period of a month, hav

When removing a member, take the following steps:

* Remove the member from `src/memberRoles.json`, causing the member to no longer be displayed on the website
* Set `"active": false` in the member's JSON file, causing the member to no longer be displayed on the website
* Remove the member's logo from wherever it may be featured on the website, such as `MemberLogoBoard.astro`

Do not delete any of the member's files. The member's JSON file, as well as their logo assets, might be useful in the
Expand All @@ -132,7 +124,7 @@ that we can compactly archive a report into a single file.
To archive all reports, run this from the repository root:

```
$ ./src/memberData/bin/archiveMembers.ts
$ ./src/members/bin/archiveMembers.ts
```

This will archive reports using the following directory structure:
Expand Down
15 changes: 15 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,25 @@ the code, developer time, and gifts-in-kind that many Pledge member companies al
* **Just want to keep up to date?** Follow us on [Mastodon][mastodon] or [Bluesky][bsky].
* **Want to cite our work?** Click “cite this repository” in the top right.

---

Open Source Pledge is brought to you by [Sentry][sentry] and contributors.
The core team is:
[Vlad-Stefan Harbuz][vlad.website] (independent),
[Greg Kumparak][greg] (Sentry),
[Michael Selvidge][selviano] (Sentry), and
[Chad Whitacre][chad] (Sentry).
Design is by Sentry's in-house creative team,
[Studio 404][studio404].

[bsky]: https://bsky.app/profile/opensourcepledge.com
[chad]: https://chadwhitacre.com/
[contributors]: https://github.com/opensourcepledge/opensourcepledge.com/graphs/contributors
[cramer-author]: https://blog.sentry.io/authors/david-cramer/
[crisis]: https://openpath.quest/2024/the-open-source-sustainability-crisis/
[fosdem-talk]: https://www.youtube.com/watch?v=UarZwUjFJpI
[fosdem]: https://fosdem.org/2025/
[greg]: https://www.kumparak.com/
[issues]: https://github.com/opensourcepledge/opensourcepledge.com/issues
[join]: https://opensourcepledge.com/join/
[launch-ticket]: https://github.com/opensourcepledge/opensourcepledge.com/issues/4
Expand All @@ -51,7 +64,9 @@ the code, developer time, and gifts-in-kind that many Pledge member companies al
[openpath]: https://openpath.quest/
[osp]: https://opensourcepledge.com
[pledgephil]: https://vlad.website/the-philosophy-of-the-open-source-pledge/
[selviano]: https://github.com/selviano
[sentry-blog-post]: https://blog.sentry.io/join-the-pledge/
[sentry]: https://sentry.io/welcome/
[slack]: https://join.slack.com/t/opensourcepledge/shared_invite/zt-33qxp7jsz-CJeYxDBnc2Y3FuZvGCHLMw
[studio404]: https://sentry.design/
[vlad.website]: https://vlad.website/
5 changes: 1 addition & 4 deletions REUSE.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,13 @@ path = [
"CNAME",
"REUSE.toml",
"astro.config.mjs",
"members.csv",
"data/members/*",
"package-lock.json",
"package.json",
"public/.well-known/atproto-did",
"public/images/example-members/*",
"public/robots.txt",
"src/cache/jobSet.json",
"src/content/members/*",
"src/env.d.ts",
"src/memberRoles.json",
"tsconfig.json",
]
SPDX-FileCopyrightText = "NONE"
Expand Down
2 changes: 1 addition & 1 deletion bin/make-generated-resources
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ done

echo 'Generating files'

grand_total=$(./src/memberData/bin/getGrandTotalRaised.ts)
grand_total=$(./src/members/bin/getGrandTotalRaised.ts)
sed -i "s/\\\$[^<]\\+/${grand_total}/" public/generated/templates/opengraph.svg

echo 'Generated SVG file'
Expand Down
19 changes: 4 additions & 15 deletions contrib/ethicalads/makeAdData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,11 @@

// Must be run in repository root.

import fs from 'fs';
import memberRoles from '../../src/memberRoles.json';
const memberIds = Object.keys(memberRoles);
import { getMembers } from '../../src/members/common.ts';
const members = getMembers();

console.log('id,name,image,headline,text,cta');

for (const id of memberIds) {
const localPath = `./src/content/members/${id}.json`;

let member = undefined;
try {
member = JSON.parse(fs.readFileSync(localPath).toString());
} catch (e) {
console.error(`ERROR: could not load member data at ${localPath}`, e);
process.exit(1);
}

console.log(`${id},${member["name"]},ad-${id}.png,No burnout.,Fewer vulns. Pay maintainers like ${member["name"]} does!,Join the Open Source Pledge. 💃🏻 `);
for (const member of members) {
console.log(`${member.id},${member.name},ad-${member.id}.png,No burnout.,Fewer vulns. Pay maintainers like ${member.name} does!,Join the Open Source Pledge. 💃🏻 `);
}
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"id": "ag-grid",
"role": "Member",
"active": true,
"name": "AG Grid",
"description": "AG Grid is the best JavaScript Data Grid in the world, and now AG Charts is the best JavaScript Charting Library in the world, too. Since our foundation in 2016, we've always been strong supporters of the Open Source ecosystem, and we're proud to formalise this by joining the Open Source Pledge.",
"shortDescription": "Since our foundation in 2016, we've always been strong supporters of the Open Source ecosystem.",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"id": "antithesis",
"role": "Innovator",
"active": true,
"name": "Antithesis",
"description": "We build an autonomous testing platform. We rely heavily on the countless hours of work contributed by OSS maintainers worldwide for everything from our internal Nix tooling to core components of our product like our deterministic hypervisor, a fork of FreeBSD.",
"shortDescription": "We rely heavily on the countless hours of work contributed by OSS maintainers worldwide.",
Expand Down
3 changes: 3 additions & 0 deletions src/content/members/astral.json → data/members/astral.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"id": "astral",
"role": "Innovator",
"active": true,
"name": "Astral",
"description": "Open source software is at the heart of Astral. We're excited to establish a precedent for giving early and often. We hope to encourage, empower, and thank open source maintainers that inspire us.",
"shortDescription": "We're excited to establish a precedent for giving early and often.",
Expand Down
3 changes: 3 additions & 0 deletions src/content/members/bolt.json → data/members/bolt.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"id": "bolt",
"role": "Innovator",
"active": true,
"name": "Bolt",
"description": "Bolt lets you prompt, run, edit, and deploy full-stack web and mobile apps. We depend on Open Source to build our products. We also have a close relationship with Open Source teams. They are avid users of our tools and help us improve them in a close feedback loop. We have been involved in key projects, hiring maintainers of infrastructure projects like Vite and Vitest and organizing ViteConf, a free online event for the Web community. We're happy to continue giving back to the Open Source community by joining the Open Source Pledge.",
"shortDescription": "We're happy to continue giving back to the Open Source community by joining the Open Source Pledge.",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"id": "browserbase",
"role": "Innovator",
"active": false,
"name": "Browserbase",
"description": "Headless browsers that work everywhere, every time. Control fleets of stealth browsers to build reliable browser automations. We believe in the power of open source software and its impact on the growth of the tech community.",
"shortDescription": "We believe in the power of open source software and its impact on the growth of the tech community.",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"id": "buttondown",
"role": "Innovator",
"active": true,
"name": "Buttondown",
"description": "Buttondown is the easiest way to send emails and grow your audience.",
"shortDescription": "We — and you, even if you don't know it — would be nowhere without open source software.",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"id": "chieftools",
"role": "Innovator",
"active": true,
"name": "Chief Tools",
"description": "Building, deploying and monitoring. Our tools supporting your applications.",
"shortDescription": "We're joining the Open Source Pledge because our business is built on and with open-source software.",
Expand Down
3 changes: 3 additions & 0 deletions src/content/members/convex.json → data/members/convex.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"id": "convex",
"role": "Member",
"active": true,
"name": "Convex",
"description": "Like every software company, Convex is built extensively on open source software. The developers who maintain these open source projects pour incredible amounts of time, expertise, and care into their work–usually as a labor of love. It's time for beneficiary companies to do what they can to foster more sustainable stewardship of OSS projects.",
"shortDescription": "It's time for beneficiary companies to do what they can to foster more sustainable stewardship of OSS projects.",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"id": "foxley-talent",
"role": "Member",
"active": true,
"name": "Foxley Talent",
"description": "Foxley Talent is a specialist recruiter for the Python and Django ecosystem. We operate in the United States, Europe and in the UK. We have supported companies to hire Python and Django Developers since 2008 and can help your business to find your next great hire. We are regulars at DjangoCon in the United States and in Europe providing our clients with unique access to the people we meet during the conferences. Our mission is to become THE go-to recruiter for all Python and Django Developer hiring within the regions we support giving back to the community whenever we can along the way.",
"shortDescription": "Our mission is to become THE go-to recruiter for all Python and Django Developer hiring within the regions we support giving back to the community whenever we can along the way.",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"id": "frontend-masters",
"role": "Innovator",
"active": true,
"name": "Frontend Masters",
"description": "Your path to senior developer and beyond! 🚀 In-depth frontend & fullstack courses.",
"shortDescription": "Many maintainers have considered quitting due to burnout. We want to shine a light on this threat to open source.",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"id": "gitbook",
"role": "Member",
"active": true,
"name": "GitBook",
"description": "GitBook is a modern documentation platform that empowers teams to create and publish API and product documentation—often the first touchpoint for users exploring a feature or product. Understanding that great documentation is as vital as the product itself, GitBook transforms static pages into dynamic, AI-powered knowledge experiences that evolve alongside your product. With an intuitive interface and seamless integrations, GitBook makes it easy to keep documentation fresh, relevant, and genuinely engaging.",
"shortDescription": "GitBook is a modern documentation platform that empowers teams to create and publish API and product documentation.",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"id": "gitbutler",
"role": "Innovator",
"active": true,
"name": "GitButler",
"description": "GitButler is built off a vast array of amazing open source projects, such as SvelteKit, Tauri, Rails and more. We believe that it's important to do what we can to support maintainers and help make the Open Source community sustainable.",
"shortDescription": "We believe that it's important to do what we can to support maintainers and help make the Open Source community sustainable.",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"id": "herodevs",
"role": "Innovator",
"active": true,
"name": "HeroDevs",
"description": "Drop-in replacements for deprecated open source Software that keep you secure, compliant, and compatible.",
"shortDescription": "We believe it's essential to give back to the community that powers so much of our work.",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"id": "httptoolkit",
"role": "Innovator",
"active": true,
"name": "HTTP Toolkit",
"description": "HTTP Toolkit is an open-source tool for debugging, testing & building with HTTP. Like all modern software projects, it stands on the shoulders of a huge variety of other open-source components. It aims to return a substantial portion of revenue back to these key dependencies, to fund maintainers, ensure each project's longevity, and help grow the open-source community.",
"shortDescription": "Like all modern software projects, we stand on the shoulders of a huge variety of other open-source components.",
Expand Down
3 changes: 3 additions & 0 deletions src/content/members/keygen.json → data/members/keygen.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"id": "keygen",
"role": "Innovator",
"active": true,
"name": "Keygen",
"description": "Keygen is a Fair Source software licensing and distribution API. Being built on top of Open Source, we strive to give back to the community whenever possible with our own Open Source projects as well as our funds.",
"shortDescription": "Being built on top of Open Source, we strive to give back to the community whenever possible with our own Open Source projects as well as our funds.",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"id": "laravel",
"role": "Innovator",
"active": false,
"name": "Laravel",
"description": "Laravel is the PHP framework for web artisans. Participating in the Open Source Pledge is just one of the ways we continue to invest in the future of open source. By supporting these projects—both financially and through direct contributions—we hope to ensure that the tools developers rely on remain powerful, reliable, and innovative.",
"shortDescription": "Participating in the Open Source Pledge is just one of the ways we continue to invest in the future of open source.",
Expand Down
3 changes: 3 additions & 0 deletions src/content/members/pixee.json → data/members/pixee.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"id": "pixee",
"role": "Innovator",
"active": false,
"name": "Pixee",
"description": "We build an automated product security engineer for security and development teams. We automatically fix vulnerabilities, triage code scan results, and harden code to give teams more time to focus on the work that matters. And we believe in Open Source! We leverage tools from the community and strive to give back when possible. Through donations and direct contributions to OSS projects and foundations. ",
"shortDescription": "We believe in Open Source! We leverage tools from the community and strive to give back when possible.",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"id": "platformatic",
"role": "Innovator",
"active": true,
"name": "Platformatic",
"description": "Platformatic is the application platform for building, managing, and scaling Node.js applications. Platformatic eliminates the need for manual scaling, reduces the risk of unpredictable downtimes, and provides detailed, real-time Node-specific insights, providing engineering teams with the visibility, control, and best-practices needed to operate effortlessly.",
"shortDescription": "Contributing to open source projects fosters a strong, collaborative community, benefiting everyone involved.",
Expand Down
3 changes: 3 additions & 0 deletions src/content/members/posit.json → data/members/posit.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"id": "posit",
"role": "Member",
"active": true,
"name": "Posit",
"description": "Posit creates open-source software like RStudio, Shiny, and Quarto to advance data science, research, and technical communication. We're deeply committed to sustaining open-source ecosystems by supporting projects and organizations that drive innovation. Joining the Open Source Pledge reinforces our dedication to the community and our role as stewards of open-source development.",
"shortDescription": "We're deeply committed to sustaining open-source ecosystems by supporting projects and organizations that drive innovation. Joining the Open Source Pledge reinforces our dedication to the community.",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"id": "prefect",
"role": "Innovator",
"active": true,
"name": "Prefect",
"description": "Prefect is an open source workflow orchestration framework, supporting a wide range of workflow architectures including batch, event-driven, fully dynamic, and hybrid architecture.",
"shortDescription": "By supporting these projects, we're not just giving back—we're investing in the future of open source.",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"id": "private-packagist",
"role": "Innovator",
"active": true,
"name": "Private Packagist",
"description": "Private Packagist is a PHP Composer package repository. It's built with the help of a large number of open-source software. As open-source maintainers ourselves we wish to do our part in helping the entire ecosystem of open-source software thrive.",
"shortDescription": "As open-source maintainers ourselves we wish to do our part in helping the entire ecosystem of open-source software thrive.",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"id": "pydantic",
"role": "Innovator",
"active": true,
"name": "Pydantic Logfire",
"description": "<p>The Pydantic Stack gives developers visibility to stay in flow, from local to production, from AI to API.</p><p><strong>Pydantic Validation</strong> is the most widely used data validation library for Python—downloaded millions of times daily by thousands of developers worldwide. It enforces type annotations, plays nicely with type checkers and IDEs, and is both fast and extensible.</p><p><strong>Pydantic AI</strong> is a Python agent framework built to help you confidently ship production-grade applications with Generative AI. Type-safe, model-agnostic, and ready for real work.</p><p><strong>Pydantic Logfire</strong> is an observability platform built on OpenTelemetry. With SDKs for Python, TypeScript, and Rust, Logfire provides comprehensive observability for any workload in any language—with first-class support for AI, from LLM API calls to agent frameworks.</p>",
"shortDescription": "For too long the open source ecosystem has been taken for granted. We're proud to be part of the movement to change that.",
Expand Down
3 changes: 3 additions & 0 deletions src/content/members/rector.json → data/members/rector.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
{
"id": "rector",
"role": "Member",
"active": false,
"name": "Rector",
"description": "Rector is a PHP tool that you can run on any PHP project to get an instant upgrade or automated refactoring. It gives you safety and lightning speed, and helps you with PHP upgrades, framework upgrades, and improving your code quality. Rector is alive thanks to Open Source projects and the developers behind those projects.",
"shortDescription": "Rector is alive thanks to Open Source projects and the developers behind those projects.",
Expand Down
Loading