From f6e5188d226c6f1c49dc14d85591967adfb23352 Mon Sep 17 00:00:00 2001 From: Carter Anderson Date: Mon, 15 Jan 2024 14:02:38 -0800 Subject: [PATCH 1/6] Bevy Foundation: announcement and foundation pages --- content/donate/_index.md | 6 + content/donate/faq/index.md | 29 ++ content/donate/foundation-sponsors.toml | 0 content/donate/individual-sponsors.toml | 123 ++++++ content/donate/metrics.toml | 3 + content/donate/tiers.toml | 112 ++++++ content/foundation/_index.md | 6 + content/foundation/budget/index.md | 36 ++ content/foundation/bylaws/index.md | 273 +++++++++++++ .../meeting-minutes/2024-02-03/index.md | 107 +++++ content/foundation/meeting-minutes/_index.md | 7 + content/news/2023-03-06-bevy-0.10/index.md | 6 +- content/news/2023-07-09-bevy-0.11/index.md | 6 +- .../2023-08-10-bevys-third-birthday/index.md | 4 +- content/news/2023-11-04-bevy-0.12/index.md | 6 +- .../bevy_foundation.svg | 194 +++++++++ .../news/2024-03-11-bevy-foundation/index.md | 161 ++++++++ generate-community/src/bin/generate.rs | 2 +- sass/components/_sponsors.scss | 81 ++-- sass/pages/_donate.scss | 234 +++++++++++ sass/pages/_features.scss | 14 - sass/pages/_foundation.scss | 9 + sass/site.scss | 1 + static/assets/bevy_foundation.svg | 194 +++++++++ static/assets/sponsor_badges/bronze.svg | 151 +++++++ static/assets/sponsor_badges/diamond.svg | 151 +++++++ static/assets/sponsor_badges/gold.svg | 151 +++++++ static/assets/sponsor_badges/patron.svg | 151 +++++++ static/assets/sponsor_badges/platinum.svg | 151 +++++++ static/assets/sponsor_badges/silver.svg | 151 +++++++ static/assets/sponsor_badges/titanium.svg | 151 +++++++ static/assets/{ => sponsors}/BFH.png | Bin static/assets/{ => sponsors}/Encultured.png | Bin .../{ => sponsors}/Foresight_Spatial_Labs.svg | 0 static/assets/sponsors/Pixeljam.png | Bin 0 -> 378 bytes static/assets/{ => sponsors}/VPSServer.png | Bin .../{ => sponsors}/Wunder_Software_GmbH.png | Bin .../{ => sponsors}/agile_perception.png | Bin static/assets/{ => sponsors}/embark.png | Bin static/assets/{ => sponsors}/keygen.png | Bin static/assets/{ => sponsors}/roids_logo.png | Bin static/assets/sponsors/timclicks.png | Bin 0 -> 17859 bytes .../assets/{ => sponsors}/vertex_studio.png | Bin static/donate.js | 16 + templates/donate-community.html | 209 ++++++++++ templates/donate.html | 368 ++++++++---------- templates/foundation.html | 136 +++++++ templates/index.html | 142 +------ templates/individual-sponsors.html | 89 +++++ templates/layouts/base.html | 3 +- templates/macros/numbers.html | 2 + templates/page.html | 5 + templates/sponsors.html | 100 +++++ templates/sponsorship-pledge.html | 132 ++++--- 54 files changed, 3424 insertions(+), 449 deletions(-) create mode 100644 content/donate/_index.md create mode 100644 content/donate/faq/index.md create mode 100644 content/donate/foundation-sponsors.toml create mode 100644 content/donate/individual-sponsors.toml create mode 100644 content/donate/metrics.toml create mode 100644 content/donate/tiers.toml create mode 100644 content/foundation/_index.md create mode 100644 content/foundation/budget/index.md create mode 100644 content/foundation/bylaws/index.md create mode 100644 content/foundation/meeting-minutes/2024-02-03/index.md create mode 100644 content/foundation/meeting-minutes/_index.md create mode 100644 content/news/2024-03-11-bevy-foundation/bevy_foundation.svg create mode 100644 content/news/2024-03-11-bevy-foundation/index.md create mode 100644 sass/pages/_foundation.scss create mode 100644 static/assets/bevy_foundation.svg create mode 100644 static/assets/sponsor_badges/bronze.svg create mode 100644 static/assets/sponsor_badges/diamond.svg create mode 100644 static/assets/sponsor_badges/gold.svg create mode 100644 static/assets/sponsor_badges/patron.svg create mode 100644 static/assets/sponsor_badges/platinum.svg create mode 100644 static/assets/sponsor_badges/silver.svg create mode 100644 static/assets/sponsor_badges/titanium.svg rename static/assets/{ => sponsors}/BFH.png (100%) rename static/assets/{ => sponsors}/Encultured.png (100%) rename static/assets/{ => sponsors}/Foresight_Spatial_Labs.svg (100%) create mode 100644 static/assets/sponsors/Pixeljam.png rename static/assets/{ => sponsors}/VPSServer.png (100%) rename static/assets/{ => sponsors}/Wunder_Software_GmbH.png (100%) rename static/assets/{ => sponsors}/agile_perception.png (100%) rename static/assets/{ => sponsors}/embark.png (100%) rename static/assets/{ => sponsors}/keygen.png (100%) rename static/assets/{ => sponsors}/roids_logo.png (100%) create mode 100644 static/assets/sponsors/timclicks.png rename static/assets/{ => sponsors}/vertex_studio.png (100%) create mode 100644 static/donate.js create mode 100644 templates/donate-community.html create mode 100644 templates/foundation.html create mode 100644 templates/individual-sponsors.html create mode 100644 templates/macros/numbers.html create mode 100644 templates/page.html create mode 100644 templates/sponsors.html diff --git a/content/donate/_index.md b/content/donate/_index.md new file mode 100644 index 0000000000..81e9fdf8f9 --- /dev/null +++ b/content/donate/_index.md @@ -0,0 +1,6 @@ ++++ +title = "Donate" +template = "donate.html" +[extra] +header_message = "Donate" ++++ \ No newline at end of file diff --git a/content/donate/faq/index.md b/content/donate/faq/index.md new file mode 100644 index 0000000000..333cdd0cef --- /dev/null +++ b/content/donate/faq/index.md @@ -0,0 +1,29 @@ ++++ +title = "Donate FAQ" +template = "page.html" ++++ + +## I donated at a level that lets me add my name / link / logo to the credits. How do I do that? + +Tiers that support names and links allow you to specify them directly in the Stripe form. If you did not do this, contact us at with that information and we'll get you added! + +Tiers that support logos require reaching out to . Send us your logo and your link and we'll add you! + +## How do I cancel my donation subscription? + +If you paid through Stripe (currently the only way to set up a donation subscription), just [visit this link](https://billing.stripe.com/p/login/7sI3ee5OXbI7dgIaEE) and enter the email you used to set up the subscription. + +## I sponsored but the metrics / names / logos on the donate page haven't updated! + +This isn't automated (yet!). For now ... bear with us. We try to update these as quickly as possible. + +## How are the metrics on the donation page calculated? + +The monthly dollar amount is the "raw pledged amount for active monthly donations". This means two things: + +1. This number is "pre Stripe fees". This includes credit card fees and Stripes "processing fees", which vary per payment type. +2. This is the amount we _expect_ to get each month. In practice the payouts will be less, once chargebacks and cancellations are processed. + +## Why doesn't the Individual Sponsors section / the "old way to sponsor" contribute to the metrics on the donate page? + +Primarily this is because we don't want to conflate Bevy Foundation funds with other funds. The Bevy Foundation does not have direct access to these funds, and for "reporting / transparency" reasons, conflating the two contexts would be confusing for the public (and likely government agencies as well). We plan on deprecating the Individual Sponsors section in the future. It exists today as a courtesy to ensure we aren't quickly changing the rules on our current sponsors. diff --git a/content/donate/foundation-sponsors.toml b/content/donate/foundation-sponsors.toml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/content/donate/individual-sponsors.toml b/content/donate/individual-sponsors.toml new file mode 100644 index 0000000000..38acea74fc --- /dev/null +++ b/content/donate/individual-sponsors.toml @@ -0,0 +1,123 @@ +[[sponsor]] +name = "Foresight Spatial Labs" +image = "Foresight_Spatial_Labs.svg" +link = "https://www.foresightmining.com" +amount = 4000 +style = "height: 140px" +source = "direct" +recipient = "cart" + +[[sponsor]] +name = "Embark Studios" +image = "embark.png" +link = "https://www.embark-studios.com" +amount = 1000 +source = "github" +recipient = "cart" + +[[sponsor]] +name = "Encultured.ai" +image = "Encultured.png" +link = "https://www.encultured.ai/" +amount = 1000 +style = "max-height: 60px" +source = "github" +recipient ="cart" + +[[sponsor]] +name = "Roids" +image = "roids_logo.png" +link = "https://playroids.com" +amount = 300 +style = "max-height: 130px" +source = "github" +recipient ="cart" + +[[sponsor]] +name = "Agile Perception" +image = "agile_perception.png" +link = "https://agileperception.com" +amount = 100 +source = "github" +recipient ="cart" + +[[sponsor]] +name = "Vertex Studio" +image = "vertex_studio.png" +link = "https://vertexstudio.co" +amount = 100 +source = "github" +recipient ="cart" + +[[sponsor]] +name = "keygen" +image = "keygen.png" +link = "https://keygen.sh" +amount = 100 +source = "github" +recipient ="cart" + +[[sponsor]] +name = "VPSServer" +image = "VPSServer.png" +link = "https://www.vpsserver.com" +amount = 100 +source = "github" +recipient ="cart" + +[[sponsor]] +name = "Wunder Software GmbH" +image = "Wunder_Software_GmbH.png" +link = "https://wunder.software" +amount = 100 +source = "github" +recipient ="cart" + +[[sponsor]] +name = "Basement Flood Helpers" +image = "BFH.png" +link = "https://basementfloodhelpers.com" +amount = 100 +source = "github" +recipient ="cart" + +[[sponsor]] +name = "pixeljam" +image = "Pixeljam.png" +link = "https://pixeljam.com" +amount = 100 +source = "github" +recipient ="cart" +account = "abledbody" + +[[sponsor]] +name = "timclicks" +image = "timclicks.png" +link = "https://timclicks.dev" +amount = 100 +source = "github" +recipient ="cart" + +[[sponsor]] +past = true +name = "Futurewei" +recipient ="cart" +amount = 12500 + +[[sponsor]] +past = true +name = "Legion Labs" +recipient ="cart" +amount = 1000 + +[[sponsor]] +past = true +name = "Striked" +recipient ="cart" +amount = 100 + +[[sponsor]] +past = true +name = "Metabuild" +recipient ="cart" +amount = 100 \ No newline at end of file diff --git a/content/donate/metrics.toml b/content/donate/metrics.toml new file mode 100644 index 0000000000..02d9d2b0d1 --- /dev/null +++ b/content/donate/metrics.toml @@ -0,0 +1,3 @@ +sponsors = 0 +members = 0 +monthly_dollars = 0 \ No newline at end of file diff --git a/content/donate/tiers.toml b/content/donate/tiers.toml new file mode 100644 index 0000000000..006fb88d02 --- /dev/null +++ b/content/donate/tiers.toml @@ -0,0 +1,112 @@ +# Note: these should be listed in order from lowest to highest + +[[tier]] +name = "Bronze" +amount = 5 +sponsor_tier = false +icon = "/assets/sponsor_badges/bronze.svg" +donate_link = "https://buy.stripe.com/5kA7vS7tPeXJ38A7ss" + +[[tier]] +name = "Silver" +amount = 10 +sponsor_tier = false +icon = "/assets/sponsor_badges/silver.svg" +donate_link = "https://buy.stripe.com/9AQ5nK01neXJ4cE001" + +[[tier]] +name = "Gold" +amount = 25 +sponsor_tier = false +icon = "/assets/sponsor_badges/gold.svg" +donate_link = "https://buy.stripe.com/9AQ5nKaG1cPB5gI28a" +reward_name = true + +[[tier]] +name = "Platinum" +amount = 50 +sponsor_tier = false +icon = "/assets/sponsor_badges/platinum.svg" +donate_link = "https://buy.stripe.com/eVa3fC4hD2aX7oQeUX" +reward_name = true + +[[tier]] +name = "Titanium" +amount = 100 +sponsor_tier = false +icon = "/assets/sponsor_badges/titanium.svg" +donate_link = "https://buy.stripe.com/5kAbM8cO9g1NfVm004" +reward_name = true +reward_link = true + +[[tier]] +name = "Diamond" +amount = 250 +sponsor_tier = false +icon = "/assets/sponsor_badges/diamond.svg" +donate_link = "https://buy.stripe.com/6oEaI49BX16T9wY4gl" +reward_logo = true +reward_link = true + +[[tier]] +name = "Corporate Bronze" +amount = 500 +sponsor_tier = true +icon = "/assets/sponsor_badges/bronze.svg" +donate_link = "https://buy.stripe.com/bIY7vSeWhaHt7oQ7sy" +reward_logo = true +reward_link = true + +[[tier]] +name = "Corporate Silver" +amount = 1000 +sponsor_tier = true +icon = "/assets/sponsor_badges/silver.svg" +donate_link = "https://buy.stripe.com/14kcQceWh8zleRi4gn" +reward_logo = true +reward_link = true + +[[tier]] +name = "Corporate Gold" +amount = 2000 +sponsor_tier = true +icon = "/assets/sponsor_badges/gold.svg" +donate_link = "https://buy.stripe.com/fZecQcdSd6rd4cEfZ6" +reward_logo = true +reward_link = true + +[[tier]] +name = "Corporate Platinum" +amount = 4000 +sponsor_tier = true +icon = "/assets/sponsor_badges/platinum.svg" +donate_link = "https://buy.stripe.com/fZe03q29vdTFgZq6ox" +reward_logo = true +reward_link = true + +[[tier]] +name = "Corporate Titanium" +amount = 6000 +sponsor_tier = true +icon = "/assets/sponsor_badges/titanium.svg" +donate_link = "https://buy.stripe.com/bIY03qaG1eXJ8sU8wG" +reward_logo = true +reward_link = true + +[[tier]] +name = "Corporate Diamond" +amount = 8000 +sponsor_tier = true +icon = "/assets/sponsor_badges/diamond.svg" +donate_link = "https://buy.stripe.com/00gdUg4hD6rddNe7sD" +reward_logo = true +reward_link = true + +[[tier]] +name = "Patron" +amount = 13000 +sponsor_tier = true +icon = "/assets/sponsor_badges/patron.svg" +donate_link = "mailto:bevyengine@gmail.com" +reward_logo = true +reward_link = true diff --git a/content/foundation/_index.md b/content/foundation/_index.md new file mode 100644 index 0000000000..9e2cfd668c --- /dev/null +++ b/content/foundation/_index.md @@ -0,0 +1,6 @@ ++++ +title = "Bevy Foundation" +template = "foundation.html" +[extra] +header_message = "Foundation" ++++ diff --git a/content/foundation/budget/index.md b/content/foundation/budget/index.md new file mode 100644 index 0000000000..39f004b574 --- /dev/null +++ b/content/foundation/budget/index.md @@ -0,0 +1,36 @@ ++++ +title = "2024 Budget" +template = "news-page.html" +date = 2024-03-08 +[extra] +author = "Bevy Foundation Board of Directors" +header_message = "Foundation Budget" ++++ + +It is hard to estimate how much money we'll have to work with this year, so for now our budget is pretty straightforward: + +* **Spend ~90% of our income to bring Alice on as a full-time maintainer, until she is paid at our target salary of $150,000.** +* **Use the remaining ~10% to build up some buffer funds** + +## Hire Alice as a Full-Time Maintainer + +We have exactly one focus for the short term: bring Alice on full-time. For years, Alice has dedicated _significant_ time to the project as a Maintainer. She has been our primary project manager: wrangling issues, [keeping the merge train running](https://mastodon.social/deck/tags/bevymergetrain), connecting developers to the right parts of the project, and doing the work that ensures we can harness and enable our ever increasing developer community. Not to mention her extensive technical contributions and documentation work! + +If you have participated in Bevy's development, you are probably intimately aware of two things: + +1. Project management is our bottleneck. +2. Alice is a world-class project manager. + +In addition to performing the general "project management" role, Alice has the following specific priorities when she starts full-time: + +1. **The New Bevy Book**: The new Bevy Book aims to be a complete, always up-to-date, and constantly improving guide to using Bevy. Alice has already contributed content and helped facilitate the book's production. If she joins full-time, she will work to finish it, in addition to helping others contribute. +2. **Coordinating the Development of ECS Relations**: Relations are an ECS feature that enable connecting entities to each other via special components called Relations. These are an often-requested feature that will make a number of scenarios (such as parent-child relationships) much nicer. Alice will work to coordinate this effort and fill in functionality gaps. +3. **Building an Action System for Input Devices**: Bevy sorely needs an official way to define "input actions", which are then mapped (and remapped) to inputs from one or more input devices (for example: a `Jump` action that is mapped to the "A" button on controllers and "Spacebar" on keyboards). Alice built [`leafwing-input-manager`](https://github.com/leafwing-studios/leafwing-input-manager), which is a popular third-party Bevy plugin that does exactly that. Alice plans on taking the lessons learned there to build a proper first-party solution to this problem. + +Alice deserves to be paid for her work, and Bevy needs her full-time. Our goal for the **Bevy Foundation** is to pay reasonably competitive, roughly market rate salaries. Therefore, our first goal is to pay Alice a salary of $150,000 a year. + +We all believe Alice is worth at least that much, but given that funds will take time to build up, Alice has agreed to take a pay cut while things spin up. + +## Build Up Some Buffer + +To ensure we can respond to things as they come up, we'll want to build up some initial buffer funds. We'll eventually need to spend some money to help keep Bevy Foundation operational and compliant with state and federal regulations. We also anticipate minor hosting + infrastructure costs to start popping up soon. And once we start exploring other foundation programs, we'll likely need some funds to get those going. Best to be prepared! diff --git a/content/foundation/bylaws/index.md b/content/foundation/bylaws/index.md new file mode 100644 index 0000000000..a27bfb6ef6 --- /dev/null +++ b/content/foundation/bylaws/index.md @@ -0,0 +1,273 @@ ++++ +title = "Bevy Foundation Bylaws" +template = "news-page.html" +date = 2024-02-03 +[extra] +author = "Bevy Foundation Board of Directors" +header_message = "Foundation Bylaws" ++++ + +## Article 1. Offices + +The principal office of Bevy Foundation (the “Corporation) shall be located at its principal place of business or such other place as the Board of Directors (“Board”) may designate. The Corporation may have other such offices, either within or without the State of Washington, as the Board may designate or as the business of the Corporation may require from time to time. + +## Article 2. Purpose + +The Corporation is organized exclusively for charitable and educational purposes within the meaning of Section 501(c)(3) of the Internal Revenue Code of 1986, as amended, including but not limited to the following: + +This corporation is formed to promote, protect, and advance the free and open source Bevy game engine and related open source projects. It educates and trains members of the general public in the usage of Bevy, helps coordinate and promote its continued maintenance and development, and advances the state of the art of game programming through scientific research and development. It offers Bevy for free to members of the general public through the use of open source software licensing, helping them create art, games, conduct scientific simulations, build computer-aided design tools, and more + +## Article 3. Shareholders + +The Corporation has no Shareholders. + +## Article 4. Membership + +The Corporation shall have no members as defined in Section 24.03A.010(45) of the Washington Nonprofit Corporation Act. + +## Article 5. Board of Directors + +### 5.1 General Powers + +The affairs of the Corporation shall be managed by a Board of Directors. + +### 5.2 Number + +The Board shall consist of not less than three nor more than eleven Directors, the specific number to be set by resolution of the Board. The number of Directors may be changed from time to time by amendment to these Bylaws, provided that no decrease in the number shall have the effect of shortening the term of any incumbent Director. + +### 5.3 Qualifications + +Directors shall have such qualifications as the Board may prescribe by resolution or amendment to these Bylaws. + +### 5.4 Election of Directors + +#### 5.4.1 Initial Directors + +The initial Directors named in the Articles of Incorporation shall serve until the first annual meeting of the Board. + +#### 5.4.2 Successor Directors + +Successor Directors shall be elected at the annual meeting of the Board. The terms of the Directors shall be set so that the terms shall be staggered to the extent possible. + +### 5.5 Term of Office + +Unless a Director dies, resigns or is removed, he or she shall hold office for a term of five years or until his or her successor is elected, whichever is later. + +### 5.6 Annual Meeting + +The annual meeting of the Board shall be held the month of January at a date and time established by the Board for the purposes of electing directors and officers and transacting such business as may properly come before the meeting. If the day fixed for the annual meeting is a legal holiday at the place of the meeting, the meeting shall be held on the next succeeding business day. If the annual meeting is not held on the date designated therefor, the Board shall cause the meeting to be held as soon thereafter as may be convenient. + +### 5.7 Regular Meetings + +By resolution, the Board may specify the date, time and place for the holding of regular meetings without other notice than such resolution. + +### 5.8 Special Meetings + +Special meetings of the Board or any committee designated and appointed by the Board may be called by or at the written request of the President or any two Directors, or, in the case of a committee meeting, by the chairman of the committee. The person or persons authorized to call special meetings may fix any place either within or without the State of Washington as the place for holding any special Board or committee meeting called by them. + +### 5.9 Remote Meetings + +Members of the Board or any committee designated by the Board may participate in a meeting of such Board or committee by or through the use of, one or more means of remote communication through which all of the directors may simultaneously participate with each other during the meeting. Participation by such means shall constitute presence in person at a meeting. + +### 5.10 Place of Meetings + +All meetings shall be held at the principal office of the Corporation or at such other place within or without the State of Washington designated by the Board, by any persons entitled to call a meeting or by a waiver of notice signed by all Directors. + +### 5.11 Notice of Special Meetings + +Notice of special Board or committee meetings shall be given to a Director in writing or by personal communication with the Director not less than two days before the meeting. Notices in writing may be delivered or mailed to the Director at his or her address shown on the records of the Corporation or given by facsimile or electronic transmission. Neither the business to be transacted at, nor the purpose of any special meeting need be specified in the notice of such meeting. If notice is delivered by mail, the notice shall be deemed effective when deposited in the official government mail properly addressed with postage thereon prepaid. Notice provided in an electronic transmission is effective when it is electronically transmitted to an address, location or system designated by the recipient for that purpose. + +### 5.12 Waiver of Notice + +#### 5.12.1 In Writing + +Whenever any notice is required to be given to any Director under the provisions of these Bylaws, the Articles of Incorporation or applicable Washington law, a waiver thereof in writing, signed by the person or persons entitled to such notice, whether before or after the time stated therein, shall be deemed equivalent to the giving of such notice. Neither the business to be transacted at, nor the purpose of, any regular or special meeting of the Board need be specified in the waiver of notice of such meeting. + +#### 5.12.2 By Attendance + +The attendance of a Director at a meeting shall constitute a waiver of notice of such meeting, except where a Director attends a meeting for the express purpose of objecting to the transaction of any business because the meeting is not lawfully called or convened. + +### 5.13 Quorum + +A majority of the number of Directors in office shall constitute a quorum for the transaction of business at any Board meeting. If a quorum is not present at a meeting, a majority of the Directors present may adjourn the meeting from time to time without further notice. + +### 5.14 Manner of Acting + +The act of the majority of the Directors present at a meeting at which there is a quorum shall be the act of the Board, unless the vote of a greater number is required by these Bylaws, the Articles of Incorporation or applicable Washington law. + +### 5.15 Presumption of Assent + +A Director of the Corporation present at a Board meeting at which action on any corporate matter is taken shall be presumed to have assented to the action taken unless his or her dissent or abstention is entered in the minutes of the meeting, or unless such Director files a written dissent or abstention to such action with the person acting as secretary of the meeting before the adjournment thereof, or forwards such dissent or abstention by registered mail to the Secretary of the Corporation immediately after the adjournment of the meeting. Such right to dissent or abstain shall not apply to a Director who voted in favor of such action. + +### 5.16 Action by Board Without a Meeting + +Any action which could be taken at a meeting of the Board may be taken without a meeting if a written consent setting forth the action so taken is executed by each of the Directors entitled to vote. Such written consents may be executed in two or more counterparts, each of which shall be deemed an original and all of which, taken together, shall constitute one and the same document. Any such written consent shall be inserted in the minute book as if it were the minutes of a Board meeting. For purposes of these Bylaws, “executed” means: (a) writing that is signed; or (b) an email transmission that is sent with sufficient information to determine the sender’s identity. + +For purposes of this Section 3.16 only, "each of the Directors entitled to vote" does not include an "interested director" who abstains in writing from providing consent, where: + +1. The Board has determined that: + 1. The corporation is entering into the transaction for its own benefit; and + 2. The transaction is fair and reasonable to the corporation when it enters into the transaction or the noninterested directors determine in good faith after reasonable investigation that the corporation cannot obtain a more advantageous arrangement with reasonable effort under the circumstances, at or before execution of the written consent; and +2. Such determination is included in the written consent or in other records of the corporation. + +### 5.17 Resignation + +Any Director may resign at any time by delivering written notice to the President or the Secretary at the registered office of the Corporation, or by giving oral or written notice at any meeting of the Directors. Any such resignation shall take effect at the time specified therein, or if the time is not specified, upon delivery thereof and, unless otherwise specified therein, the acceptance of such resignation shall not be necessary to make it effective. + +### 5.18 Removal + +At a meeting of the Board, one or more Directors may be removed from office, with or without cause, by two-thirds of the votes cast by Directors then in office. + +### 5.19 Vacancies + +A vacancy in the position of Director may be filled by the affirmative vote of a majority of the remaining Directors though less than a quorum of the Board. A Director who fills a vacancy shall serve for the unexpired term of his or her predecessor in office. + +### 5.20 Compensation + +The Directors shall receive no compensation for their service as Directors but may receive reimbursement for expenditures incurred on behalf of the Corporation. + +## Article 6. Officers + +### 6.1 Number and Qualifications + +The officers of the Corporation shall be a President, a Secretary, and a Treasurer, each of whom shall be elected by the Board. Other officers and assistant officers may be elected or appointed by the Board, such officers and assistant officers to hold office for such period, have such authority and perform such duties as are provided in these Bylaws or as may be provided by resolution of the Board. Any officer may be assigned by the Board any additional title that the Board deems appropriate. Any two or more offices may be held by the same person, except the offices of President and Secretary. + +### 6.2 Election and Term of Office + +The officers of the Corporation shall be elected each year by the Board at the annual meeting of the Board. Unless an officer dies, resigns, or is removed from office, he or she shall hold office until the next annual meeting of the Board or until his or her successor is elected. + +### 6.3 Resignation + +Any officer may resign at any time by delivering written notice to the President, the Vice President, the Secretary or the Board, or by giving oral or written notice at any meeting of the Board. Any such resignation shall take effect at the time specified therein, or if the time is not specified, upon delivery thereof and, unless otherwise specified therein, the acceptance of such resignation shall not be necessary to make it effective. + +### 6.4 Removal + +Any officer or agent elected or appointed by the Board may be removed from office by the Board whenever in its judgment the best interests of the Corporation would be served thereby, but such removal shall be without prejudice to the contract rights, if any, of the person so removed. + +### 6.5 Vacancies + +A vacancy in any office created by the death, resignation, removal, disqualification, creation of a new office or any other cause may be filled by the Board for the unexpired portion of the term or for a new term established by the Board. + +### 6.6 President + +The President shall, subject to the Board’s control, supervise and control all of the assets, business and affairs of the Corporation. The President shall preside over meetings of the Board. The President may sign deeds, mortgages, bonds, contracts, or other instruments, except when the signing and execution thereof have been expressly delegated by the Board or by these Bylaws to some other officer or agent of the Corporation or are required by law to be otherwise signed or executed by some other officer or in some other manner. In general, the President shall perform all duties incident to the office of President and such other duties as are assigned to the President by the Board from time to time. + +### 6.7 Secretary + +The Secretary shall: (a) keep or cause to be kept the minutes of meetings of the Board, and minutes which may be maintained by committees of the Board; (b) see that all notices are duly given in accordance with the provisions of these Bylaws or as required by law; (c) be custodian or ensure the safe custody of the corporate records of the Corporation; (d) keep records of the post office and email address of each Director and each officer; and (e) in general perform all duties incident to the office of Secretary and such other duties as from time to time may be assigned to the Secretary by the President or the Board. + +### 6.8 Treasurer + +If requested by the Board, the Treasurer shall give a bond for the faithful discharge of his or her duties in such amount and with such surety or sureties as the Board may determine. The Treasurer shall have charge and custody of and be responsible for oversight of all funds and securities of the Corporation; receive and give receipts for moneys due and payable to the Corporation from any source whatsoever, and ensure the deposit all such moneys in the name of the Corporation in banks, trust companies or other depositories selected in accordance with the provisions of these Bylaws; provide financial reports to the Board at its meetings and on request and in general perform all of the duties incident to the office of Treasurer and such other duties as from time to time may be assigned to him or her by the President or the Board. + +## Article 7. Administrative Provisions + +### 7.1 Loans + +No loans shall be contracted on behalf of the Corporation and no evidences of indebtedness shall be issued in its name unless authorized by a resolution of the Board. Such authority may be general or confined to specific instances. + +### 7.2 Loans or Extensions of Credit to Officers and Directors + +No loans shall be made and no credit shall be extended by the Corporation to its officers or Directors. + +### 7.3 Checks, Drafts, Etc. + +All checks, drafts or other orders for the payment of money, notes or other evidences of indebtedness issued in the name of the corporation shall be signed by such officer or officers, or agent or agents, of the Corporation and in such manner as is from time to time determined by resolution of the Board. + +### 7.4 Books and Records + +The Corporation shall keep at its principal or registered office copies of its current Articles of Incorporation and Bylaws; correct and adequate records of accounts and finances; minutes of the proceedings of the Board, and any minutes which may be maintained by committees of the Board; records of the name and address of each Director, and each officer; and such other records as may be necessary or advisable. + +### 7.5 Accounting Year + +The accounting year of the Corporation shall be the twelve months ending December 31. + +### 7.6 Rules of Procedure + +The rules of procedure at meetings of the Board and committees of the Board shall be rules contained in Roberts’ Rules of Order on Parliamentary Procedure, newly revised, so far as applicable and when not inconsistent with these Bylaws, the Articles of Incorporation or any resolution of the Board. + +## Article 8. Conflict of Interest + +### 8.1 Purpose + +Bevy Foundation encourages the active involvement of its directors and officers in the community. To be transparent and deal fairly with actual and potential conflicts of interest that may arise as a consequence of community involvement, Bevy Foundation adopts the following policy. The purpose of this conflict of interest policy is to protect the interests of Bevy Foundation as it fulfills its charitable purposes, and when it is contemplating entering into a transaction or arrangement that might benefit the private interest of an officer or director of Bevy Foundation or might result in a possible excess benefit transaction. This policy is intended to supplement but not replace any applicable state and federal laws governing conflict of interest applicable to nonprofit and charitable organizations. + +### 8.2 Policy + +Directors and officers are expected to use good judgment, to adhere to high ethical standards, and to conduct their affairs in such a manner as to avoid any actual or potential conflict between the personal interests of a director or officer and those of Bevy Foundation. A conflict of interest exists when a director or officer’s loyalties or actions are divided between the interests of Bevy Foundation and the director or officer’s interests. Both the fact and the appearance of a conflict of interest should be avoided. + +### 8.3 Definitions + +#### 8.3.1 Affiliation + +An affiliation includes any interests other than financial interests that may influence a director or officer’s judgment. An objective test determines whether an affiliation exists between the director or officer and the other person, entity, or organization: whether the involvement or relationship of the director or officer with the other person, entity, or organization is such that it reduces the likelihood that the director or officer can act in Bevy Foundation’s best interests. + +#### 8.3.2 Interested Person + +Any director, principal officer, or member of a committee with governing board delegated powers, who has a direct or indirect financial interest, as defined below, or organizational affiliation, as defined above, is an interested person. + +#### 8.3.3 Financial Interest + +A person has a financial interest if the person has, directly or indirectly, through business, investment, or family: + +1. An ownership or investment interest in any entity with which Bevy Foundation has a transaction or arrangement, +2. A compensation arrangement with Bevy Foundation or with any entity or individual with which Bevy Foundation has a transaction or arrangement, or +3. A potential ownership or investment interest in, or compensation arrangement with, any entity or individual with which Bevy Foundation is negotiating a transaction or arrangement. Compensation includes direct and indirect remuneration as well as gifts or favors that are not insubstantial. A financial interest is not necessarily a conflict of interest. Under Article IV, Section 2, a person who has a financial interest may have a conflict of interest only if the appropriate governing board or committee decides that a conflict of interest exists. + +### 8.4 Procedures + +#### 8.4.1 Duty to Disclose + +In connection with any actual or possible conflict of interest, an interested person must disclose the existence of the financial interest or organizational affiliation and be given the opportunity to disclose all material facts to the directors and members of committees with governing board delegated powers considering the proposed transaction or arrangement + +#### 8.4.2 Determining Whether a Conflict of Interest Exists + +After disclosure of the financial interest or organizational affiliation and all material facts, and after any discussion with the interested person, he/she shall leave the governing board or committee meeting while the determination of a conflict of interest is discussed and voted upon. The remaining board or committee members shall decide if a conflict of interest exists. + +#### 8.4.3 Procedures for Addressing the Conflict of Interest + +1. An interested person may make a presentation at the governing board or committee meeting, but after the presentation, he/she shall leave the meeting during the discussion of, and the vote on, the transaction or arrangement involving the possible conflict of interest. +2. The chairperson of the governing board or committee shall, if appropriate, appoint a disinterested person or committee to investigate alternatives to the proposed transaction or arrangement. +3. After exercising due diligence, the governing board or committee shall determine whether Bevy Foundation can obtain with reasonable efforts a more advantageous transaction or arrangement from a person or entity that would not give rise to a conflict of interest. +4. The governing board or committee shall determine by a majority vote of the disinterested directors whether the transaction or arrangement is in Bevy Foundation's best interest, for its own benefit, and whether it is fair and reasonable. In conformity with the above determination, it shall make its decision as to whether to enter into the transaction or arrangement. + +#### 8.4.4 Violations of the Conflict of Interest Policy + +1. If the governing board or committee has reasonable cause to believe a member has failed to disclose actual or possible conflict of interest, it shall inform the member of the basis for such belief and afford the member an opportunity to explain the alleged failure to disclose. +2. If, after hearing the member’s response and after making further investigation as warranted by the circumstances, the governing board or committee determines the member has failed to disclose an actual or possible conflict of interest, it shall take appropriate disciplinary and corrective action. + +### 8.5 Records of Proceedings + +The minutes of the governing board and all committees with board delegated powers shall contain: + +1. The names of the persons who disclosed or otherwise were found to have a financial interest or organizational affiliation in connection with an actual or possible conflict of interest, the nature of the financial interest or organizational affiliation, any action taken to determine whether a conflict of interest was present, and the governing board’s or committee’s decision as to whether a conflict of interest in fact existed. +2. The names of the persons who were present for discussions and votes relating to the transaction or arrangement, the content of the discussion, including any alternatives to the proposed transaction or arrangement, and a record of any votes taken in connection with the proceedings. + +### 8.6 Compensation + +1. A voting member of the governing board who receives compensation, directly or indirectly, from Bevy Foundation for services is precluded from voting on matters pertaining to that member’s compensation. +2. A voting member of any committee whose jurisdiction includes compensation matters and who receives compensation, directly or indirectly, from Bevy Foundation for services is precluded from voting on matters pertaining to that member’s compensation. +3. No voting member of the governing board or any committee whose jurisdiction includes compensation matters and who receives compensation, directly or indirectly, from Bevy Foundation, either individually or collectively, is prohibited from providing information to any committee regarding compensation. + +### 8.7 Periodic Statements + +Each director and officer shall periodically sign a statement that affirms such person: + +1. Has received a copy of the conflict of interest policy, +2. Has read and understands the policy, +3. Has agreed to comply with the policy, and +4. Understands that Bevy Foundation is a charitable organization and in order to maintain its federal tax exemption it must engage primarily in activities which accomplish one or more of its tax-exempt purposes. + +### 8.8 The Bevy Sponsorship Pledge + +Each director that receives money for their work on Bevy must sign and adhere to the Bevy Sponsorship Pledge. A copy is available on the Bevy website: . + +## Article 9. Amendments + +These Bylaws may be altered, amended or repealed and new Bylaws may be adopted by the vote of a majority of the number of Directors in office. + +The foregoing Bylaws were adopted by a majority of the Directors then in office at a meeting of the Board of Directors held on February 3rd, 2024 at which a quorum was present. + +## History + +* Initial Bylaws adopted by the Bevy Foundation board on February 3rd, 2024. diff --git a/content/foundation/meeting-minutes/2024-02-03/index.md b/content/foundation/meeting-minutes/2024-02-03/index.md new file mode 100644 index 0000000000..9db0b17cd3 --- /dev/null +++ b/content/foundation/meeting-minutes/2024-02-03/index.md @@ -0,0 +1,107 @@ ++++ +title = "Board meeting: 2024-02-03" +date = 2024-02-03 +[extra] +author = "Alice I. Cecile" ++++ + + + +## Attendees + +- Rob Swain +- James Liu +- Carter Anderson +- Alice I. Cecile +- François Mockers + +## Agenda + +1. Adopt bylaws +2. Elect officers +3. Approve Cart opening a bank account +4. Approve Cart transferring copyright of the Bevy logo + +## Adopt Bylaws + +Proposed by: Cart + +As defined in [Cart’s branch on 2024-02-03](https://github.com/cart/bevy-website/blob/01289396b15858715dd165956829fe00f92d50f0/content/foundation/bylaws/index.md). + +Unanimously approved. + +## Officers + +**Cart for President.** + +Proposed by: Cart + +Unanimously approved. + +**Alice for Secretary.** + +Proposed by: Cart + +Unanimously approved. + +Board discussed who should be treasurer. Easier for US persons, due to the need to go in to the bank branch to validate ID. + +**Cart for Treasurer.** + +Proposed by: Cart + +Unanimously approved, with discussion of this as a temporary position. + +## Opening a bank account + +Cart shall open a bank account on behalf of the Foundation. + +Proposed by: Cart + +Unanimously approved. + +## Transferring of the Bevy logo copyright + +The Bevy Foundation should accept a copyright transfer of the Bevy logo from Carter Anderson. + +Proposed by: Cart + +Unanimously approved. + +## Making foundation board meeting minutes generally publicly available + +The board should make these meeting notes publicly available at the time of publication. + +Proposed by: Alice + +Unanimously approved. + +## Signing of meeting minutes + +Discussed how to validate meeting minutes. + +Agreed on storing meeting minutes on Github on `bevy-website repo`, and approved by board members via PR approval. + +## Transferring the ownership of the bevyengine.org domain to the Foundation + +Cart should transfer ownership of the bevyengine.org domain to the foundation. + +Proposed by: James + +Discussed how to pay for the bills associated. May need to delay until bank account is open and has funds. + +Cart will cover hosting costs personally initially, and then will be reimbursed. + +Unanimously approved. + +## Transferring ownership of the bevyengine GitHub account to the Foundation + +Unclear of how exactly we might do this. Broad agreement that this is Probably correct to do. + +Might need to consider how/if to add more admin privileges to manage attack surface. + +## Motion to adjourn + +Proposed by: Cart + +Unanimously approved. diff --git a/content/foundation/meeting-minutes/_index.md b/content/foundation/meeting-minutes/_index.md new file mode 100644 index 0000000000..013662208c --- /dev/null +++ b/content/foundation/meeting-minutes/_index.md @@ -0,0 +1,7 @@ ++++ +title = "Meeting Minutes" +sort_by = "date" +template = "news.html" +page_template = "news-page.html" +insert_anchor_links = "right" ++++ diff --git a/content/news/2023-03-06-bevy-0.10/index.md b/content/news/2023-03-06-bevy-0.10/index.md index ec66587dfa..674dd677ee 100644 --- a/content/news/2023-03-06-bevy-0.10/index.md +++ b/content/news/2023-03-06-bevy-0.10/index.md @@ -9,7 +9,7 @@ image_subtitle = "Ruins scene illustrating Bevy's new material blend modes and f image_subtitle_link = "https://github.com/coreh/bevy-demo-ruins" +++ -Thanks to **173** contributors, **689** pull requests, community reviewers, and our [**generous sponsors**](/community/donate), we're happy to announce the **Bevy 0.10** release on [crates.io](https://crates.io/crates/bevy)! +Thanks to **173** contributors, **689** pull requests, community reviewers, and our [**generous sponsors**](/donate), we're happy to announce the **Bevy 0.10** release on [crates.io](https://crates.io/crates/bevy)! For those who don't know, Bevy is a refreshingly simple data-driven game engine built in Rust. You can check out our [Quick Start Guide](/learn/quick-start/introduction) to try it today. It's free and open source forever! You can grab the full [source code](https://github.com/bevyengine/bevy) on GitHub. Check out [Bevy Assets](https://bevyengine.org/assets) for a collection of community-developed plugins, games, and learning resources. @@ -1718,9 +1718,9 @@ Check out the [**Bevy 0.11 Milestone**](https://github.com/bevyengine/bevy/miles ## Support Bevy -Sponsorships help make our work on Bevy sustainable. If you believe in Bevy's mission, consider [sponsoring us](/community/donate) ... every bit helps! +Sponsorships help make our work on Bevy sustainable. If you believe in Bevy's mission, consider [sponsoring us](/donate) ... every bit helps! -Donate heart icon +Donate heart icon ## Contributors diff --git a/content/news/2023-07-09-bevy-0.11/index.md b/content/news/2023-07-09-bevy-0.11/index.md index ef7b2897b5..72542eef76 100644 --- a/content/news/2023-07-09-bevy-0.11/index.md +++ b/content/news/2023-07-09-bevy-0.11/index.md @@ -7,7 +7,7 @@ image = "with_ssao.png" show_image = true +++ -Thanks to **166** contributors, **522** pull requests, community reviewers, and our [**generous sponsors**](/community/donate), we're happy to announce the **Bevy 0.11** release on [crates.io](https://crates.io/crates/bevy)! +Thanks to **166** contributors, **522** pull requests, community reviewers, and our [**generous sponsors**](/donate), we're happy to announce the **Bevy 0.11** release on [crates.io](https://crates.io/crates/bevy)! For those who don't know, Bevy is a refreshingly simple data-driven game engine built in Rust. You can check out our [Quick Start Guide](/learn/quick-start/introduction/) to try it today. It's free and open source forever! You can grab the full [source code](https://github.com/bevyengine/bevy) on GitHub. Check out [Bevy Assets](https://bevyengine.org/assets) for a collection of community-developed plugins, games, and learning resources. @@ -1307,9 +1307,9 @@ Check out the [**Bevy 0.12 Milestone**](https://github.com/bevyengine/bevy/miles ## Support Bevy -Sponsorships help make our work on Bevy sustainable. If you believe in Bevy's mission, consider [sponsoring us](/community/donate) ... every bit helps! +Sponsorships help make our work on Bevy sustainable. If you believe in Bevy's mission, consider [sponsoring us](/donate) ... every bit helps! -Donate heart icon +Donate heart icon ## Contributors diff --git a/content/news/2023-08-10-bevys-third-birthday/index.md b/content/news/2023-08-10-bevys-third-birthday/index.md index 340f20c747..e759ff6789 100644 --- a/content/news/2023-08-10-bevys-third-birthday/index.md +++ b/content/news/2023-08-10-bevys-third-birthday/index.md @@ -119,7 +119,7 @@ I'm very proud of our Maintainers, who regularly go above and beyond to make Bev * **[Rob Swain (@superdump)](https://github.com/superdump)** for being our rendering ring leader: developing new features, helping other renderer developers get things done, and writing long detailed threads about renderer feature design and rationale. * **[James Liu (@james7132)](https://github.com/sponsors/james7132)** for [meticulous attention to performance](https://github.com/bevyengine/bevy/issues?q=author%3Ajames7132+label%3AC-Performance+), especially in the ECS area. -I am very fortunate to work with such capable people. Bevy would be a very different (and much worse) project without them. Please show your support by [sponsoring them](/community/donate/)! +I am very fortunate to work with such capable people. Bevy would be a very different (and much worse) project without them. Please show your support by [sponsoring them](/donate/)! ## There Is Always Room For Improvement @@ -225,7 +225,7 @@ We have [plenty of other work in the pipeline](https://github.com/bevyengine/bev One last reminder that you should write your own Bevy Birthday blog posts. [Submit them here](https://github.com/bevyengine/bevy-website/issues/728)! -If any of this excites you, we would love your help! Check out our code on [GitHub](https://github.com/bevyengine/bevy), start participating in the [Bevy Community](/community/), and consider [sponsoring our work](/community/donate) to ensure we can continue building and leading this wildly ambitious project. +If any of this excites you, we would love your help! Check out our code on [GitHub](https://github.com/bevyengine/bevy), start participating in the [Bevy Community](/community/), and consider [sponsoring our work](/donate) to ensure we can continue building and leading this wildly ambitious project. I'm looking forward to spending another year building Bevy with you all! diff --git a/content/news/2023-11-04-bevy-0.12/index.md b/content/news/2023-11-04-bevy-0.12/index.md index 4dd997370f..0f786f9ddd 100644 --- a/content/news/2023-11-04-bevy-0.12/index.md +++ b/content/news/2023-11-04-bevy-0.12/index.md @@ -9,7 +9,7 @@ image_subtitle_link = "https://twitter.com/i_am_feenster" +++ -Thanks to **185** contributors, **567** pull requests, community reviewers, and our [**generous sponsors**](/community/donate), we're happy to announce the **Bevy 0.12** release on [crates.io](https://crates.io/crates/bevy)! +Thanks to **185** contributors, **567** pull requests, community reviewers, and our [**generous sponsors**](/donate), we're happy to announce the **Bevy 0.12** release on [crates.io](https://crates.io/crates/bevy)! For those who don't know, Bevy is a refreshingly simple data-driven game engine built in Rust. You can check out our [Quick Start Guide](/learn/quick-start/introduction) to try it today. It's free and open source forever! You can grab the full [source code](https://github.com/bevyengine/bevy) on GitHub. Check out [Bevy Assets](https://bevyengine.org/assets) for a collection of community-developed plugins, games, and learning resources. @@ -1741,9 +1741,9 @@ Check out the [**Bevy 0.13 Milestone**](https://github.com/bevyengine/bevy/miles ## Support Bevy -Sponsorships help make our work on Bevy sustainable. If you believe in Bevy's mission, consider [sponsoring us](/community/donate) ... every bit helps! +Sponsorships help make our work on Bevy sustainable. If you believe in Bevy's mission, consider [sponsoring us](/donate) ... every bit helps! -Donate heart icon +Donate heart icon ## Contributors diff --git a/content/news/2024-03-11-bevy-foundation/bevy_foundation.svg b/content/news/2024-03-11-bevy-foundation/bevy_foundation.svg new file mode 100644 index 0000000000..793eff7640 --- /dev/null +++ b/content/news/2024-03-11-bevy-foundation/bevy_foundation.svg @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/content/news/2024-03-11-bevy-foundation/index.md b/content/news/2024-03-11-bevy-foundation/index.md new file mode 100644 index 0000000000..ef7d3797d3 --- /dev/null +++ b/content/news/2024-03-11-bevy-foundation/index.md @@ -0,0 +1,161 @@ ++++ +title = "Bevy Foundation" +date = 2024-03-11 +[extra] +image = "bevy_foundation.svg" +# show_image = true +author = "Carter Anderson" +twitter = "cart_cart" +github = "cart" +youtube = "cartdev" ++++ + +It is with excitement that I unveil to the world ... + +Bevy Foundation Logo + +The [**Bevy Foundation**](/foundation) is the next step in our journey to build a world class free and open source game engine. **Bevy Foundation** is a non-profit organization formed in Washington State, with a pending federal 501(c)(3) tax-exemption application (more on this later). + + + +This is a big step for us and it was not taken lightly. This will be a long blog post, so I'll cover the highlights here: + +1. **Bevy Foundation** is largely a legal formalization of the leadership and operational structure we have already been using. The "Bevy leadership" that you know (and hopefully trust) is also at the helm of **Bevy Foundation**. The biggest difference is that power is distributed more evenly. +2. Nothing is fundamentally changing about how we build and release Bevy as free and open source software. This is _not_ a business model rug-pull. It is a legal formalization of our mission to build and release Bevy as free and open source software to members of the general public (you!). +3. You can now [donate to the Bevy Foundation](/donate) to support us! + +## Some History + +We have come such a long way since I first released Bevy to the world in 2020. What was once a one person side project is now built by hundreds of people and used by thousands (we recently broke a million downloads!). Bevy is the most popular, most used game engine built in Rust, and the second most popular open source game engine on GitHub. + +I (Carter / @cart) am still Bevy's Project Lead, but I no longer make all of the decisions. For years now [The Bevy Organization](/community/people) has delegated decision making authority across members of the Bevy community. We have 5 excellent Maintainers and even more Subject Matter Experts that were each pivotal in making Bevy what it is today. + +As we have grown, we have accumulated what I will call "organizational debt": + +* **Funding Bevy Has Been A Popularity Contest**: For years, our donate button linked directly to my GitHub sponsors page. This was acceptable early on when I was the only one spending significant time on the project, but that is no longer the case. Last year, we replaced that with a page that any Bevy Organization member could list themselves on. While fairer than the "everything goes to @cart" model, it resulted in funding being a "popularity contest". And unfortunately, given how attached my name is to the project, in practice I still received the majority of the sponsorships. Presenting donors with the task of picking someone to back also deeply complicated the donation process, which likely turned some donors off. We need a simple, centralized donation model where we can direct funds fairly to the areas of the project that need them the most. +* **We Lacked "Organizational Legitimacy"**: We would like to attract the attention (and funding) of people and companies serious about gamedev. An informal collective of Bevy developers (each asking for support individually) lacks the legitimacy required to attract some entities. We need to be able to present a centralized and transparent view of our operations, with accountable and professional people at the helm. +* **Carter Held (And Owned) The Keys**: Up until this point, I have owned Bevy-related intellectual property such as the copyright for the Bevy logo. I also owned the `bevyengine.org` domain name and had exclusive administrative control over most of our infrastructure and communities. I have had absolute authority over all aspects of the project since its inception. Yes, I have delegated, but it all stemmed from me at the root. This had its efficiencies, but it is no longer sustainable for me or ethically sound when there are _so many_ others that deserve actual _legal_ say over how the project is run. There is also the ["bus factor"](https://en.wikipedia.org/wiki/Bus_factor) to consider. If something were to happen to me, some aspects of the Bevy project would be lost forever. + +Bevy needs a structure that lets us work together: a legal entity that embodies our goals and principles, where responsibility and decision making are all shared. + +## Introducing the Bevy Foundation! + +### Our Mission + +To quote our 501(c)(3) application: + +> Our mission is to promote, protect, and advance the free and open source Bevy Engine and related open source projects. We coordinate and promote its continued maintenance and development, educate and train members of the general public in its usage, and conduct research and development to advance the state of the art of creating real-time applications and simulations. + +In short: **we exist to develop Bevy and teach people how to use it**! + +### Legal Status + +[**Bevy Foundation**](/foundation) is a non-profit incorporated in Washington State. This means that the money we raise [cannot be used to benefit our members, officers, or directors, except as compensation for services rendered](https://dor.wa.gov/education/industry-guides/nonprofit-organizations#Fundraising). We do not have "owners" or "shareholders". We are formed exclusively to accomplish our mission as stated above as a public benefit. + +### Federal 501(c)(3) Application + +We have also applied for a federal 501(c)(3) non-profit public charity designation. + +If our 501(c)(3) application is accepted, this status will exempt us from federal income tax and allow donors in the United States to deduct their donations on their federal taxes. + +Note that the 501(c)(3) application has not yet been approved, and there has been an increasing number of denials for technology-oriented charities. The experts we have talked to have told us not to get our hopes up. + +If we are denied, our default strategy will be to continue operating as a state-only charity and pay federal taxes. As long as we spend most of the donations we receive, the taxes shouldn't be too painful. We may also consider other designations, such as 501(c)(6), but we are cautious about that designation. We want to focus on the members of the Bevy community as people, not through the lens of their commercial interests. + +If tax-deductibility is important to you, _please do not donate until we receive a determination_. But also note that if our application is accepted, donations made _prior_ to our acceptance will _retroactively_ be tax-deductible! Neat! + +### The Board of Directors + +We are run by the **Bevy Foundation** Board of Directors. All actions taken by **Bevy Foundation** are determined by a vote of the board. + +The current Board of Directors is: Carter Anderson (@cart), Alice Cecile (@alice-i-cecile), François Mockers (@mockersf), Robert Swain (@superdump), and James Liu (@james7132). + +I have been elected President of the board and Alice has been elected Secretary. For logistical reasons, I have also been elected interim Treasurer to get our initial financial situation spun up. It makes sense for a US-based board member to set up things like bank accounts for a US-based organization. But we would like to pass off the role of Treasurer as quickly as possible. + +You may notice that every member of the board is an active Bevy Maintainer. This is not a coincidence. We believe that people _actually developing the project_ should be at the helm. There is currently no way to buy a board seat. We have no plans to hire "professional board members" that aren't in the thick of it. For now we plan to stick to the Maintainer == Board Member policy. Functionally, new Board Members are selected via an election of the current board. "Board Member" is currently not a paid position. + +Note that I am using the phrasing "currently" and "for now" in some places above because I am _no longer capable of making absolute statements about the future of the project_. I am a board member, which gives me a vote. And as President I have been given some authority by the board to manage our operations. But I must follow the resolutions of the board and I _can_ be voted out. This is a good thing I promise! It means that the project can exist without me. And if I am no longer fulfilling my duties to the satisfaction of the board, I probably _should_ be ousted. + +This is a leap of faith, but one that has been carefully measured over the course of years. I have worked with the other maintainers (now board members) for a long time now and I trust them ... both with the future of Bevy and with my job. + +### Bylaws + +We have adopted public [Bylaws](/foundation/bylaws) that govern how we operate. They determine how we are structured, the roles in the organization, how meetings and voting take place, a conflict of interest policy, and more. Note these are largely borrowed from the standard legal boilerplate (and they exist for a legal purpose), so they're stiffer than our normal style. + +### Transparency + +Our goal is to make the operations of **Bevy Foundation** as transparent as possible. We make the following public: + +* [**Bylaws**](/foundation/bylaws): The operational rules we have adopted +* [**Meeting Minutes**](/foundation/meeting-minutes): Learn about the decisions the board makes and why we make them +* [**Documents**](https://drive.google.com/drive/u/0/folders/1Q_vdAaI0tsWZdcddL9lDicDZhjPl79s9?ths=true): Public Bevy Foundation documents, such as our Articles of Incorporation +* [**Budget**](/foundation/budget): How we plan to spend money this year + +We will strive to be approachable and accountable for our actions, and we will continue to make our technical decisions in public with the input of the community. You know who we are and where to find us! + +## Our Plans + +**Bevy Foundation** will direct the majority of its funding to fueling Bevy development. + +### Short Term: Bring Alice on full-time + +We have exactly one focus for the short term: bring Alice on full-time. For years, Alice has dedicated _significant_ time to the project as a Maintainer. She has been our primary project manager: wrangling issues, [keeping the merge train running](https://mastodon.social/deck/tags/bevymergetrain), connecting developers to the right parts of the project, and doing the work that ensures we can harness and enable our ever increasing developer community. Not to mention her extensive technical contributions and documentation work! + +If you have participated in Bevy's development, you are probably intimately aware of two things: + +1. Project management is our bottleneck. +2. Alice is a world-class project manager. + +In addition to performing the general "project management" role, Alice has the following specific priorities when she starts full-time: + +1. **The New Bevy Book**: The new Bevy Book aims to be a complete, always up-to-date, and constantly improving guide to using Bevy. Alice has already contributed content and helped facilitate the book's production. If she joins full-time, she will work to finish it, in addition to helping others contribute. +2. **Coordinating the Development of ECS Relations**: Relations are an ECS feature that enable connecting entities to each other via special components called Relations. These are an often-requested feature that will make a number of scenarios (such as parent-child relationships) much nicer. Alice will work to coordinate this effort and fill in functionality gaps. +3. **Building an Action System for Input Devices**: Bevy sorely needs an official way to define "input actions", which are then mapped (and remapped) to inputs from one or more input devices (for example: a `Jump` action that is mapped to the "A" button on controllers and "Spacebar" on keyboards). Alice built [`leafwing-input-manager`](https://github.com/leafwing-studios/leafwing-input-manager), which is a popular third-party Bevy plugin that does exactly that. Alice plans on taking the lessons learned there to build a proper first-party solution to this problem. + +Alice deserves to be paid for her work, and Bevy needs her full-time. Our goal for the **Bevy Foundation** is to pay reasonably competitive, roughly market rate salaries. Therefore, our first goal is to pay Alice a salary of $150,000 a year. + +We all believe Alice is worth at least that much, but given that funds will take time to build up, Alice has agreed to take a pay cut while things spin up. + +#### What about Carter? + +Some may ask why I (Carter), the creator and Project Lead of Bevy, am not the first to be paid by the **Bevy Foundation**. Thats easy: I already currently have enough support from my current sponsors to live on, and I have historically received the lion's share of sponsorships. The scales have been tilted in my favor for too long. Prioritizing Alice is the only fair choice, and also happens to be what is best for Bevy right now. + +I suspect my current sponsors will transition to the **Bevy Foundation** over time (and I encourage them to do so!). As this happens there will likely be an inflection point where Alice is making more than me. When we hit that point, we will sort out a balancing strategy until we are both paid our target wages. + +Note if we receive 501(c)(3) status (see the 501(c)(3) section above), we are allowed to pay competitive wages, but we can't pay _excessive_ wages (nor are we _interested in doing so_). Once Alice and Carter are paid reasonable wages, we will shift our financial focus elsewhere. + +### Future Plans + +Our focus will always be on funding more Bevy developers, both full-time and part-time. We will likely explore targeted one time grants for specific efforts. + +Later down the line, we will likely explore the development of a Bevy Asset store where the community can list and sell Bevy-compatible assets. + +We would also like to re-introduce a Bevy Merch store. While we don't think this is an ideal fundraising strategy, we think it will be a fun way for the Bevy community to show their pride! + +When we consider future programs, we will ask the questions: + +1. Is this compatible with the Bevy Foundation's mission? +2. Is this in the best interest of the Bevy community and the general public? +3. Will this compromise the integrity of Bevy as a free and open source offering in any way? +4. Will this change our incentives in a way that risks changing our answers to (1), (2), or (3)? +5. If we are monetizing something, are we doing it in an ethical way? + +Know that we exist _for the benefit of the Bevy community and the general public_ and we will try our utmost to never compromise that. + +## A New Era + +The **Bevy Foundation** is both an accomplishment, as the culmination of months of work and research, and a Foundation, on top of which we will build the future of Bevy. We are building technology that will enrich the lives of everyone as a common, publicly available good. Game development is currently an industry of rent seekers and gatekeepers. I believe that a better world can exist: one where we collectively build tools _for each other_ in the open. Bevy is ideologically and technologically a rethinking of what this industry should be. + +I am deeply proud of what we have accomplished so far and I can't wait for what this new Bevy era will bring. + +## We Need Your Support! + +Bevy will always be free and open source. However our plans for Bevy's future are grand ... they will require significant financial support. Please consider donating if you enjoy using Bevy and believe in our mission. + +If we receive 501(c)(3) public charity status, to maintain that status we will require a significant portion of our funds to come from individual people (not just companies). Your contribution matters! + +If you are already supporting us through individual sponsorships, consider switching your donation to **Bevy Foundation**, as that will make it easier for us to direct your contribution to the areas that need it most. + +Visit our brand new donation page here: + +Donate heart icon diff --git a/generate-community/src/bin/generate.rs b/generate-community/src/bin/generate.rs index fad6271ee7..2273625cda 100644 --- a/generate-community/src/bin/generate.rs +++ b/generate-community/src/bin/generate.rs @@ -37,7 +37,7 @@ fn main() -> io::Result<()> { donate.name = "Supporting Bevy Development".to_string(); donate.filename = Some("donate".to_string()); donate.header = Some("Supporting Bevy".to_string()); - donate.template = Some("donate.html".to_string()); + donate.template = Some("donate-community.html".to_string()); donate.content.retain(|node| { let CommunityNode::Member(member) = node else { diff --git a/sass/components/_sponsors.scss b/sass/components/_sponsors.scss index cb34231d68..e9ef6b058d 100644 --- a/sass/components/_sponsors.scss +++ b/sass/components/_sponsors.scss @@ -40,39 +40,74 @@ } } - &__logo { - object-fit: contain; - } + &__amount { + margin-top: -4px; + font-size: 1.2rem; + color: rgb(150, 150, 150); + } - $tiers: ( - ("tier": "patron", "color": $color-white, "height": 190px), - ("tier": "diamond", "color": #a3daeb, "height": 120px), - ("tier": "platinum", "color": $color-white, "height": 100px), - ("tier": "gold", "color": $color-gold, "height": 90px), - ("tier": "silver", "color": #bbb, "height": 80px), - ("tier": "bronze", "color": #9f7d6c, "height": 60px), - ); + &__content { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + max-width: 600px; + margin: 0 auto; -@each $tier in $tiers { - &--#{map-get($tier, "tier")} { - .sponsors { - &__title { - color: map-get($tier, "color"); - } + @media #{$bp-tablet-landscape-up} { + max-width: none; + flex-direction: row; + flex-wrap: wrap; + } + } - &__amount { - color: map-get($tier, "color"); - } + &__link { + display: block; + margin: 0 0 16px; + + @media #{$bp-tablet-landscape-up} { + margin: 0 24px 24px; + } + } - &__logo { - width: 100%; - max-height: map-get($tier, "height"); + &__logo { + object-fit: contain; + transition: transform .2s; /* Animation */ + } + + &__logo:hover { + transform: scale(1.05); /* (150% zoom - Note: if the zoom is too large, it will go outside of the viewport) */ } + + $tiers: ( + ('tier': 'patron', 'height': 190px), + ('tier': 'corporate_diamond', 'height': 120px), + ('tier': 'corporate_platinum', 'height': 100px), + ('tier': 'corporate_gold', 'height': 90px), + ('tier': 'corporate_silver', 'height': 80px), + ('tier': 'corporate_bronze', 'height': 60px), + ); + +@each $tier in $tiers { + &--#{map-get($tier, 'tier')} { + .sponsors { + &__logo { + width: 100%; + max-height: map-get($tier, 'height'); + } + } } } } + +.sponsors-section { + margin-top: 3rem; + text-align: center; + font-size: 1.5rem !important; + line-height: 2.2rem !important; } + .past-sponsors-title { font-size: 2.8rem; margin-bottom: 16px; diff --git a/sass/pages/_donate.scss b/sass/pages/_donate.scss index a5071bc3b9..fe3fa1a326 100644 --- a/sass/pages/_donate.scss +++ b/sass/pages/_donate.scss @@ -3,3 +3,237 @@ div.donate-sponsor { bottom: 0.4rem; right: 0.8rem; } + +.donate-page { + font-size: 1.22rem; + font-weight: 400; + line-height: 1.43; + color: #d2d2d2; + font-style: normal; + text-decoration: none; + word-break: break-word; + + h2 { + text-align: center; + margin-top: 2.2rem; + margin-bottom: 0.5rem; + font-size: 2.2rem; + } + + h3 { + font-size: 1.5rem; + margin-bottom: 1rem; + } + + a { + text-decoration: none; + } + + a:visited { + text-decoration: none; + color: $link-color; + } +} + +.donate-support { + display: flex; + flex-direction: row; + justify-content: space-around; + flex-wrap: wrap; + max-width: 1100px; + margin: auto; + margin-top: 5rem; +} + +.donate-support-text { + width: 500px; +} + +.donate-support-bevy { + font-weight: 900; + font-size: 5rem; +} + +.donate-support-description { + margin-top: 10px; + font-size: 1.3rem; + font-weight: 500; + color: rgb(200, 200, 200); +} + +.donate-header-padding { + padding-top: 9rem; +} + +.donate-metrics { + height: 200px; + width: 400px; + margin-top: 30px; +} + +.donate-metric { + float: right; + clear: right; + margin-bottom: 1rem; + line-height: 40px; + border-bottom-width: 4px; + border-bottom-color: $color-white; + border-bottom-style: solid; +} + +.donate-number { + font-size: 4rem; + font-weight: 900; +} + +.donate-number-label { + display: inline-block; + font-size: 2rem; + font-weight: 400; + width: 160px; + text-align: right; +} + +.donate-membership-description { + margin: auto; + text-align: center; + font-size: 1.2rem; + max-width: 850px; + margin-bottom: 20px; +} + +.donate-levels-container { + margin: auto; + max-width: 850px; +} + +.donate-membership-levels { + display: flex; + justify-content: space-around; + flex-wrap: wrap; + gap: 5px; +} + +.donate-level { + display: flex; + position: relative; + width: 280px; + height: 134px; + + &:hover { + text-shadow: none !important; + } +} + + .donate-level-info { + margin-top: 8px; + margin-left: 14px; + } + +.donate-level-icon { + width: 70px; + float: left; +} + +.donate-level-corporate { + color: rgb(150, 150, 150); + font-weight: 500; + font-size: 1.2rem; + margin-top: -6px; + margin-bottom: -12px; +} + +.donate-level-text { + margin-top: 4px; + margin-left: 15px; + float: left; +} + +.donate-level-name { + font-weight: 900; + font-size: 2.5rem; +} + +.donate-level-amount { + margin-top: -0.8rem; + color: #bababa; + font-weight: 500; +} + +.donate-level-bronze { + color: #9f7d6c; +} + +.donate-level-silver { + color: #bbb; +} + +.donate-level-gold { + color: #c0b04bff; +} + +.donate-level-platinum { + color: #c5c5c5; +} + +.donate-level-titanium { + color: #848484; +} + +.donate-level-diamond { + color: #a3daeb; +} + +.donate-level-patron { + color: #dcdcdc; +} + +.donate-corporate-button { + display: block; + margin-top: 1rem; + margin: auto; + text-align: center; + align-self: center; + padding-top: 4px; + margin-top: 10px; + width: 200px; + height: 40px; +} + +.tier-rewards { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + column-gap: 8px; + position: absolute; + width: 100%; + height: 30px; + bottom: 3px; +} + +.tier-reward { + height: 20px; + font-size: 0.9rem; + border-width: 1px; + border-style: solid; + border-radius: $border-radius; + color: rgb(150, 150, 150); + line-height: 1.4rem; + padding-left: 8px; + padding-right: 8px; + height: 24px; +} + +.credits-text { + text-align: center; + width: 75%; + margin: auto; + font-size: 1.3rem; +} + +.donate-faq-link { + font-size: 1.4rem; + text-align: center; + margin-top: 4rem; +} diff --git a/sass/pages/_features.scss b/sass/pages/_features.scss index 8c4e5613e5..d414eb4f3e 100644 --- a/sass/pages/_features.scss +++ b/sass/pages/_features.scss @@ -112,20 +112,6 @@ width: 100%; } -.features-sponsors { - margin-top: 3rem; - text-align: center; - font-size: 1.5rem !important; - line-height: 2.2rem !important; - margin-bottom: 8rem; -} - -.sponsors-section { - display: flex; - width: 100%; - justify-content: center; -} - .bronze-sponsor-image { height: 3.8rem; margin: 1rem; diff --git a/sass/pages/_foundation.scss b/sass/pages/_foundation.scss new file mode 100644 index 0000000000..8b490db19f --- /dev/null +++ b/sass/pages/_foundation.scss @@ -0,0 +1,9 @@ +.director-card { + height: 8.5rem; +} + +.foundation-logo { + height: 110px; + margin-top: 2.2rem; + margin-bottom: 0.8rem; +} \ No newline at end of file diff --git a/sass/site.scss b/sass/site.scss index d560a75ed7..3300b50314 100644 --- a/sass/site.scss +++ b/sass/site.scss @@ -58,4 +58,5 @@ @import "pages/features"; @import "pages/content"; @import "pages/migration_guide"; +@import "pages/foundation"; @import "pages/404"; diff --git a/static/assets/bevy_foundation.svg b/static/assets/bevy_foundation.svg new file mode 100644 index 0000000000..793eff7640 --- /dev/null +++ b/static/assets/bevy_foundation.svg @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/assets/sponsor_badges/bronze.svg b/static/assets/sponsor_badges/bronze.svg new file mode 100644 index 0000000000..42fb644571 --- /dev/null +++ b/static/assets/sponsor_badges/bronze.svg @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/assets/sponsor_badges/diamond.svg b/static/assets/sponsor_badges/diamond.svg new file mode 100644 index 0000000000..8e4297968c --- /dev/null +++ b/static/assets/sponsor_badges/diamond.svg @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/assets/sponsor_badges/gold.svg b/static/assets/sponsor_badges/gold.svg new file mode 100644 index 0000000000..97e3ce79cb --- /dev/null +++ b/static/assets/sponsor_badges/gold.svg @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/assets/sponsor_badges/patron.svg b/static/assets/sponsor_badges/patron.svg new file mode 100644 index 0000000000..4f78942001 --- /dev/null +++ b/static/assets/sponsor_badges/patron.svg @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/assets/sponsor_badges/platinum.svg b/static/assets/sponsor_badges/platinum.svg new file mode 100644 index 0000000000..f1677184b4 --- /dev/null +++ b/static/assets/sponsor_badges/platinum.svg @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/assets/sponsor_badges/silver.svg b/static/assets/sponsor_badges/silver.svg new file mode 100644 index 0000000000..d3d3ba2d90 --- /dev/null +++ b/static/assets/sponsor_badges/silver.svg @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/assets/sponsor_badges/titanium.svg b/static/assets/sponsor_badges/titanium.svg new file mode 100644 index 0000000000..f34e3d5200 --- /dev/null +++ b/static/assets/sponsor_badges/titanium.svg @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/assets/BFH.png b/static/assets/sponsors/BFH.png similarity index 100% rename from static/assets/BFH.png rename to static/assets/sponsors/BFH.png diff --git a/static/assets/Encultured.png b/static/assets/sponsors/Encultured.png similarity index 100% rename from static/assets/Encultured.png rename to static/assets/sponsors/Encultured.png diff --git a/static/assets/Foresight_Spatial_Labs.svg b/static/assets/sponsors/Foresight_Spatial_Labs.svg similarity index 100% rename from static/assets/Foresight_Spatial_Labs.svg rename to static/assets/sponsors/Foresight_Spatial_Labs.svg diff --git a/static/assets/sponsors/Pixeljam.png b/static/assets/sponsors/Pixeljam.png new file mode 100644 index 0000000000000000000000000000000000000000..6f6f9f68a688dce6b39064b68dff065c62816062 GIT binary patch literal 378 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 literal 0 HcmV?d00001 diff --git a/static/assets/vertex_studio.png b/static/assets/sponsors/vertex_studio.png similarity index 100% rename from static/assets/vertex_studio.png rename to static/assets/sponsors/vertex_studio.png diff --git a/static/donate.js b/static/donate.js new file mode 100644 index 0000000000..3dde6e45d8 --- /dev/null +++ b/static/donate.js @@ -0,0 +1,16 @@ +function show_corporate() { + let corporate_membership = document.getElementById("corporate-sponsorship"); + corporate_membership.style.display = "block"; + + let membership = document.getElementById("membership"); + membership.style.display = "none"; + +} + +function show_membership() { + let corporate_membership = document.getElementById("corporate-sponsorship"); + corporate_membership.style.display = "none"; + + let membership = document.getElementById("membership"); + membership.style.display = "block"; +} \ No newline at end of file diff --git a/templates/donate-community.html b/templates/donate-community.html new file mode 100644 index 0000000000..8b007db200 --- /dev/null +++ b/templates/donate-community.html @@ -0,0 +1,209 @@ +{% extends "layouts/base.html" %} + +{% block content %} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+

+ Bevy is a community-driven project and many of us rely on financial support to continue building Bevy. + Bevy is built by a large group of people, so consider backing the ones that are building what you care about! + If you are uncertain, a + Project Lead, + Maintainer, or + SME + is a good choice. You can learn more about these roles here. +

+

+ If you are interested in backing Bevy in a big way (and you would like to see your logo on Bevy's home page), + consider supporting one of our Maintainers at one + of the following tiers: +

    +
  • Bronze: $100 / month
  • +
  • Silver: $200 / month
  • +
  • Gold: $300 / month
  • +
  • Platinum: $1000 / month
  • +
  • Diamond: $4000 / month
  • +
  • Patron: Anything over $100,000 / year
  • +
+ + If a maintainer offers these roles in their sponsors page, that counts! If you are interested in Patron sponsorship, contact us directly. + Reach out to us here if you have any questions about sponsorship or you would like to claim a sponsorship reward. +

+

+ All Bevy leaders sign our Sponsorship Pledge to ensure the needs of the Bevy Community always come first. +

+
+ + {% if section.pages %} +
+ {% set pages = section.pages %} + {% if section.extra.sort_order_reversed %} + {% set pages = section.pages | reverse %} + {% endif %} + + {% for post in pages %} + +
+
+
+
+ {{ post.title }} +
+ {% if post.extra.profile_picture %} +
+ {% if post.extra.profile_picture is starting_with("https://") %} + + {% else %} + + {% endif %} +
+ {% endif %} +
+
+ + {% if post.extra.roles %} +
+ {% for role in post.extra.roles %} + {% if role == "Project Lead" %} +
{{ role }}
+ {% elif role == "Maintainer" %} +
{{ role }}
+ {% elif role is starting_with("SME-") %} +
{{ role }}
+ {% else %} +
{{ role }}
+ {% endif %} + {% endfor %} +
+ {% endif %} + {% if post.extra.bio %} +
+ {{ post.extra.bio }} +
+ {% endif %} + {% if post.extra.sponsor %} +
+ + + + Sponsor me! +
+ {% endif %} + +
+
+
+ + {% endfor %} +
+ {% endif %} + +
+{% endblock content %} diff --git a/templates/donate.html b/templates/donate.html index acbdfe14dc..3e3687fbce 100644 --- a/templates/donate.html +++ b/templates/donate.html @@ -1,216 +1,174 @@ +{% import "macros/numbers.html" as numbers %} {% extends "layouts/base.html" %} + +{% block head_extensions %} + +{% endblock %} + {% block content %} - -
- -
-

- Bevy is a community-driven project and many of us rely on financial support to continue building Bevy. - Bevy is built by a large group of people, so consider backing the ones that are building what you care about! - If you are uncertain, a - Project Lead, - Maintainer, or - SME - is a good choice. You can learn more about these roles here. -

-

- If you are interested in backing Bevy in a big way (and you would like to see your logo on Bevy's home - page), - consider supporting one of our Maintainers at one - of the following tiers: -

    -
  • - Bronze: $100 / month -
  • -
  • - Silver: $200 / month -
  • -
  • - Gold: $300 / month -
  • -
  • - Platinum: $1000 / month -
  • -
  • - Diamond: $4000 / month -
  • -
  • - Patron: Anything over $100,000 / year -
  • -
- If a maintainer offers these roles in their sponsors page, that counts! If you are interested in Patron sponsorship, - contact us directly. - Reach out to us here if you have any questions about sponsorship or you - would like to claim a sponsorship reward. -

-

- All Bevy leaders sign our Sponsorship Pledge to ensure the needs of the Bevy - Community always come first. -

-
- {% if section.pages %} -
- {% set pages = section.pages %} - {% if section.extra.sort_order_reversed %} - {% set pages = section.pages | reverse %} - {% endif %} - {% for post in pages %} -
-
-
-
{{ post.title }}
- {% if post.extra.profile_picture %} -
- {% if post.extra.profile_picture is starting_with("https://") %} - {{ post.title }}'s profile picture + +{% set sponsors = load_data(path="content/donate/foundation-sponsors.toml") %} +{% set tiers = load_data(path="content/donate/tiers.toml") %} +{% set metrics = load_data(path="content/donate/metrics.toml") %} + +{% set_global member_count = metrics.members %} +{% set_global sponsor_count = metrics.sponsors %} +{% set_global monthly_donations = metrics.monthly_dollars %} + + +{# + {% set_global member_count = 0 %} + {% set_global sponsor_count = 0 %} + {% for tier in tiers.tier | reverse %} + {% set next_tier_index = tiers.tier | length - loop.index0 %} + {% set next_tier = tiers.tier | nth(n=next_tier_index) %} + + + + {% if sponsors.sponsor %} + {% for sponsor in sponsors.sponsor %} + {% if sponsor.past %} + {% continue %} + {% endif %} + {% if sponsor.amount >= tier.amount %} + {% if next_tier and sponsor.amount >= next_tier.amount %} + {% continue %} + {% endif %} + {% if tier.sponsor_tier %} + {% set_global sponsor_count = sponsor_count + 1 %} {% else %} - {{ post.title }}'s profile picture + {% set_global member_count = member_count + 1 %} {% endif %} -
{% endif %} -
-
- + +
+ + + +{% include "sponsors.html" %} + +{% include "individual-sponsors.html" %} + + +
+ + {% endblock content %} diff --git a/templates/foundation.html b/templates/foundation.html new file mode 100644 index 0000000000..dd4ef09081 --- /dev/null +++ b/templates/foundation.html @@ -0,0 +1,136 @@ +{% extends "layouts/base.html" %} + +{% block content %} +
+ + +

+ +Our mission is to promote, protect, and advance the free and open source Bevy Engine and related open source projects. We coordinate and promote its continued maintenance and development, educate and train members of the general public in its usage, and conduct research and development to advance the state of the art of creating real-time applications and simulations. +

+ +

+In short: we exist to develop Bevy and teach people how to use it! +

+ +

Donate

+ +

+Bevy will always be free and open-source, but it isn't free to make! Because Bevy is free, we rely on the generosity of the Bevy community to fund our efforts. If you are a happy user of Bevy or you believe in our mission, please consider donating! +

+ + + +Bevy Foundation currently uses donations in the following ways: + +
    +
  • Hiring Maintainers: Maintainers are technical experts that facilitate the development of Bevy by reviewing, adjusting, and merging changes from the Bevy community, reviewing and developing designs, and choosing project direction. They are technical experts that contribute their own changes to Bevy, as well as social experts that ensure the Bevy community is a pleasant and effective place to work. Maintainers serve as public representatives of the project. Our bar for maintainership is high. See our Bevy Organization document for details.
  • +
  • Infrastructure: The foundation will pay present and future hosting costs, such as hosting the Bevy website and continuous integration (CI) to validate our code. Currently these costs are low, but we expect them to increase over time.
  • +
  • Operational Costs: Keeping a nonprofit organization compliant and operational takes time and money. These costs are currently very low, but we expect them to increase over time as we grow. Our goal is to minimize these costs as much as possible as our goal is to maximize the amount we spend on actually building Bevy and accomplishing our mission.
  • +
+ +

Application for 501(c)(3)

+ +

We have applied for a federal 501(c)(3) non-profit public charity designation.

+ +

If our 501(c)(3) application is accepted, this status will exempt us from federal income tax and allow donors in the United States to deduct their donations on their federal taxes.

+ +

Note that the 501(c)(3) application has not yet been approved, and there has been an increasing number of denials for technology-oriented charities. The experts we have talked to have told us not to get our hopes up.

+ +

If tax-deductibility is important to you, please do not donate until we receive a determination. But also note that if our application is accepted, donations made prior to our acceptance will retroactively be tax-deductible! Neat!

+ +

Leadership

+ +

+Bevy Foundation is currently led by the following Board of Directors: +

+ +
+ +
+
+
+
+ Carter Anderson +
+
+ @cart +
President/Interim Treasurer
+
+
+ +
+
+
+
+ Alice Cecile +
+
+ @alice-i-cecile +
Secretary
+
+
+ +
+
+
+
+ François Mockers +
+
+ @mockersf +
+
+ +
+
+
+
+ Robert Swain +
+
+ @superdump +
+
+ +
+
+
+
+ James Liu +
+
+ @james7132 +
+
+
+ +
+The Board of Directors governs how Bevy Foundation operates, which includes how funds are allocated and how Bevy communities are run. As a current matter of de-facto policy adopted via consensus by the current Board of Directors, Bevy Maintainers are to be offered Director status (functionally this happens via a vote by the current board). +
+ +

Transparency

+ +

+Bevy Foundation is a Washington state non-profit (with a pending 501(c)(3) application). We strive to make our operations transparent: +

+ +
    +
  • + Bylaws: The operational rules we have adopted +
  • +
  • + Meeting Minutes: Learn about the decisions the board makes and why we make them +
  • +
  • + Documents: Public Bevy Foundation documents, such as our Articles of Incorporation +
  • +
  • + Budget: How we plan to spend money this year. +
  • +
+ +
+{% endblock content %} diff --git a/templates/index.html b/templates/index.html index 837fa84217..52bca9a44f 100644 --- a/templates/index.html +++ b/templates/index.html @@ -296,142 +296,14 @@

Free and Open Source

- Ready to start building Bevy apps? Get started fast with The Quick Start - Guide! -
- Bevy logo -
-

- A big thanks to Bevy's generous Sponsors - for making our work - sustainable. Note that all Bevy leaders accepting sponsorships have signed this Sponsorship Pledge to ensure that Bevy remains a community-first project. -

- -
-

Diamond Sponsors

-

$4,000 / month

-
- - - -
-
-
-

Platinum Sponsors

-

$1,000 / month

- -
-
-

Gold Sponsors

-

$300 / month

-
- - - -
-
-
-

Silver Sponsors

-

$200 / month

-
- - - -
+ Ready to start building Bevy apps? Get started fast with The Quick Start + Guide!
-
-

Bronze Sponsors

-

$100 / month

- + Bevy logo + -

Past Sponsors

-
Futurewei, Legion Labs, Striked, Metabuild, Meetkai
-
{% endblock content %} diff --git a/templates/individual-sponsors.html b/templates/individual-sponsors.html new file mode 100644 index 0000000000..d0d851dd36 --- /dev/null +++ b/templates/individual-sponsors.html @@ -0,0 +1,89 @@ + + +
+ These people and organizations sponsor individual members of Bevy leadership using platforms like GitHub sponsors. This is the "old" way to support Bevy. The Bevy Foundation does not have access to these funds and these sponsorships do not contribute to the totals displayed at the top of the Donate page. We will be deprecating this section soon! +
+ + +
+ + +{% set sponsors = load_data(path="content/donate/individual-sponsors.toml") %} +{% set tiers = load_data(path="content/donate/tiers.toml") %} + +{% for tier in tiers.tier | reverse %} + {% if not tier.reward_logo and not tier.reward_link and not tier.reward_name %} + {% continue %} + {% endif %} + {% set next_tier_index = tiers.tier | length - loop.index0 %} + {% set next_tier = tiers.tier | nth(n=next_tier_index) %} + + {% set_global sponsors_in_tier = [] %} + {% if sponsors.sponsor %} + {% for sponsor in sponsors.sponsor %} + {% if sponsor.past %} + {% continue %} + {% endif %} + + + {% if sponsor.amount >= tier.amount %} + {% if next_tier and sponsor.amount >= next_tier.amount %} + {% continue %} + {% endif %} + {% set_global sponsors_in_tier = sponsors_in_tier | concat(with=sponsor) %} + {% endif %} + {% endfor %} + {% endif %} + + {% if sponsors_in_tier | length == 0 %} + {% continue %} + {% endif %} + +
+

{{ tier.name }}

+

${{ tier.amount }} / month

+
+ {% for sponsor in sponsors_in_tier %} + {% if tier.reward_logo %} + + + + {% elif tier.reward_link %} + +
{{ sponsor.name }}
+
+ {% elif tier.reward_name %} +
{{ sponsor.name }}
+ {% endif %} + {% endfor %} +
+
+{% endfor %} + +{% if sponsors.sponsor %} + {% set_global first = true %} + {% set sorted_sponsors = sponsors.sponsor | sort(attribute="amount") | reverse %} + {% set_global past_sponsor_exists = false %} + {% for sponsor in sorted_sponsors %} + {% if sponsor.past %} + {% set_global past_sponsor_exists = true %} + {% endif %} + {% endfor %} + {% if past_sponsor_exists %} +

Past Sponsors

+
+ {% for sponsor in sorted_sponsors %} + {% if not sponsor.past %} + {% continue %} + {% endif %} + {% if first %}{{ sponsor.name }}{% else %} , {{ sponsor.name }}{% endif %} + {% if first %} + {% set_global first = false %} + {% endif %} + {% endfor %} +
+ {% endif %} +{% endif %} + +
\ No newline at end of file diff --git a/templates/layouts/base.html b/templates/layouts/base.html index 68739070b8..261f20d3f5 100644 --- a/templates/layouts/base.html +++ b/templates/layouts/base.html @@ -135,6 +135,7 @@ {{ header_macros::header_item(name="Learn", current_path=current_path) }} {{ header_macros::header_item(name="News", current_path=current_path) }} {{ header_macros::header_item(name="Community", current_path=current_path) }} + {{header_macros::header_item(name="Foundation", current_path=current_path)}} {{ header_macros::header_item(name="Assets", current_path=current_path) }} {{ header_macros::header_item(name="Examples", current_path=current_path) }} {#
  • @@ -144,7 +145,7 @@
  • - Donate + Donate heart icon +{% macro comma_string(value) %}{% set_global number_string = value | as_str %}{% set_global number_commas = "" %}{% set_global letter_count = 0 %}{% for letter in number_string | reverse %}{% set_global number_commas = number_commas ~ letter %}{% set_global letter_count = letter_count + 1 %}{% if letter_count > 2 and letter_count % 3 == 0 and letter_count != number_string | length %}{% set_global number_commas = number_commas ~ "," %}{% endif %}{% endfor %}{{number_commas | reverse}}{% endmacro comma_string %} \ No newline at end of file diff --git a/templates/page.html b/templates/page.html new file mode 100644 index 0000000000..b2702767a7 --- /dev/null +++ b/templates/page.html @@ -0,0 +1,5 @@ +{% extends "layouts/base.html" %} + +{% block content %} +
    {{ page.content | safe }}
    +{% endblock content %} diff --git a/templates/sponsors.html b/templates/sponsors.html new file mode 100644 index 0000000000..ada2a1286a --- /dev/null +++ b/templates/sponsors.html @@ -0,0 +1,100 @@ +{% set sponsors = load_data(path="content/donate/foundation-sponsors.toml") %} + + + +{% set_global has_active_sponsor = false %} +{% if sponsors.sponsor %} + {% for sponsor in sponsors.sponsor %} + {% if not sponsor.past %} + {% set_global has_active_sponsor = true %} + {% endif %} + {% endfor %} +{% endif %} + +{% if not has_active_sponsor %} +
    +{% endif %} + +
    + + +{% set tiers = load_data(path="content/donate/tiers.toml") %} + +{% for tier in tiers.tier | reverse %} + {% if not tier.reward_logo and not tier.reward_link and not tier.reward_name %} + {% continue %} + {% endif %} + {% set next_tier_index = tiers.tier | length - loop.index0 %} + {% set next_tier = tiers.tier | nth(n=next_tier_index) %} + + {% set_global sponsors_in_tier = [] %} + {% if sponsors.sponsor %} + {% for sponsor in sponsors.sponsor %} + {% if sponsor.past %} + {% continue %} + {% endif %} + + + {% if sponsor.amount >= tier.amount %} + {% if next_tier and sponsor.amount >= next_tier.amount %} + {% continue %} + {% endif %} + {% set_global sponsors_in_tier = sponsors_in_tier | concat(with=sponsor) %} + {% endif %} + {% endfor %} + {% endif %} + + {% if sponsors_in_tier | length == 0 %} + {% continue %} + {% endif %} + +
    +

    {{ tier.name }}

    +

    ${{ tier.amount }} / month

    +
    + {% for sponsor in sponsors_in_tier %} + {% if tier.reward_logo %} + + + + {% elif tier.reward_link %} + +
    {{ sponsor.name }}
    +
    + {% elif tier.reward_name %} +
    {{ sponsor.name }}
    + {% endif %} + {% endfor %} +
    +
    +{% endfor %} + +{% if sponsors.sponsor %} + {% set_global first = true %} + {% set sorted_sponsors = sponsors.sponsor | sort(attribute="amount") | reverse %} + {% set_global past_sponsor_exists = false %} + {% for sponsor in sorted_sponsors %} + {% if sponsor.past %} + {% set_global past_sponsor_exists = true %} + {% endif %} + {% endfor %} + {% if past_sponsor_exists %} +

    Past Sponsors

    +
    + {% for sponsor in sorted_sponsors %} + {% if not sponsor.past %} + {% continue %} + {% endif %} + {% if first %}{{ sponsor.name }}{% else %} , {{ sponsor.name }}{% endif %} + {% if first %} + {% set_global first = false %} + {% endif %} + {% endfor %} +
    + {% endif %} +{% endif %} + +
    \ No newline at end of file diff --git a/templates/sponsorship-pledge.html b/templates/sponsorship-pledge.html index c630713405..b7939c1cfc 100644 --- a/templates/sponsorship-pledge.html +++ b/templates/sponsorship-pledge.html @@ -2,59 +2,71 @@ {% block content %}

    Bevy's Sponsorship Model

    - Bevy is a community-driven people-first project. We do not have a business model. We don't sell anything. For now, - we don't even have a centralized legal organization. Instead, our work is fully supported by sponsorships from - generous individuals and companies. But introducing money into the equation creates concerns about power dynamics - and incentives. And some companies require contracts as a part of their sponsorship programs. Bevy leaders (Project - Leads and Maintainers) must serve the community's interests above all else. Therefore leaders that accept any - money within the context of Bevy must abide by the following pledge: + + Bevy is a community-driven people-first project. Our work is fully supported by sponsorships from generous individuals and companies. + But introducing money into the equation creates concerns about power dynamics and incentives. And some companies require contracts as + a part of their sponsorship programs. Bevy leaders (Project Leads, Maintainers, Foundation Directors) must serve the community's + interests above all else. Therefore leaders that accept any money within the context of Bevy must abide by the following pledge: +

    The Pledge

      -
    1. - The needs of the people in the Bevy community come first. Everything we do should be in the - interest of the individuals in the Bevy community. Yes ... companies use (and support) Bevy. This is - a good thing. But companies are not people. Companies consist of people. The voice of an - individual in a company should be weighted exactly the same as every other voice in our community. No more. - No less. -
    2. -
    3. - Money can never buy project direction. Bevy's design direction must always be determined by - community needs and (as much as possible) consensus. For example: a company can never directly pay us to - adopt a feature that goes against the community's interests. Nor can they indirectly pull the strings via - financial pressure, such as threat of un-sponsoring. -
    4. -
    5. - Money can never buy project priority. We must always do the work that we believe is best for - the Bevy community at a given moment. We cannot be paid to bump a company's pet feature up in our priority - list. Our time (within the context of what we commit to the Bevy community) is not for sale. If we are "full - time" Bevy leaders, none of our time can be bought. If we are "part time Bevy leaders", only the remaining - time can be bought. -
    6. -
    7. - Bevy leaders must be able to speak their mind. We will never sign away our right to disclose our - thoughts or opinions about entities we receive money from. This means no "non-disparagement agreements". - "Non-disclosure agreements" are only ok within the context of protecting private information (that does not - directly relate to Bevy). -
    8. -
    9. - Bevy leaders must be open about who supports them (within the context of Bevy). No hidden entities - behind the scenes. If we receive $200 a month ($2,400 a year) or more from an entity or have a financial - stake in one that - relates to the Bevy project in any reasonable way, we must disclose it within 6 months of receiving the - money or stake. -
    10. -
    11. - Bevy leaders will hold each other accountable. If any of us suspects a violation of the pledge, we - will immediately seek to rectify it. First amongst ourselves if there is reasonable doubt, and then publicly - if the situation demands it. -
    12. -
    13. - The pledge and the Bevy Community always come first. If we are confronted with the choice of - upholding the pledge or losing the financial support of an entity, we will choose the pledge every time. The - amount of money on the table has no bearing on this. We must be honest with ourselves and each other. If we - can't say no to large sums of money with pledge-violating strings attached, we don't deserve to be Bevy - leaders. -
    14. +
    15. + The needs of the people in the Bevy community come first. Everything we do should be in the + interest of the individuals in the Bevy community. Yes ... companies use (and support) Bevy. This is + a good thing. But companies are not people. Companies consist of people. The voice of an + individual in a company should be weighted exactly the same as every other voice in our community. No more. + No less. +
    16. +
    17. + Money can never buy project direction. Bevy's design direction must always be determined by + community needs and (as much as possible) consensus. For example: a company can never directly pay us to + adopt a feature that goes against the community's interests. Nor can they indirectly pull the strings via + financial pressure, such as threat of un-sponsoring. +
    18. +
    19. + Money can never buy project priority. We must always do the work that we believe is best for + the Bevy community at a given moment. We cannot be paid to bump a company's pet feature up in our priority + list. Our time (within the context of what we commit to the Bevy community) is not for sale. If we are "full + time" Bevy leaders, none of our time can be bought. If we are "part time Bevy leaders", only the remaining + time can be bought. +
    20. +
    21. + Bevy leaders must be able to speak their mind. We will never sign away our right to disclose our + thoughts or opinions about entities we receive money from. This means no "non-disparagement agreements". + "Non-disclosure agreements" are only ok within the context of protecting private information (that does not + directly relate to Bevy). +
    22. +
    23. + Bevy leaders must be open about who supports them (within the context of Bevy). No hidden entities + behind the scenes. If we receive $200 a month ($2,400 a year) or more from an entity or have a financial + stake in one that + relates to the Bevy project in any reasonable way, we must disclose it within 6 months of receiving the + money or stake. +
    24. +
    25. + Bevy leaders will hold each other accountable. If any of us suspects a violation of the pledge, we + will immediately seek to rectify it. First amongst ourselves if there is reasonable doubt, and then publicly + if the situation demands it. +
    26. +
    27. + The pledge and the Bevy Community always come first. If we are confronted with the choice of + upholding the pledge or losing the financial support of an entity, we will choose the pledge every time. The + amount of money on the table has no bearing on this. We must be honest with ourselves and each other. If we + can't say no to large sums of money with pledge-violating strings attached, we don't deserve to be Bevy + leaders. +
    28. +
    29. + New Bevy programs must be compatible with our mission:. Bevy Foundation board members, + when considering new programs for Bevy, must ask themselves the following: +
        +
      1. Is this compatible with the Bevy Foundation's mission?
      2. +
      3. Is this in the best interest of the Bevy community and the general public?
      4. +
      5. Will this compromise the integrity of Bevy as a free and open source offering in any way?
      6. +
      7. Will this change our incentives in a way that risks changing our answers to (1), (2), or (3)?
      8. +
      9. If we are monetizing something, are we doing it in an ethical way?
      10. +
      +

      +

    The Bevy project (and the financial support we receive) is constantly growing. We must be certain we don't lose @@ -64,16 +76,18 @@

    The Pledge

    append-only.

    - Currently, this agreement operates on the honor system. We believe all of our maintainers have won the trust of - the community, but we will be putting together a legal organization to uphold this agreement and help fairly - collect and distribute funds later this year. + Bevy Foundation is the nonprofit that helps drive the development of Bevy. For Bevy Foundation Directors and Officers, + this agreement is complementary to and supplemental to legal obligations associated with those roles + (avoiding conflicts of interest, avoiding self-dealing, etc). While there is unlikely to be incompatibilities between + these obligations (as the motivations behind those laws and The Pledge are similar), the legal obligations must always + come first.

    - Also note that this only applies to Bevy leadership. We welcome and encourage companies to fund development - efforts that improve Bevy in whatever way they want. However Bevy leadership cannot be involved in any way - that violates The Pledge. Bevy leadership must always be the filter that protects the community from - changes that go against their interests. Companies should do their best to collaborate with the Bevy community - (and Bevy leaders) to ensure their changes are acceptable. + Also note that this only applies to Bevy leadership. We welcome and encourage companies to fund development + efforts that improve Bevy in whatever way they want. However Bevy leadership cannot be involved in any way + that violates The Pledge. Bevy leadership must always be the filter that protects the general public from + changes that go against their interests. Companies should do their best to collaborate with the Bevy community + (and Bevy leaders) to ensure their changes are acceptable.

    Pledge Signers

    -
    {% endblock content %} From 5291d50ecdd0f6d4d7d519dbd926397de241ab59 Mon Sep 17 00:00:00 2001 From: Carter Anderson Date: Mon, 11 Mar 2024 12:45:14 -0700 Subject: [PATCH 3/6] Update content/foundation/bylaws/index.md Co-authored-by: Rob Parrett --- content/foundation/bylaws/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/foundation/bylaws/index.md b/content/foundation/bylaws/index.md index a27bfb6ef6..2fbfb34782 100644 --- a/content/foundation/bylaws/index.md +++ b/content/foundation/bylaws/index.md @@ -9,7 +9,7 @@ header_message = "Foundation Bylaws" ## Article 1. Offices -The principal office of Bevy Foundation (the “Corporation) shall be located at its principal place of business or such other place as the Board of Directors (“Board”) may designate. The Corporation may have other such offices, either within or without the State of Washington, as the Board may designate or as the business of the Corporation may require from time to time. +The principal office of Bevy Foundation (the “Corporation") shall be located at its principal place of business or such other place as the Board of Directors (“Board”) may designate. The Corporation may have other such offices, either within or without the State of Washington, as the Board may designate or as the business of the Corporation may require from time to time. ## Article 2. Purpose From 043c06d271439d8144ddfde2ef19cf1140732c25 Mon Sep 17 00:00:00 2001 From: Carter Anderson Date: Mon, 11 Mar 2024 12:46:24 -0700 Subject: [PATCH 4/6] Newline? --- content/donate/_index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/donate/_index.md b/content/donate/_index.md index 81e9fdf8f9..cfa3465e37 100644 --- a/content/donate/_index.md +++ b/content/donate/_index.md @@ -3,4 +3,4 @@ title = "Donate" template = "donate.html" [extra] header_message = "Donate" -+++ \ No newline at end of file ++++ From 82092e6f3dd83695736c5c07eadd1b71baa2adf7 Mon Sep 17 00:00:00 2001 From: Carter Anderson Date: Mon, 11 Mar 2024 12:56:02 -0700 Subject: [PATCH 5/6] Liiiiiiinnnnnt --- content/donate/metrics.toml | 2 +- sass/pages/_donate.scss | 4 ++-- sass/pages/_foundation.scss | 2 +- templates/donate.html | 2 +- templates/individual-sponsors.html | 2 +- templates/layouts/base.html | 2 +- templates/macros/numbers.html | 2 +- templates/sponsors.html | 2 +- templates/sponsorship-pledge.html | 15 +++++++-------- 9 files changed, 16 insertions(+), 17 deletions(-) diff --git a/content/donate/metrics.toml b/content/donate/metrics.toml index 02d9d2b0d1..b68f14da9c 100644 --- a/content/donate/metrics.toml +++ b/content/donate/metrics.toml @@ -1,3 +1,3 @@ sponsors = 0 members = 0 -monthly_dollars = 0 \ No newline at end of file +monthly_dollars = 0 diff --git a/sass/pages/_donate.scss b/sass/pages/_donate.scss index fe3fa1a326..fd795607f6 100644 --- a/sass/pages/_donate.scss +++ b/sass/pages/_donate.scss @@ -125,10 +125,10 @@ div.donate-sponsor { } } - .donate-level-info { +.donate-level-info { margin-top: 8px; margin-left: 14px; - } +} .donate-level-icon { width: 70px; diff --git a/sass/pages/_foundation.scss b/sass/pages/_foundation.scss index 8b490db19f..dc38c06c1d 100644 --- a/sass/pages/_foundation.scss +++ b/sass/pages/_foundation.scss @@ -6,4 +6,4 @@ height: 110px; margin-top: 2.2rem; margin-bottom: 0.8rem; -} \ No newline at end of file +} diff --git a/templates/donate.html b/templates/donate.html index 873d1ec9c9..0c647e1dcc 100644 --- a/templates/donate.html +++ b/templates/donate.html @@ -111,7 +111,7 @@
    Link in Credits
    {% endif %}
    - + {% endfor %} diff --git a/templates/individual-sponsors.html b/templates/individual-sponsors.html index d0d851dd36..be4fc477b6 100644 --- a/templates/individual-sponsors.html +++ b/templates/individual-sponsors.html @@ -86,4 +86,4 @@

    Past Sponsors

    {% endif %} {% endif %} - \ No newline at end of file + diff --git a/templates/layouts/base.html b/templates/layouts/base.html index 261f20d3f5..3e8b90146b 100644 --- a/templates/layouts/base.html +++ b/templates/layouts/base.html @@ -135,7 +135,7 @@ {{ header_macros::header_item(name="Learn", current_path=current_path) }} {{ header_macros::header_item(name="News", current_path=current_path) }} {{ header_macros::header_item(name="Community", current_path=current_path) }} - {{header_macros::header_item(name="Foundation", current_path=current_path)}} + {{ header_macros::header_item(name="Foundation", current_path=current_path) }} {{ header_macros::header_item(name="Assets", current_path=current_path) }} {{ header_macros::header_item(name="Examples", current_path=current_path) }} {#
  • diff --git a/templates/macros/numbers.html b/templates/macros/numbers.html index 54e5fb76a0..3fb43b27ba 100644 --- a/templates/macros/numbers.html +++ b/templates/macros/numbers.html @@ -1,2 +1,2 @@ -{% macro comma_string(value) %}{% set_global number_string = value | as_str %}{% set_global number_commas = "" %}{% set_global letter_count = 0 %}{% for letter in number_string | reverse %}{% set_global number_commas = number_commas ~ letter %}{% set_global letter_count = letter_count + 1 %}{% if letter_count > 2 and letter_count % 3 == 0 and letter_count != number_string | length %}{% set_global number_commas = number_commas ~ "," %}{% endif %}{% endfor %}{{number_commas | reverse}}{% endmacro comma_string %} \ No newline at end of file +{% macro comma_string(value) %}{% set_global number_string = value | as_str %}{% set_global number_commas = "" %}{% set_global letter_count = 0 %}{% for letter in number_string | reverse %}{% set_global number_commas = number_commas ~ letter %}{% set_global letter_count = letter_count + 1 %}{% if letter_count > 2 and letter_count % 3 == 0 and letter_count != number_string | length %}{% set_global number_commas = number_commas ~ "," %}{% endif %}{% endfor %}{{ number_commas | reverse }}{% endmacro comma_string %} diff --git a/templates/sponsors.html b/templates/sponsors.html index ada2a1286a..ca7a17ea62 100644 --- a/templates/sponsors.html +++ b/templates/sponsors.html @@ -97,4 +97,4 @@

    Past Sponsors

    {% endif %} {% endif %} - \ No newline at end of file + diff --git a/templates/sponsorship-pledge.html b/templates/sponsorship-pledge.html index b7939c1cfc..67740bcc55 100644 --- a/templates/sponsorship-pledge.html +++ b/templates/sponsorship-pledge.html @@ -58,14 +58,13 @@

    The Pledge

  • New Bevy programs must be compatible with our mission:. Bevy Foundation board members, when considering new programs for Bevy, must ask themselves the following: -
      -
    1. Is this compatible with the Bevy Foundation's mission?
    2. -
    3. Is this in the best interest of the Bevy community and the general public?
    4. -
    5. Will this compromise the integrity of Bevy as a free and open source offering in any way?
    6. -
    7. Will this change our incentives in a way that risks changing our answers to (1), (2), or (3)?
    8. -
    9. If we are monetizing something, are we doing it in an ethical way?
    10. -
    -

    +
      +
    1. Is this compatible with the Bevy Foundation's mission?
    2. +
    3. Is this in the best interest of the Bevy community and the general public?
    4. +
    5. Will this compromise the integrity of Bevy as a free and open source offering in any way?
    6. +
    7. Will this change our incentives in a way that risks changing our answers to (1), (2), or (3)?
    8. +
    9. If we are monetizing something, are we doing it in an ethical way?
    10. +
  • From 08304471a17187e4e35e27313d99ab0557c04167 Mon Sep 17 00:00:00 2001 From: Carter Anderson Date: Mon, 11 Mar 2024 12:56:23 -0700 Subject: [PATCH 6/6] Update content/foundation/bylaws/index.md Co-authored-by: Rob Parrett --- content/foundation/bylaws/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/foundation/bylaws/index.md b/content/foundation/bylaws/index.md index 2fbfb34782..a7e584e381 100644 --- a/content/foundation/bylaws/index.md +++ b/content/foundation/bylaws/index.md @@ -9,7 +9,7 @@ header_message = "Foundation Bylaws" ## Article 1. Offices -The principal office of Bevy Foundation (the “Corporation") shall be located at its principal place of business or such other place as the Board of Directors (“Board”) may designate. The Corporation may have other such offices, either within or without the State of Washington, as the Board may designate or as the business of the Corporation may require from time to time. +The principal office of Bevy Foundation (the “Corporation”) shall be located at its principal place of business or such other place as the Board of Directors (“Board”) may designate. The Corporation may have other such offices, either within or without the State of Washington, as the Board may designate or as the business of the Corporation may require from time to time. ## Article 2. Purpose