Skip to content

Latest commit

 

History

History
195 lines (173 loc) · 7.88 KB

sponsorship.md

File metadata and controls

195 lines (173 loc) · 7.88 KB
layout title
default.html
Sponsorship

Sponsorship

You can now help fund the Servo project by sponsoring us on GitHub or Open Collective.

Note that we will stop accepting donations on LFX soon. Any funds left over will also be transferred to the Servo project, but recurring donations will be cancelled, so if you would like to continue your recurring donation, please do so on GitHub or Open Collective.

Both one-time and monthly donations are appreciated, and over 80% of the amount will go directly towards improving Servo. The way the funds are used is decided in public via the Technical Steering Committee, but to give you a sense of scale…

  • at 100 USD/month, we can cover the costs of our website and other core infrastructure
  • at 1,000 USD/month, we can set up dedicated servers for faster Windows and macOS builds, better test coverage and reliability, and new techniques like fuzzing and performance testing
  • at 10,000 USD/month, we can sponsor a developer to make Servo their top priority

If your organization is interested in sponsoring Servo's development or the implementation of a particular feature, reach out to us at [email protected].


Servo Project Fund

The purpose of the Servo Project Fund is to raise, budget, and spend funds in support of the Servo Project.

The Fund is governed by the Directed Fund’s Governing Board at the Linux Foundation Europe. The Board is composed of Members, together with representation from the Linux Foundation Europe and the Technical Steering Committee.

There are currently no members of the Linux Foundation Europe Directed Fund’s Governing Board.

If your organization is interested in becoming a member, please contact us at [email protected] or enroll at the Linux Foundation member enrollment page.

Donation fees

Donating via GitHub Sponsors is better for Servo than donating via Open Collective. 96% of the amount you donate goes to Servo, unless you are sponsoring us on behalf of a GitHub organization, where a fee will be added on top of the amount during checkout. Either way, over 90% goes to Servo.

Fees for sponsoring... 5 USD 10 USD 20 USD 50 USD 100 USD 1000 USD
as an individual on GitHub
on behalf of a GitHub org

The fees for donations on Open Collective depend on how much you donate in a single transaction, and what payment method you use:

  • Donating at least 5 USD at a time ensures that over 80% goes to Servo
  • Donating at least 50 USD at a time ensures that over 90% goes to Servo
  • Donating with Stripe is almost always better for Servo than donating with PayPal
Fees for... 5 USD 10 USD 20 USD 50 USD 100 USD 1000 USD
Stripe (ACH)
Stripe (card, USA)
Stripe (card, international)
Stripe (card, worst case)
PayPal (USA)
PayPal (international)
<script> const hostFee = x => 0.04 * x; const donorCheckoutSurcharges = { "as an individual on GitHub": x => 0, "on behalf of a GitHub org": x => 0.06 * x, }; const paymentProcessorFees = { // Stripe for USA merchants // // - > Payments > Bank debits and transfers (for ACH) // - > Payments > Cards and wallets (for card) // - plus “international cards” (for international) // - plus “currency conversion” too (for worst case) // - no “manually entered cards” "Stripe (ACH)": x => 30 + 0.008 * x, "Stripe (card, USA)": x => 30 + 0.029 * x, "Stripe (card, international)": x => 30 + (0.029 + 0.015) * x, "Stripe (card, worst case)": x => 30 + (0.029 + 0.015 + 0.01) * x, // PayPal for USA merchants // // > Commercial Transaction Rates // - > Fixed fee for commercial transactions (based on currency received) > US dollar // - plus > Standard rate for receiving domestic transactions > PayPal Guest Checkout // - currently same as “PayPal Checkout” // - plus > Additional percentage-based fee for international commercial transactions // (for international) "PayPal (USA)": x => 49 + 0.0349 * x, "PayPal (international)": x => 49 + (0.0349 + 0.015) * x, }; function updateGithubSponsorsTable() { const table = document.querySelector("#_github_sponsors_fees table"); const exampleDonations = [...table.rows[0].cells].slice(1) .map(x => parseInt(x.textContent, 10) * 100); for (const row of [...table.rows].slice(1)) { const donor = row.cells[0].textContent; for (const [i, donation] of exampleDonations.entries()) { const surcharge = donorCheckoutSurcharges[donor](donation); const total = donation + surcharge; const fee = surcharge + hostFee(donation); // not hostFee(total)! const net = total - fee; const totalText = (Math.ceil(total) / 100).toFixed(2); const feeText = (Math.ceil(fee) / 100).toFixed(2); const netText = (Math.ceil(net) / 100).toFixed(2); const feePercentText = (100 * fee / total).toFixed(1); const netPercentText = (100 * net / total).toFixed(1); const totalClass = surcharge > 0 ? "_total _has_surcharge" : "_total"; const netClass = net / total >= 0.96 ? "_net _net96" : "_net"; row.cells[i + 1].innerHTML = ` ${totalText}
− ${feeText} (${feePercentText}%)
= ${netText} (${netPercentText}%) `; } } } function updateOpenCollectiveTable() { const table = document.querySelector("#_open_collective_fees table"); const exampleDonations = [...table.rows[0].cells].slice(1) .map(x => parseInt(x.textContent, 10) * 100); for (const row of [...table.rows].slice(1)) { const paymentProcessor = row.cells[0].textContent; for (const [i, donation] of exampleDonations.entries()) { const fee = paymentProcessorFees[paymentProcessor](donation) + hostFee(donation); const net = donation - fee; const feeText = (Math.ceil(fee) / 100).toFixed(2); const netText = (Math.ceil(net) / 100).toFixed(2); const feePercentText = (100 * fee / donation).toFixed(1); const netPercentText = (100 * net / donation).toFixed(1); const netClass = net / donation >= 0.9 ? "_net _net90" : "_net"; row.cells[i + 1].innerHTML = ` − ${feeText} (${feePercentText}%)
= ${netText} (${netPercentText}%) `; } } } updateGithubSponsorsTable(); updateOpenCollectiveTable(); </script> <style> ._note { margin: 1em 1em; border-left: 1px solid; padding-left: 1em; opacity: 0.75; } ._donation_fees { overflow-x: auto; } ._donation_fees table { width: max-content; } ._donation_fees tr > *:not(#specificity) { text-align: left; } ._donation_fees tr > *:nth-child(1) { /* Freeze the first cell of each row. */ position: sticky; left: 0; /* Hide other cells that overlap when scrolling. */ background: #121619; z-index: 1; } ._total { opacity: 0.75; } ._has_surcharge { opacity: 1; color: #FAAE30; } ._fee { opacity: 0.75; } ._net { opacity: 0.75; } ._net96, ._net90 { opacity: 1; color: #42BF64; } </style>