CINXE.COM
PHP Foundation: Alive and Kicking
<!DOCTYPE html> <html lang="en"> <head> <title>PHP Foundation: Alive and Kicking</title> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="HandheldFriendly" content="True" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="preload" as="style" href="https://blog.opencollective.com/assets/built/screen.css?v=48add68b07" /> <link rel="preload" as="script" href="https://blog.opencollective.com/assets/built/casper.js?v=48add68b07" /> <link rel="stylesheet" type="text/css" href="https://blog.opencollective.com/assets/built/screen.css?v=48add68b07" /> <link rel="icon" href="https://blog.opencollective.com/content/images/size/w256h256/2019/08/opencollectivelogo-sq.png" type="image/png"> <link rel="canonical" href="https://blog.opencollective.com/php-foundation-alive-and-kicking/"> <meta name="referrer" content="no-referrer-when-downgrade"> <link rel="amphtml" href="https://blog.opencollective.com/php-foundation-alive-and-kicking/amp/"> <meta property="og:site_name" content="Open Collective"> <meta property="og:type" content="article"> <meta property="og:title" content="PHP Foundation: Alive and Kicking"> <meta property="og:description" content="PHP Foundation co-founder Roman Pronskiy on the state of the language, and why its future is bright. Born and raised in Kharkiv, Ukraine, Roman Pronsky has always worked in the tech industry. He started by studying math, and later programming organically fit in. After 10 years working as a software"> <meta property="og:url" content="https://blog.opencollective.com/php-foundation-alive-and-kicking/"> <meta property="og:image" content="https://blog.opencollective.com/content/images/size/w1200/2022/08/Screen-Shot-2022-08-20-at-4.48.07-PM.png"> <meta property="article:published_time" content="2022-08-20T04:49:23.000Z"> <meta property="article:modified_time" content="2022-08-20T04:49:23.000Z"> <meta property="article:tag" content="case studies"> <meta property="article:tag" content="OSC"> <meta property="article:tag" content="Open Source"> <meta property="article:tag" content="php"> <meta property="article:author" content="https://www.facebook.com/directlena"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:title" content="PHP Foundation: Alive and Kicking"> <meta name="twitter:description" content="PHP Foundation co-founder Roman Pronskiy on the state of the language, and why its future is bright. Born and raised in Kharkiv, Ukraine, Roman Pronsky has always worked in the tech industry. He started by studying math, and later programming organically fit in. After 10 years working as a software"> <meta name="twitter:url" content="https://blog.opencollective.com/php-foundation-alive-and-kicking/"> <meta name="twitter:image" content="https://blog.opencollective.com/content/images/size/w1200/2022/08/Screen-Shot-2022-08-20-at-4.48.07-PM.png"> <meta name="twitter:label1" content="Written by"> <meta name="twitter:data1" content="Elena Rubashevska"> <meta name="twitter:label2" content="Filed under"> <meta name="twitter:data2" content="case studies, OSC, Open Source, php"> <meta name="twitter:site" content="@opencollect"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="505"> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "publisher": { "@type": "Organization", "name": "Open Collective", "url": "https://blog.opencollective.com/", "logo": { "@type": "ImageObject", "url": "https://blog.opencollective.com/content/images/2022/07/03--Logotype.png" } }, "author": { "@type": "Person", "name": "Elena Rubashevska", "image": { "@type": "ImageObject", "url": "https://blog.opencollective.com/content/images/2022/05/2225956b-1fd5-449b-80ea-1dd580e25c15.jpeg", "width": 526, "height": 656 }, "url": "https://blog.opencollective.com/author/elena/", "sameAs": [ "https://asd1877.wixsite.com/directlena", "https://www.facebook.com/directlena" ] }, "headline": "PHP Foundation: Alive and Kicking", "url": "https://blog.opencollective.com/php-foundation-alive-and-kicking/", "datePublished": "2022-08-20T04:49:23.000Z", "dateModified": "2022-08-20T04:49:23.000Z", "image": { "@type": "ImageObject", "url": "https://blog.opencollective.com/content/images/size/w1200/2022/08/Screen-Shot-2022-08-20-at-4.48.07-PM.png", "width": 1200, "height": 505 }, "keywords": "case studies, OSC, Open Source, php", "description": "PHP Foundation co-founder Roman Pronskiy on the state of the language, and why its future is bright.\n\nBorn and raised in Kharkiv, Ukraine, Roman Pronsky has always worked in the tech industry. He started by studying math, and later programming organically fit in. After 10 years working as a software engineer and writing about PHP, he joined JetBrains to work on the PhpStorm IDE.\n\nIn November 2021, Roman helped the PHP community launch the PHP Foundation, to support, promote, and advance the PHP ", "mainEntityOfPage": "https://blog.opencollective.com/php-foundation-alive-and-kicking/" } </script> <meta name="generator" content="Ghost 5.101"> <link rel="alternate" type="application/rss+xml" title="Open Collective" href="https://blog.opencollective.com/rss/"> <script defer src="https://cdn.jsdelivr.net/ghost/sodo-search@~1.5/umd/sodo-search.min.js" data-key="6fa7e95c2c5c499f17a4faea1d" data-styles="https://cdn.jsdelivr.net/ghost/sodo-search@~1.5/umd/main.css" data-sodo-search="https://opencollective.ghost.io/" data-locale="en" crossorigin="anonymous"></script> <link href="https://blog.opencollective.com/webmentions/receive/" rel="webmention"> <script defer src="/public/cards.min.js?v=48add68b07"></script> <link rel="stylesheet" type="text/css" href="/public/cards.min.css?v=48add68b07"> <script defer src="/public/comment-counts.min.js?v=48add68b07" data-ghost-comments-counts-api="https://blog.opencollective.com/members/api/comments/counts/"></script><style>:root {--ghost-accent-color: #0C2D66;}</style> <style> /* Hide the feature image */ figure.post-full-image { display: none; } .article-image { display: none; } /* Display "mixtape" cross-linking embeds correctly */ .mixtape { box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1), inset 0 0 0 1px rgba(0, 0, 0, 0.1); width: 100%; } a.mixtape-url { display: flex; justify-content: space-between; align-items: center; width: 100%; box-shadow: none; padding: 1px; } a.mixtape-url:hover { color: inherit; } .mixtape-title { line-height: 1.5em; } .mixtape-content{ padding: 16px 44px; font-size: 1.7rem; } .mixtape-description { line-height: 1.5em; opacity: 0.8; } .gh-head-menu { color: black; } .has-cover .site-description { color:black; } .has-cover:not(.home-template) .gh-head { background-color: #cbddf8; } </style> <script defer data-domain="blog.opencollective.com" src="https://plausible.io/js/plausible.js"></script> </head> <body class="post-template tag-case-studies tag-osc tag-open-source tag-php is-head-left-logo has-cover"> <div class="viewport"> <header id="gh-head" class="gh-head outer"> <div class="gh-head-inner inner"> <div class="gh-head-brand"> <a class="gh-head-logo" href="https://blog.opencollective.com"> <img src="https://blog.opencollective.com/content/images/2022/07/03--Logotype.png" alt="Open Collective"> </a> <button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" width="20" height="20"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg></button> <button class="gh-burger" aria-label="Main Menu"></button> </div> <nav class="gh-head-menu"> <ul class="nav"> <li class="nav-website"><a href="https://opencollective.com">Website</a></li> <li class="nav-case-studies"><a href="https://blog.opencollective.com/tag/case-studies/">Case Studies</a></li> <li class="nav-news"><a href="https://blog.opencollective.com/tag/news/">News</a></li> <li class="nav-how-to"><a href="https://blog.opencollective.com/tag/how-to/">How-To</a></li> <li class="nav-help"><a href="https://docs.opencollective.com">Help</a></li> </ul> </nav> <div class="gh-head-actions"> <button class="gh-search gh-icon-btn" aria-label="Search this site" data-ghost-search><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" width="20" height="20"><path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg></button> </div> </div> </header> <div class="site-content"> <main id="site-main" class="site-main"> <article class="article post tag-case-studies tag-osc tag-open-source tag-php "> <header class="article-header gh-canvas"> <div class="article-tag post-card-tags"> <span class="post-card-primary-tag"> <a href="/tag/case-studies/">case studies</a> </span> </div> <h1 class="article-title">PHP Foundation: Alive and Kicking</h1> <div class="article-byline"> <section class="article-byline-content"> <ul class="author-list instapaper_ignore"> <li class="author-list-item"> <a href="/author/elena/" class="author-avatar" aria-label="Read more of Elena Rubashevska"> <img class="author-profile-image" src="/content/images/size/w100/2022/05/2225956b-1fd5-449b-80ea-1dd580e25c15.jpeg" alt="Elena Rubashevska" /> </a> </li> </ul> <div class="article-byline-meta"> <h4 class="author-name"><a href="/author/elena/">Elena Rubashevska</a></h4> <div class="byline-meta-content"> <time class="byline-meta-date" datetime="2022-08-20">Aug 20, 2022</time> <span class="byline-reading-time"><span class="bull">•</span> 3 min read</span> </div> </div> </section> </div> <figure class="article-image"> <img srcset="/content/images/size/w300/2022/08/Screen-Shot-2022-08-20-at-4.48.07-PM.png 300w, /content/images/size/w600/2022/08/Screen-Shot-2022-08-20-at-4.48.07-PM.png 600w, /content/images/size/w1000/2022/08/Screen-Shot-2022-08-20-at-4.48.07-PM.png 1000w, /content/images/size/w2000/2022/08/Screen-Shot-2022-08-20-at-4.48.07-PM.png 2000w" sizes="(min-width: 1400px) 1400px, 92vw" src="/content/images/size/w2000/2022/08/Screen-Shot-2022-08-20-at-4.48.07-PM.png" alt="PHP Foundation: Alive and Kicking" /> </figure> </header> <section class="gh-content gh-canvas"> <h3 id="php-foundation-co-founder-roman-pronskiy-on-the-state-of-the-language-and-why-its-future-is-bright">PHP Foundation co-founder Roman Pronskiy on the state of the language, and why its future is bright.</h3><p>Born and raised in Kharkiv, Ukraine, <a href="https://twitter.com/pronskiy?ref=blog.opencollective.com">Roman Pronsky</a> has always worked in the tech industry. He started by studying math, and later programming organically fit in. After 10 years working as a software engineer and writing about PHP, he joined <a href="https://www.jetbrains.com/?ref=blog.opencollective.com">JetBrains</a> to work on the PhpStorm IDE.</p><figure class="kg-card kg-image-card"><img src="https://blog.opencollective.com/content/images/2022/08/pronskiy1.webp" class="kg-image" alt loading="lazy" width="1236" height="891" srcset="https://blog.opencollective.com/content/images/size/w600/2022/08/pronskiy1.webp 600w, https://blog.opencollective.com/content/images/size/w1000/2022/08/pronskiy1.webp 1000w, https://blog.opencollective.com/content/images/2022/08/pronskiy1.webp 1236w" sizes="(min-width: 720px) 720px"></figure><p>In November 2021, Roman helped the PHP community launch the <a href="https://thephp.foundation/?ref=blog.opencollective.com">PHP Foundation</a>, to support, promote, and advance the PHP language.</p><h3 id="what-is-php">What is PHP?</h3><p>PHP is a popular general-purpose scripting language that is mostly used for web development. It’s 27 years old, having appeared in the same year as JavaScript and Ruby. PHP is an easy and versatile scripting language. But why choose it over alternatives?</p><blockquote><em>"What I like about PHP is that it allows you to deliver results fast. PHP’s reputation comes from the old days when it had some quirks, but now it’s a mature language with a lot of great and well-known projects built on it, like Wikipedia, WordPress, Vimeo, and Etsy, among others."</em></blockquote><figure class="kg-card kg-embed-card"><blockquote class="twitter-tweet"><p lang="en" dir="ltr">PHP lets you be simple and light.</p>— John Gruber (@gruber) <a href="https://twitter.com/gruber/status/1556371033959157764?ref_src=twsrc%5Etfw&ref=blog.opencollective.com">August 7, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> </figure><p>While statistics saying that 80% of the Internet is built on PHP might be overstated, its share is still huge. The language is going strong, despite its detractors.</p><p>PHP shines when implementing quickly with existing tools, like WordPress, Magento, and Drupal, instead of building from scratch and repeating others’ mistakes. PHP also has very mature frameworks, like Laravel and Symfony, which allow the building of more complex projects from the ground up.</p><h3 id="facing-challenges">Facing Challenges</h3><p>In recent years, PHP has struggled from lack of full-time developers working on the PHP language itself, as opposed to tools built on it. PHP suffers from the tragedy of the commons, with many people using it for free and very few contributing back.</p><p>What does Roman have to say to those who think PHP is too old, or already dead?</p><blockquote><em>“People have been joking about its death since PHP appeared. There’s a meme of a gravestone saying ‘“I didn’t think I would die before PHP”. Well, PHP is still here, and it keeps getting better. Many companies and developers all over the world are committed to PHP because it just works.”</em></blockquote><figure class="kg-card kg-embed-card"><blockquote class="twitter-tweet"><p lang="en" dir="ltr">I just came back from the future, this is what I read on a tombstone<a href="https://twitter.com/hashtag/PHP?src=hash&ref_src=twsrc%5Etfw&ref=blog.opencollective.com">#PHP</a> <a href="https://twitter.com/hashtag/PhpNotDead?src=hash&ref_src=twsrc%5Etfw&ref=blog.opencollective.com">#PhpNotDead</a> <a href="https://t.co/gAzpqwh8mH?ref=blog.opencollective.com">pic.twitter.com/gAzpqwh8mH</a></p>— Frédéric Bouchery (@FredBouchery) <a href="https://twitter.com/FredBouchery/status/1538817185686208513?ref_src=twsrc%5Etfw&ref=blog.opencollective.com">June 20, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> </figure><h3 id="enter-the-php-foundation"><strong>Enter the PHP Foundation</strong></h3><p>Following Joe Watkins’ influential <a href="https://blog.krakjoe.ninja/2021/05/avoiding-busses.html?ref=blog.opencollective.com">blog post about the state of PHP</a>, long-time community members Roman Pronskiy, Nikita Popov, Sebastian Bergmann, Stefan Priebsch, joined Joe Watkins and envisioned the PHP Foundation, to help fund development and enable companies to contribute back.</p><p>They drew inspiration and support from another Open Source Collective project, <a href="https://opencollective.com/open-web-docs?ref=blog.opencollective.com">Open Web Docs</a>.</p><blockquote><em>“We learned from Open Web Docs’ organization, materials, and updates, and had a few calls to share experiences.”</em></blockquote><p>Thanks to many PHP contributors and community members, along with support from major PHP companies, the community soon grew.</p><blockquote><em>“Our goal for 2022 was to hire software developers to work on PHP core, do maintenance, and implement new features. We were lucky to get six committed part-time developers on board right away. Our next goals are to establish scalable processes for handling requests, and to improve communications. To achieve this, we need more people and companies involved.”</em></blockquote><p>In general, they stay focused with a small team, a conscious choice of the PHP Foundation.</p><blockquote><em>“We decided to not make our communication public right away, instead starting small by inviting, one by one, people who were already helping us. Since all admins have full-time jobs and do this work as volunteers, we want to be practical and focus on things that matter. We have bi-weekly calls with an agenda I publish in our closed GitHub repository. At some point, we plan to make this repository open, and possibly do live streams of the meetings. Maybe next year”.</em></blockquote><p>The PHP Foundation supports its members to participate in events, like conferences, to give public talks. PHP Forum in Paris is coming up in October, where Sebastian Bergmann and Roman Pronskiy will explain where The PHP Foundation is right now and what we’re planning. At the same conference, developer George P. Banyard will go deeper into the technical side of the project. The next stop will be SymfonyCon in November, also in France.</p><h3 id="why-open-collective">Why Open Collective?</h3><p>PHP Foundation joined <a href="http://oscollective.org/?ref=blog.opencollective.com">Open Source Collective</a> at its inception, allowing the team to focus on its goals rather than bureaucracy and admin.</p><blockquote><em>“We considered several options of how to organize, including incorporating our own non-profit or joining an existing bigger foundation. My friend, Alexander Makarov, who had been collaborating with Open Collective for years, told me he was very happy with the experience. Open Collective felt like a perfect match. We were able to spin everything up within a month”.</em></blockquote><p><em><strong>Visit the </strong></em><a href="https://thephp.foundation/?ref=blog.opencollective.com"><em><strong>PHP Foundation website</strong></em></a><em><strong> and support the project </strong></em><a href="https://opencollective.com/phpfoundation?ref=blog.opencollective.com"><em><strong>on Open Collective</strong></em></a><em><strong>.</strong></em></p> </section> <section class="article-comments gh-canvas"> <script defer src="https://cdn.jsdelivr.net/ghost/comments-ui@~0.22/umd/comments-ui.min.js" data-locale="en" data-ghost-comments="https://blog.opencollective.com/" data-api="https://opencollective.ghost.io/ghost/api/content/" data-admin="https://opencollective.ghost.io/ghost/" data-key="6fa7e95c2c5c499f17a4faea1d" data-title="null" data-count="true" data-post-id="630065d07bd459003d94deb2" data-color-scheme="auto" data-avatar-saturation="60" data-accent-color="#0C2D66" data-comments-enabled="all" data-publication="Open Collective" crossorigin="anonymous"></script> </section> </article> </main> <aside class="read-more-wrap outer"> <div class="read-more inner"> <article class="post-card post featured"> <a class="post-card-image-link" href="/the-open-collective-platform-is-moving-to-a-community-governed-non-profit/"> <img class="post-card-image" srcset="/content/images/size/w300/2024/10/Screenshot-2024-10-11-at-5.37.50-PM.png 300w, /content/images/size/w600/2024/10/Screenshot-2024-10-11-at-5.37.50-PM.png 600w, /content/images/size/w1000/2024/10/Screenshot-2024-10-11-at-5.37.50-PM.png 1000w, /content/images/size/w2000/2024/10/Screenshot-2024-10-11-at-5.37.50-PM.png 2000w" sizes="(max-width: 1000px) 400px, 800px" src="/content/images/size/w600/2024/10/Screenshot-2024-10-11-at-5.37.50-PM.png" alt="The Open Collective Platform is moving to a community governed non-profit!" loading="lazy" /> </a> <div class="post-card-content"> <a class="post-card-content-link" href="/the-open-collective-platform-is-moving-to-a-community-governed-non-profit/"> <header class="post-card-header"> <div class="post-card-tags"> <span class="post-card-featured"><svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M4.49365 4.58752C3.53115 6.03752 2.74365 7.70002 2.74365 9.25002C2.74365 10.6424 3.29678 11.9778 4.28134 12.9623C5.26591 13.9469 6.60127 14.5 7.99365 14.5C9.38604 14.5 10.7214 13.9469 11.706 12.9623C12.6905 11.9778 13.2437 10.6424 13.2437 9.25002C13.2437 6.00002 10.9937 3.50002 9.16865 1.68127L6.99365 6.25002L4.49365 4.58752Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path> </svg> Featured</span> </div> <h2 class="post-card-title"> The Open Collective Platform is moving to a community governed non-profit! </h2> </header> <div class="post-card-excerpt">A group of fiscal hosts representing thousands of collectives have created a new independent, community-governed, non-profit organization and have reached an agreement with Open Collective Inc. to take over the Open Collective platform as it exists today.</div> </a> <footer class="post-card-meta"> <time class="post-card-meta-date" datetime="2024-10-11">Oct 11, 2024</time> <span class="post-card-meta-length">5 min read</span> <script data-ghost-comment-count="670901dc32b53400012cdaff" data-ghost-comment-count-empty="" data-ghost-comment-count-singular="comment" data-ghost-comment-count-plural="comments" data-ghost-comment-count-tag="span" data-ghost-comment-count-class-name="" data-ghost-comment-count-autowrap="true" > </script> </footer> </div> </article> <article class="post-card post featured"> <a class="post-card-image-link" href="/why-the-open-source-pledge-is-both-relevant-and-timely/"> <img class="post-card-image" srcset="/content/images/size/w300/2024/10/Screenshot-2024-10-08-at-12.30.40.png 300w, /content/images/size/w600/2024/10/Screenshot-2024-10-08-at-12.30.40.png 600w, /content/images/size/w1000/2024/10/Screenshot-2024-10-08-at-12.30.40.png 1000w, /content/images/size/w2000/2024/10/Screenshot-2024-10-08-at-12.30.40.png 2000w" sizes="(max-width: 1000px) 400px, 800px" src="/content/images/size/w600/2024/10/Screenshot-2024-10-08-at-12.30.40.png" alt="Why the Open Source Pledge is both relevant and timely" loading="lazy" /> </a> <div class="post-card-content"> <a class="post-card-content-link" href="/why-the-open-source-pledge-is-both-relevant-and-timely/"> <header class="post-card-header"> <div class="post-card-tags"> <span class="post-card-featured"><svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M4.49365 4.58752C3.53115 6.03752 2.74365 7.70002 2.74365 9.25002C2.74365 10.6424 3.29678 11.9778 4.28134 12.9623C5.26591 13.9469 6.60127 14.5 7.99365 14.5C9.38604 14.5 10.7214 13.9469 11.706 12.9623C12.6905 11.9778 13.2437 10.6424 13.2437 9.25002C13.2437 6.00002 10.9937 3.50002 9.16865 1.68127L6.99365 6.25002L4.49365 4.58752Z" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path> </svg> Featured</span> </div> <h2 class="post-card-title"> Why the Open Source Pledge is both relevant and timely </h2> </header> <div class="post-card-excerpt">Today Sentry, in partnership with over 20 other organizations, launches the Open Source Pledge at https://opensourcepledge.com/. We at Open Source Collective think the timing couldn’t be better.</div> </a> <footer class="post-card-meta"> <time class="post-card-meta-date" datetime="2024-10-08">Oct 8, 2024</time> <span class="post-card-meta-length">1 min read</span> <script data-ghost-comment-count="670516328de8e9000169d64d" data-ghost-comment-count-empty="" data-ghost-comment-count-singular="comment" data-ghost-comment-count-plural="comments" data-ghost-comment-count-tag="span" data-ghost-comment-count-class-name="" data-ghost-comment-count-autowrap="true" > </script> </footer> </div> </article> <article class="post-card post"> <a class="post-card-image-link" href="/open-collective-update-july/"> <img class="post-card-image" srcset="/content/images/size/w300/2024/07/Background-1024x768.png 300w, /content/images/size/w600/2024/07/Background-1024x768.png 600w, /content/images/size/w1000/2024/07/Background-1024x768.png 1000w, /content/images/size/w2000/2024/07/Background-1024x768.png 2000w" sizes="(max-width: 1000px) 400px, 800px" src="/content/images/size/w600/2024/07/Background-1024x768.png" alt="Open Collective Update - July 2024" loading="lazy" /> </a> <div class="post-card-content"> <a class="post-card-content-link" href="/open-collective-update-july/"> <header class="post-card-header"> <div class="post-card-tags"> </div> <h2 class="post-card-title"> Open Collective Update - July 2024 </h2> </header> <div class="post-card-excerpt">Join our Discord and get involved in our redesigning our crowdfunding expereince. Plus News, Events and more</div> </a> <footer class="post-card-meta"> <time class="post-card-meta-date" datetime="2024-07-22">Jul 22, 2024</time> <span class="post-card-meta-length">6 min read</span> <script data-ghost-comment-count="669e8c9a4a066d0001a8c2b9" data-ghost-comment-count-empty="" data-ghost-comment-count-singular="comment" data-ghost-comment-count-plural="comments" data-ghost-comment-count-tag="span" data-ghost-comment-count-class-name="" data-ghost-comment-count-autowrap="true" > </script> </footer> </div> </article> </div> </aside> </div> <footer class="site-footer outer"> <div class="inner"> <section class="copyright"><a href="https://blog.opencollective.com">Open Collective</a> © 2024</section> <nav class="site-footer-nav"> </nav> <div class="gh-powered-by"><a href="https://ghost.org/" target="_blank" rel="noopener">Powered by Ghost</a></div> </div> </footer> </div> <div class="pswp" tabindex="-1" role="dialog" aria-hidden="true"> <div class="pswp__bg"></div> <div class="pswp__scroll-wrap"> <div class="pswp__container"> <div class="pswp__item"></div> <div class="pswp__item"></div> <div class="pswp__item"></div> </div> <div class="pswp__ui pswp__ui--hidden"> <div class="pswp__top-bar"> <div class="pswp__counter"></div> <button class="pswp__button pswp__button--close" title="Close (Esc)"></button> <button class="pswp__button pswp__button--share" title="Share"></button> <button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button> <button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button> <div class="pswp__preloader"> <div class="pswp__preloader__icn"> <div class="pswp__preloader__cut"> <div class="pswp__preloader__donut"></div> </div> </div> </div> </div> <div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap"> <div class="pswp__share-tooltip"></div> </div> <button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)"></button> <button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)"></button> <div class="pswp__caption"> <div class="pswp__caption__center"></div> </div> </div> </div> </div> <script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"> </script> <script src="https://blog.opencollective.com/assets/built/casper.js?v=48add68b07"></script> <script> $(document).ready(function () { // Mobile Menu Trigger $('.gh-burger').click(function () { $('body').toggleClass('gh-head-open'); }); // FitVids - Makes video embeds responsive $(".gh-content").fitVids(); }); </script> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-147664506-1"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-147664506-1'); </script> </body> </html>