From e9dc3dfdcd13e57124ed7106043ce3faba6b50d5 Mon Sep 17 00:00:00 2001 From: Sam Pfluger <108141731+Sampfluger88@users.noreply.github.com> Date: Fri, 25 Oct 2024 18:14:20 -0500 Subject: [PATCH 1/7] Update communications.md (#23278) --- handbook/company/communications.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/handbook/company/communications.md b/handbook/company/communications.md index 12bf24e3f2..5ef1e6e22f 100644 --- a/handbook/company/communications.md +++ b/handbook/company/communications.md @@ -1369,11 +1369,13 @@ Related content... Wherever possible, avoid creating nested headings. For example: ``` -## Things -### Thing 1 +### Things + +#### Thing 1 Hi my name is Thing 1 + ``` From e3df0afda70a06a0865906cc18a6325b9f147637 Mon Sep 17 00:00:00 2001 From: Mike McNeil Date: Fri, 25 Oct 2024 18:20:07 -0500 Subject: [PATCH 2/7] Update CODEOWNERS (#23279) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Transfer codeowner for communiations and leadership to Sam, who will loop me in anytime I need 👀 --- CODEOWNERS | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index 4422121ec4..6d979e02d6 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -84,25 +84,25 @@ go.mod @fleetdm/go # (see website/config/custom.js for DRIs of other paths not listed here) ############################################################################################## /handbook/company/README.md @mikermcneil -/handbook/company/communications.md @mikermcneil -/handbook/company/leadership.md @mikermcneil +/handbook/company/communications.md @sampfluger88 +/handbook/company/leadership.md @sampfluger88 /handbook/company/why-this-way.md @mikermcneil /handbook/README.md @mikermcneil /handbook/company/open-positions.yml @sampfluger88 -#/handbook/company/product-groups.md @lukeheath Covered in custom.js -/handbook/finance/README.md @sampfluger88 -/handbook/finance/finance.rituals.yml @sampfluger88 +#/handbook/company/product-groups.md 🤡 Covered in custom.js +/handbook/finance/README.md @sampfluger88 +/handbook/finance/finance.rituals.yml @sampfluger88 /handbook/digital-experience/application-security.md @lukeheath /handbook/digital-experience/security-audits.md @lukeheath /handbook/digital-experience/security-policies.md @lukeheath /handbook/digital-experience/security.md @lukeheath /handbook/digital-experience/vendor-questionnaires.md @lukeheath -/handbook/digital-experience @sampfluger88 -/handbook/customer-success @sampfluger88 -/handbook/demand @sampfluger88 -#/handbook/engineering @sampfluger88 @lukeheath Covered in custom.js -/handbook/sales @sampfluger88 -#/handbook/product-design @sampfluger88 Covered in custom.js +/handbook/digital-experience @sampfluger88 +/handbook/customer-success @sampfluger88 +/handbook/demand @sampfluger88 +#/handbook/engineering 🤡 Covered in custom.js +/handbook/sales @sampfluger88 +#/handbook/product-design 🤡 Covered in custom.js ############################################################################################## # 🌐 GitHub issue templates From 6b62f3f882e7418bc418fac4e41a7002c9248624 Mon Sep 17 00:00:00 2001 From: Eric Date: Fri, 25 Oct 2024 19:00:08 -0500 Subject: [PATCH 3/7] Website: Update Homepage 2024-10-25 (#23254) Closes: https://github.com/fleetdm/confidential/issues/8555 Changes: - Added a statistics section under the logo carousel on the homepage. --- website/assets/styles/pages/homepage.less | 85 +++++++++++++++++++++++ website/views/pages/homepage.ejs | 20 ++++++ 2 files changed, 105 insertions(+) diff --git a/website/assets/styles/pages/homepage.less b/website/assets/styles/pages/homepage.less index f063cb678f..a1846af704 100644 --- a/website/assets/styles/pages/homepage.less +++ b/website/assets/styles/pages/homepage.less @@ -76,6 +76,66 @@ max-width: 1200px; padding-left: 60px; padding-right: 60px; + [parasails-component='logo-carousel'] { + margin-bottom: 32px; + } + } + [purpose='statistics'] { + display: flex; + flex-direction: row; + justify-content: center; + h4 { + color: #515774; + text-align: center; + + /* Body LG (bold) */ + font-family: Inter; + font-size: 18px; + font-style: normal; + font-weight: 700; + line-height: 27px; + } + p { + color: var(--text-text-primary, #515774); + text-align: center; + text-wrap: nowrap; + + /* Body XS (FKA p small) */ + font-family: Inter; + font-size: 12px; + font-style: normal; + font-weight: 400; + line-height: 18px; /* 150% */ + margin-bottom: 0px; + } + // div { + // display: flex; + // padding: 8px 64px; + // flex-direction: column; + // align-items: center; + // } + [purpose='customers'] { + border-right: 1px solid #E2E4EA; + display: flex; + padding: 8px 64px; + flex-direction: column; + align-items: center; + } + [purpose='devices'] { + border-right: 1px solid #E2E4EA; + display: flex; + padding: 8px 64px; + flex-direction: column; + align-items: center; + } + [purpose='countries'] { + display: flex; + padding: 8px 64px; + flex-direction: column; + align-items: center; + + } + } @@ -1215,6 +1275,31 @@ padding-bottom: 320px; padding-left: 24px; padding-right: 24px; + } + [purpose='statistics'] { + flex-direction: column; + max-width: fit-content; + margin-left: auto; + margin-right: auto; + [purpose='customers-and-countries-row'] { + order: 2; + } + [purpose='customers'] { + padding: 16px 48px 16px 32px; + } + [purpose='devices'] { + order: 1; + border-bottom: 1px solid #E2E4EA; + padding: 16px 32px; + border-right: none; + } + + [purpose='countries'] { + padding: 16px 32px 16px 48px; + border-right: none; + } + + } [purpose='hero-background-image'] { background-size: auto 320px; diff --git a/website/views/pages/homepage.ejs b/website/views/pages/homepage.ejs index d998f6f07e..5b38602d46 100644 --- a/website/views/pages/homepage.ejs +++ b/website/views/pages/homepage.ejs @@ -20,6 +20,26 @@ <%/* Row of logos */%>
+
+
+
+

450+

+

customers

+
+
+

90+

+

countries

+
+
+
+

2,000,000+

+

computing devices

+
+
+

90+

+

countries

+
+
<%/* Homepage content */%>
From abc15a217ebdc67cc61169fda4a8892bd3fc8557 Mon Sep 17 00:00:00 2001 From: Mike McNeil Date: Sun, 27 Oct 2024 10:43:17 -0500 Subject: [PATCH 4/7] Handbook: Add calendly availability check (#23273) --- .../digital-experience/digital-experience.rituals.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/handbook/digital-experience/digital-experience.rituals.yml b/handbook/digital-experience/digital-experience.rituals.yml index ec08197e0b..ef8e569db6 100644 --- a/handbook/digital-experience/digital-experience.rituals.yml +++ b/handbook/digital-experience/digital-experience.rituals.yml @@ -221,3 +221,11 @@ description: "Log into the \"Integrations admin\" account in Salesforce and change the password to prevent a password change being required by Salesforce." moreInfoUrl: "https://fleetdm.com/handbook/digital-experience#change-the-integrations-admin-salesforce-account-password" dri: "eashaw" +- + task: "Check that there is sufficient availability for scheduling demos via fleetdm.com/contact" + startedOn: "2024-10-25" + frequency: "Weekly" + description: "Check out the meeting booking flow that you get when you schedule a demo from Fleet's contact form, and make sure there is plenty of availability for the rest of the day in US PT thru ET, with significant spots open in the morning (US time) for folks in EMEA and at least one or two spots open in the evening (US time) for folks in APAC / Hawaii." + moreInfoUrl: "" + dri: "onasismunro" + From 0ba4a93f6d752bcde6a2487b86bf945db0714c4c Mon Sep 17 00:00:00 2001 From: Noah Talerman <47070608+noahtalerman@users.noreply.github.com> Date: Sun, 27 Oct 2024 11:48:41 -0400 Subject: [PATCH 5/7] Update security.md (#23265) - Handbook default protected branches - Remove table and point to settings so handbook is easier to maintain. --- handbook/digital-experience/security.md | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/handbook/digital-experience/security.md b/handbook/digital-experience/security.md index 46bbbf31ed..0d7706aea2 100644 --- a/handbook/digital-experience/security.md +++ b/handbook/digital-experience/security.md @@ -520,24 +520,9 @@ located in too many places and not security-related. #### Branch protection Branch protection is one of the most important settings to configure and the main reason we should not have members with administrative privileges on the repositories. -Located in the Branches section of repository settings, we create a rule for **main** that applies: +By default, Fleet protects branches with these names: `main`, `patch[_-*]`, `feature[_-*]`, `minor[_-*]`, `rc-minor[_-*]`, `rc-patch[_-*]`, and `fleet-v*`. -| Setting | Value | Note | -| ---------------------------------------------------------------- | ----- | --------------------------------------------------------------------------------------------------------------------- | -| Require a pull request before merging | ✅ | We enforce code reviews, which require PRs. | -| Require approvals | 1️⃣ | We require approval from one person in the team. | -| Dismiss stale pull request approvals when new commits are pushed | ✅ | Without this, someone could get approval for a small, very nice PR and change everything about it! | -| Require review from Code Owners | 🗓 | We are working towards enabling this as our team grows and allows for more flexibility | -| Restrict who can dismiss pull request reviews | 🚫 | As we are a team working in multiple timezones, we want to allow dismissing reviews and getting another one. | -| Allow specified actors to bypass required pull requests | 🚫 | We do not want anyone pushing directly to main. | -| Require status checks to pass before merging | ✅ | Because of our [monorepo](https://en.wikipedia.org/wiki/Monorepo#:~:text=In%20version%20control%20systems%2C%20a,as%20a%20'shared%20codebase'.), it is hard to pick many checks that work for all types of PRs, but we still enable this. | -| Require conversation resolution before merging | 🚫 | Reviewers should not approve a pull request if they do not think it's ready for merging. | -| Require signed commits | 🗓 | We are working towards enabling this, manually keeping track of unverified commits. | -| Require linear history | 🚫 | We do not currently use or enforce practices to generate a linear history. | -| Include administrators | ✅ | We want these rules to apply to *everyone*. | -| Restrict who can push to matching branches | 🚫 | Anyone in our organization should be able to merge PRs that get reviewed, and nobody should be able to push directly. | -| Allow force pushes | 🚫 | We do not need this, so we do not allow it. | -| Allow deletions | 🚫 | We do not want ANYONE to be able to delete the *main* branch. | +To see the rules for protected branches, go tothe Branches section of repository settings. ### Scanning tools Though not technically a part of GitHub itself, we feel like the security tools we use to scan our code, workflows, and GitHub configuration are part of our overall GitHub configuration. From 6094e31fadb2be22098869ddc20de393e3425caf Mon Sep 17 00:00:00 2001 From: Eric Date: Sun, 27 Oct 2024 11:48:05 -0500 Subject: [PATCH 6/7] Website: add support for annual auto issues, add new digital experience issue (#23218) Changes: - updated build-static-content to allow auto-issue rituals with a `annually` frequency - Updated the create-issues-for-todays-rituals script to create GH issues for annually occurring rituals - Added an annual ritual for checking GitHub's terms - Added a responsibility to the Digital experience handbook page about the ritual. --------- Co-authored-by: Sam Pfluger <108141731+Sampfluger88@users.noreply.github.com> --- handbook/digital-experience/README.md | 4 ++++ .../digital-experience.rituals.yml | 10 ++++++++++ website/scripts/build-static-content.js | 2 +- .../scripts/create-issues-for-todays-rituals.js | 15 ++++++++++++++- 4 files changed, 29 insertions(+), 2 deletions(-) diff --git a/handbook/digital-experience/README.md b/handbook/digital-experience/README.md index 2796e59f81..7fdc3a9ced 100644 --- a/handbook/digital-experience/README.md +++ b/handbook/digital-experience/README.md @@ -837,6 +837,10 @@ After the team member notifies the Head of Digital Experience (via Slack), the H 4. Go through the calendar and make sure all private meetings (e.g. 1:1's, E-Group, and quarterly board meetings) have "[no shadows]" in the event title. +### Check GitHub terms + +Go to [GitHub's terms of services](https://docs.github.com/en/free-pro-team@latest/github/site-policy/github-terms-of-service) and search “inbound=outbound” to find the clause, if still there as is, paste a screenshot into the table in this [document](https://docs.google.com/document/d/101rcp9v3Zdml4YolGRmqYS5ruAKzQvXLOTHLXCavPuE/edit#heading=h.xu6qsi0wrns). If the clause has changed, contact Mike M. and let him know. + ## Rituals diff --git a/handbook/digital-experience/digital-experience.rituals.yml b/handbook/digital-experience/digital-experience.rituals.yml index ef8e569db6..d7f42066ca 100644 --- a/handbook/digital-experience/digital-experience.rituals.yml +++ b/handbook/digital-experience/digital-experience.rituals.yml @@ -221,6 +221,16 @@ description: "Log into the \"Integrations admin\" account in Salesforce and change the password to prevent a password change being required by Salesforce." moreInfoUrl: "https://fleetdm.com/handbook/digital-experience#change-the-integrations-admin-salesforce-account-password" dri: "eashaw" +- + task: "Check GitHub/GitLab terms" + startedOn: "2023-10-24" + frequency: "Annually" + description: "Check GitHub's terms to make sure the “inbound=outbound” clause is unchanged." + moreInfoUrl: "https://fleetdm.com/handbook/digital-experience#check-github-terms" + dri: "hollidayn" + autoIssue: + labels: [ "#g-digital-experience" ] + repo: "confidential" - task: "Check that there is sufficient availability for scheduling demos via fleetdm.com/contact" startedOn: "2024-10-25" diff --git a/website/scripts/build-static-content.js b/website/scripts/build-static-content.js index eaa40900b3..e9e8a01afb 100644 --- a/website/scripts/build-static-content.js +++ b/website/scripts/build-static-content.js @@ -1010,7 +1010,7 @@ module.exports = { }); let githubLabelsToCheck = {}; - let KNOWN_AUTOMATABLE_FREQUENCIES = ['Daily', 'Weekly', 'Triweekly', 'Monthly']; + let KNOWN_AUTOMATABLE_FREQUENCIES = ['Daily', 'Weekly', 'Triweekly', 'Monthly', 'Annually']; // Process each rituals YAML file. These will be added to the builtStaticContent as JSON for(let ritualsYamlFilePath of ritualTablesYamlFiles){ // Get this rituals.yml file's parent folder name, we'll use this as the key for this section's rituals in the ritualsTables dictionary diff --git a/website/scripts/create-issues-for-todays-rituals.js b/website/scripts/create-issues-for-todays-rituals.js index 687b26c45a..f37ff95284 100644 --- a/website/scripts/create-issues-for-todays-rituals.js +++ b/website/scripts/create-issues-for-todays-rituals.js @@ -46,6 +46,8 @@ module.exports = { ritualsFrequencyInMs = 1000 * 60 * 60 * 24 * 7 * 2; } else if(ritual.frequency === 'Triweekly'){ ritualsFrequencyInMs = 1000 * 60 * 60 * 24 * 7 * 3; + } else if (ritual.frequency === 'Annually') { + ritualsFrequencyInMs = 1000 * 60 * 60 * 24 * 365; } else if (ritual.frequency === 'Monthly') { // For monthly rituals, we will create issues on the day of the month that the ritual was started on, or the last day of the month if the ritual was started on a day that doesn't exist in the current month // (e.g, the next issue for a monthly ritual started on 2024-01-31 would be created for on 2024-02-29) @@ -66,7 +68,18 @@ module.exports = { }//fi // Determine if we should create an issue for non-monthly rituals. - if(ritual.frequency !== 'Monthly') { + if(ritual.frequency === 'Annually') { + // Create a date of when the ritual started + let ritualStartedOn = new Date(ritual.startedOn); + let dayToCreateIssueOn = ritualStartedOn.getUTCDate(); + let monthToCreateIssueOn = ritualStartedOn.getUTCMonth(); + + // Check if today's month and day match the ritual's start date + if (now.getUTCDate() === dayToCreateIssueOn && now.getUTCMonth() === monthToCreateIssueOn) { + isItTimeToCreateANewIssue = true; + } + nextIssueShouldBeCreatedAt = new Date(now.getUTCFullYear() + 1, monthToCreateIssueOn, dayToCreateIssueOn); + } else if(ritual.frequency !== 'Monthly') { // Get a JS timestamp representing 12 PM UTC of the day this script is running. let twelveHoursInMs = 1000 * 60 * 60 * 12; let lastUTCNoonAt = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), 12, 0, 0, 0)).getTime(); From 82d88bb6cee99a3f2cd1596035569a8cbd07570d Mon Sep 17 00:00:00 2001 From: Isabell Reedy <113355639+ireedy@users.noreply.github.com> Date: Sun, 27 Oct 2024 12:48:49 -0400 Subject: [PATCH 7/7] Update history with 2024 usage stats (#23187) --- handbook/company/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/handbook/company/README.md b/handbook/company/README.md index 03de731421..2dc618f103 100644 --- a/handbook/company/README.md +++ b/handbook/company/README.md @@ -130,6 +130,9 @@ Fleet raised its Series A funding round. The world now has at least 1.65 millio ### 2023: Your last MDM migration Fleet added support for [scripting and management capabilities](https://fleetdm.com/announcements/fleet-introduces-windows-mdm) on macOS, Windows, _and_ Linux devices, allowing IT departments to manage devices more consistently using modern tooling and best practices. This allowed many customers to simplify their management practices. In several cases, Fleet was also able to save customers several hundreds of thousands of dollars (USD) by cutting tool overlap across platforms such as Jamf, Airwatch, Intune, MobileIron, Nexthink, Tanium, Uptycs, and Rapid7. +### 2024: Fleet is growing globally +Fleet has expanded into 90+ countries, with 450+ customers and 2.24 million computers and virtual hosts enrolled (including the worlds most powerful computer). + > Still curious? Check out this [visualization of the Fleet repo over the years](https://www.linkedin.com/feed/update/urn:li:activity:7045068060168220672/) or listen to this [conversation between Zach and Mike Arpaia about the origin story of osquery](https://fleetdm.com/podcasts/the-future-of-device-management-ep1).