CINXE.COM
Google Open Source
<!doctype html> <html lang="en" dir="ltr"> <head> <meta name="google-signin-client-id" content="157101835696-ooapojlodmuabs2do2vuhhnf90bccmoi.apps.googleusercontent.com"> <meta name="google-signin-scope" content="profile email https://www.googleapis.com/auth/developerprofiles https://www.googleapis.com/auth/developerprofiles.award"> <meta property="og:site_name" content="Google Open Source"> <meta property="og:type" content="website"><meta name="theme-color" content="#12b5cb"><meta charset="utf-8"> <meta content="IE=Edge" http-equiv="X-UA-Compatible"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="manifest" href="/_pwa/opensource/manifest.json" crossorigin="use-credentials"> <link rel="preconnect" href="//www.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.googleapis.com" crossorigin> <link rel="preconnect" href="//apis.google.com" crossorigin> <link rel="preconnect" href="//www.google-analytics.com" crossorigin><link rel="stylesheet" href="//fonts.googleapis.com/css?family=Google+Sans:400,500,700|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"> <link rel="stylesheet" href="//fonts.googleapis.com/css2?family=Material+Icons&family=Material+Symbols+Outlined&display=block"><link rel="stylesheet" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/opensource/css/app.css"> <link rel="shortcut icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/opensource/images/favicon.png"> <link rel="apple-touch-icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/opensource/images/touchicon-180.png"><link rel="canonical" href="https://opensource.google/"><link rel="search" type="application/opensearchdescription+xml" title="Google Open Source" href="https://opensource.google/s/opensearch.xml"> <link rel="alternate" hreflang="en" href="https://opensource.google/" /><link rel="alternate" hreflang="x-default" href="https://opensource.google/" /><link rel="alternate" hreflang="ar" href="https://opensource.google/?hl=ar" /><link rel="alternate" hreflang="zh-Hans" href="https://opensource.google/?hl=zh-cn" /><link rel="alternate" hreflang="id" href="https://opensource.google/?hl=id" /><link rel="alternate" hreflang="it" href="https://opensource.google/?hl=it" /><link rel="alternate" hreflang="ja" href="https://opensource.google/?hl=ja" /><link rel="alternate" hreflang="ko" href="https://opensource.google/?hl=ko" /><link rel="alternate" hreflang="pt-BR" href="https://opensource.google/?hl=pt-br" /><link rel="alternate" hreflang="pt" href="https://opensource.google/?hl=pt" /><link rel="alternate" hreflang="es" href="https://opensource.google/?hl=es" /><link rel="alternate" hreflang="es-419" href="https://opensource.google/?hl=es-419" /><link rel="alternate" hreflang="tr" href="https://opensource.google/?hl=tr" /><title>Google Open Source</title> <meta property="og:title" content="Google Open Source"><meta name="description" content="Google <3 Open Source"> <meta property="og:description" content="Google <3 Open Source"><meta property="og:url" content="https://opensource.google/"><meta property="og:image" content="https://opensource.google/images/opensource-logomark.svg"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="675"><meta property="og:locale" content="en"><meta name="twitter:card" content="summary_large_image"><script type="application/ld+json"> { "@context": "http://schema.org/", "@type": "Organization", "name": "Google Open Source", "url": "https://opensource.google/" } </script> <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "WebSite", "name": "Google Open Source", "url": "https://opensource.google/", "potentialAction": { "@type": "SearchAction", "target": "https://opensource.google/s/results?q={search_term_string}", "query-input": "required name=search_term_string" } } </script> <link rel="stylesheet" href="/extras.css"></head> <body class="" template="landing" theme="cyan" type="guide" layout="full" pending> <devsite-progress type="indeterminate" id="app-progress"></devsite-progress> <section class="devsite-wrapper"> <devsite-cookie-notification-bar></devsite-cookie-notification-bar><devsite-header role="banner"> <div class="devsite-header--inner nocontent"> <div class="devsite-top-logo-row-wrapper-wrapper"> <div class="devsite-top-logo-row-wrapper"> <div class="devsite-top-logo-row"> <button type="button" id="devsite-hamburger-menu" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Navigation menu button" visually-hidden aria-label="Open menu"> </button> <div class="devsite-product-name-wrapper"> <a href="/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="googleOpenSource" track-metadata-position="nav" track-metadata-eventDetail="nav"> <picture> <img src="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/opensource/images/lockup.svg" class="devsite-site-logo" alt="Google Open Source"> </picture> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item devsite-has-google-wordmark"> </li> </ul> </span> </div> <div class="devsite-top-logo-row-middle"> <div class="devsite-header-upper-tabs"> <devsite-tabs class="upper-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Upper tabs"> <tab > <a href="https://opensource.google/events" track-metadata-eventdetail="https://opensource.google/events" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - events" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Events" track-name="events" > Events </a> </tab> <tab > <a href="https://opensource.google/projects" track-metadata-eventdetail="https://opensource.google/projects" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - projects" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Projects" track-name="projects" > Projects </a> </tab> <tab class="devsite-dropdown "> <a href="https://opensource.google/programs-and-services" track-metadata-eventdetail="https://opensource.google/programs-and-services" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - programs and services" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Programs and services" track-name="programs and services" > Programs and services </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Programs and services" track-type="nav" track-metadata-eventdetail="https://opensource.google/programs-and-services" track-metadata-position="nav - programs and services" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Programs and services" track-name="programs and services" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column "> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-item"> <a href="https://opensource.google/organizations-we-support" track-type="nav" track-metadata-eventdetail="https://opensource.google/organizations-we-support" track-metadata-position="nav - programs and services" track-metadata-module="tertiary nav" tooltip > <div class="devsite-nav-item-title"> Organizations we support </div> </a> </li> </ul> </div> </div> </div> </tab> <tab > <a href="https://opensource.google/documentation/reference" track-metadata-eventdetail="https://opensource.google/documentation/reference" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - documentation" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Documentation" track-name="documentation" > Documentation </a> </tab> <tab > <a href="https://opensource.google/about" track-metadata-eventdetail="https://opensource.google/about" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - about" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: About" track-name="about" > About </a> </tab> <tab > <a href="//opensource.googleblog.com" track-metadata-eventdetail="//opensource.googleblog.com" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - blog" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Blog" track-name="blog" > Blog </a> </tab> </nav> </devsite-tabs> </div> <devsite-search enable-signin enable-search enable-suggestions enable-query-completion project-name="Google Open Source" tenant-name="Google Open Source" > <form class="devsite-search-form" action="https://opensource.google/s/results" method="GET"> <div class="devsite-search-container"> <button type="button" search-open class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Open search"></button> <div class="devsite-searchbox"> <input aria-activedescendant="" aria-autocomplete="list" aria-label="Search" aria-expanded="false" aria-haspopup="listbox" autocomplete="off" class="devsite-search-field devsite-search-query" name="q" placeholder="Search" role="combobox" type="text" value="" > <div class="devsite-search-image material-icons" aria-hidden="true"> </div> <div class="devsite-search-shortcut-icon-container" aria-hidden="true"> <kbd class="devsite-search-shortcut-icon">/</kbd> </div> </div> </div> </form> <button type="button" search-close class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Close search"></button> </devsite-search> </div> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="es" >Español</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pt" >Português</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> <devsite-user enable-profiles id="devsite-user"> <span class="button devsite-top-button" aria-hidden="true" visually-hidden>Sign in</span> </devsite-user> </div> </div> </div> <div class="devsite-collapsible-section devsite-header-no-lower-tabs "> <div class="devsite-header-background"> </div> </div> </div> </devsite-header> <devsite-book-nav scrollbars hidden> <div class="devsite-book-nav-filter" hidden> <span class="filter-list-icon material-icons" aria-hidden="true"></span> <input type="text" placeholder="Filter" aria-label="Type to filter" role="searchbox"> <span class="filter-clear-button hidden" data-title="Clear filter" aria-label="Clear filter" role="button" tabindex="0"></span> </div> <nav class="devsite-book-nav devsite-nav nocontent" aria-label="Side menu"> <div class="devsite-mobile-header"> <button type="button" id="devsite-close-nav" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Close navigation" aria-label="Close navigation"> </button> <div class="devsite-product-name-wrapper"> <a href="/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="googleOpenSource" track-metadata-position="nav" track-metadata-eventDetail="nav"> <picture> <img src="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/opensource/images/lockup.svg" class="devsite-site-logo" alt="Google Open Source"> </picture> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item devsite-has-google-wordmark"> </li> </ul> </span> </div> </div> <div class="devsite-book-nav-wrapper"> <div class="devsite-mobile-nav-top"> <ul class="devsite-nav-list"> <li class="devsite-nav-item"> <a href="/events" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Events" track-name="events" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Events" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Events </span> </a> </li> <li class="devsite-nav-item"> <a href="/projects" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Projects" track-name="projects" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Projects" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Projects </span> </a> </li> <li class="devsite-nav-item"> <a href="/programs-and-services" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Programs and services" track-name="programs and services" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Programs and services" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Programs and services </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Programs and services" track-name="programs and services" > <span class="devsite-nav-text" tooltip menu="Programs and services"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Programs and services"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/documentation/reference" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Documentation" track-name="documentation" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Documentation" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Documentation </span> </a> </li> <li class="devsite-nav-item"> <a href="/about" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: About" track-name="about" data-category="Site-Wide Custom Events" data-label="Responsive Tab: About" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > About </span> </a> </li> <li class="devsite-nav-item"> <a href="//opensource.googleblog.com" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Blog" track-name="blog" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Blog" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Blog </span> </a> </li> </ul> </div> <div class="devsite-mobile-nav-bottom"> <ul class="devsite-nav-list" menu="Programs and services" aria-label="Side menu" hidden> <li class="devsite-nav-item"> <a href="/organizations-we-support" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Organizations we support" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Organizations we support </span> </a> </li> </ul> </div> </div> </nav> </devsite-book-nav> <section id="gc-wrapper"> <main role="main" class="devsite-main-content" > <div class="devsite-sidebar"> <div class="devsite-sidebar-content"> <devsite-toc class="devsite-nav" role="navigation" aria-label="On this page" depth="2" scrollbars disabled></devsite-toc> <devsite-recommendations-sidebar class="nocontent devsite-nav"> </devsite-recommendations-sidebar> </div> </div> <devsite-content> <article class="devsite-article"><style> /* Styles inlined from /styles/styles.css */ .hero .hero-bold { font-weight: 500; } .benefits-row [class^=devsite-][icon-position=top] > div { margin: 0 auto; } .projects-description p, .featured-events-description p, .featured-blogs-description p, .os-project-hero p, .os-desc-left p, .os-hero p { max-width: 708px; } .end-padding-medium { padding-bottom: 64px; padding-top: 0; } .os-subheader-46.devsite-landing-row h2 { font-size: 46px; line-height: 40px; } .os-project-hero[class^=devsite-] [class^=devsite-] [class^=devsite-] h3 { font: 400 56px / 68px Google Sans; margin-bottom: 0; } .os-project-hero [class^=devsite-][size=xlarge], .os-project-hero [class^=devsite-][size=xlarge] img { height: 60px; width: 221px; } .os-no-padding-b { padding-bottom: 0; } .os-project-hero .button { font: 700 16px / 24px Roboto; } .os-project-hero.no-padding { padding-bottom: 0; padding-top: 0 } .os-project-columns-top .devsite-landing-row-group { grid: auto-flow / 3fr 1fr; } .os-project-columns-bottom .devsite-landing-row-group { grid: auto-flow / repeat(3, 1fr); } .os-project-columns .os-divider h3 { padding-top: 40px; } .os-project-columns .button { padding: 0; } .os-project-columns-bottom { padding: 16px 24px; } .os-divider { border-top: 1px solid #9aa0a6; } .os-project-source { border-radius: 8px; } .os-project-source [class^=devsite-] a:first-child { margin-left: 8px; } .os-project-source .devsite-landing-row-item-list-item-buttons a { display: block; text-align: start; } .os-project-source h4 { border-bottom: 1px solid #9aa0a6; font: 400 18px / 32px Google Sans; margin-top: 8px; padding-top: 8px; } .os-all-projects .os-margin-bottom-zero { margin-bottom: 0; } .os-margin-top-zero { margin-top:0; } /* Override core 'row-reverse' to left-align buttons in dynamic content cards. */ .os-featured-blogs .devsite-card-buttons { flex-direction: row; } [dynamic-card-style="card"] ul li, .os-project-card span:not(a) { border: 1px solid; border-radius: 5px; padding: 6px 8px 4px; background: none; } .os-project-hero.os-android-bg { margin-bottom: 96px; padding-bottom: 0; padding-top: 0; } .os-project-hero.bg-yellow[background] { background: #fff7dd; } .os-project-hero.bg-green-warm[background] { background: #dfffea; } .os-project-hero.bg-blue-cool[background]{ background: #e1eaff; } .os-project-hero.bg-red-warm[background]{ background: #ffdfee; } </style> <div class="devsite-article-meta nocontent" role="navigation"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> <a href="https://opensource.google/" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="Google Open Source" > Google Open Source </a> </li> </ul> </div> <devsite-feature-tooltip ack-key="AckCollectionsBookmarkTooltipDismiss" analytics-category="Site-Wide Custom Events" analytics-action-show="Callout Profile displayed" analytics-action-close="Callout Profile dismissed" analytics-label="Create Collection Callout" class="devsite-page-bookmark-tooltip nocontent" dismiss-button="true" id="devsite-collections-dropdown" dismiss-button-text="Dismiss" close-button-text="Got it"> <devsite-bookmark></devsite-bookmark> <span slot="popout-heading"> Stay organized with collections </span> <span slot="popout-contents"> Save and categorize content based on your preferences. </span> </devsite-feature-tooltip> <devsite-toc class="devsite-nav" depth="2" devsite-toc-embedded disabled> </devsite-toc> <div class="devsite-article-body clearfix devsite-no-page-title"> <section class="devsite-landing-row devsite-landing-row-1-up devsite-landing-row-67 devsite-landing-row-hero devsite-landing-row-no-image-background hero" background="grey" header-position="top" > <div class="devsite-landing-row-inner"> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item" description-position="bottom" > <div class="devsite-landing-row-item-media "> <figure class="devsite-landing-row-item-image"> <picture> <img alt="" src="https://opensource.google/static/images/os-anim-main.gif" srcset="https://opensource.google/static/images/os-anim-main.gif" sizes="(max-width: 600px) 100vw, (max-width: 840px) 50vw, 464px" fetchpriority="high"> </picture> </figure> </div> <div class="devsite-landing-row-item-description" > <div class="devsite-landing-row-item-body"> <h3 id="span-classhero-boldgooglespan-open-source" data-text="Google Open Source" class="hide-from-toc no-link" tabindex="0"> <span class="hero-bold">Google</span> Open Source </h3> <div class="devsite-landing-row-item-description-content"> <p>We bring all the value of open source to Google and all the resources of Google to open source.</p> </div> <div class="devsite-landing-row-item-buttons"> <a href="https://opensource.google/about" class="button button-primary " >Learn more</a> </div> </div> </div> </div> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-3-up devsite-landing-row-header-centered devsite-landing-row-item-centered devsite-landing-row-no-image-background devsite-landing-row-padding-large benefits-row" background="white" header-position="top" > <div class="devsite-landing-row-inner"> <header class="devsite-landing-row-header" > <div class="devsite-landing-row-header-text"> <h2 id="everyone-benefits" data-text="Everyone benefits" tabindex="0"> Everyone benefits </h2> <div class="devsite-landing-row-description"> <p>Google believes open source solves real-world problems for everyone. Google's Open Source Programs Office supports open source innovation, collaboration, and sustainability through our programs and services.</p> </div> </div> </header> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item devsite-landing-row-item-no-media" description-position="bottom" > <div class="devsite-landing-row-item-description" icon-position="top" > <div class="devsite-landing-row-item-icon-container" size="medium" > <picture> <img class="devsite-landing-row-item-icon" alt="" src="https://opensource.google/static/images/glyph-blue.svg" srcset="https://opensource.google/static/images/glyph-blue.svg" sizes="64px" loading="lazy" > </picture> </div> <div class="devsite-landing-row-item-body"> <h3 id="use" data-text="Use" class="hide-from-toc no-link" tabindex="0"> Use </h3> <div class="devsite-landing-row-item-description-content"> Open source is at the core of the products we build. </div> </div> </div> </div> <div class="devsite-landing-row-item devsite-landing-row-item-no-media" description-position="bottom" > <div class="devsite-landing-row-item-description" icon-position="top" > <div class="devsite-landing-row-item-icon-container" size="medium" > <picture> <img class="devsite-landing-row-item-icon" alt="" src="https://opensource.google/static/images/glyph-yellow.svg" srcset="https://opensource.google/static/images/glyph-yellow.svg" sizes="64px" loading="lazy" > </picture> </div> <div class="devsite-landing-row-item-body"> <h3 id="release" data-text="Release" class="hide-from-toc no-link" tabindex="0"> Release </h3> <div class="devsite-landing-row-item-description-content"> We continue to release code under open source licenses for all to use. </div> </div> </div> </div> <div class="devsite-landing-row-item devsite-landing-row-item-no-media" description-position="bottom" > <div class="devsite-landing-row-item-description" icon-position="top" > <div class="devsite-landing-row-item-icon-container" size="medium" > <picture> <img class="devsite-landing-row-item-icon" alt="" src="https://opensource.google/static/images/glyph-green.svg" srcset="https://opensource.google/static/images/glyph-green.svg" sizes="64px" loading="lazy" > </picture> </div> <div class="devsite-landing-row-item-body"> <h3 id="support" data-text="Support" class="hide-from-toc no-link" tabindex="0"> Support </h3> <div class="devsite-landing-row-item-description-content"> We foster inclusive environments to support healthy ecosystems. </div> </div> </div> </div> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-1-up devsite-landing-row-67 devsite-landing-row-large-headings devsite-landing-row-no-image-background devsite-landing-row-padding-large featured-events-description" background="grey" header-position="top" > <div class="devsite-landing-row-inner"> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item" description-position="bottom" > <div class="devsite-landing-row-item-media "> <figure class="devsite-landing-row-item-image"> <picture> <img alt="" src="https://opensource.google/static/images/featured-events-icon.svg" srcset="https://opensource.google/static/images/featured-events-icon.svg" sizes="(max-width: 600px) 100vw, (max-width: 840px) 50vw, 464px" loading="lazy" > </picture> </figure> </div> <div class="devsite-landing-row-item-description" > <div class="devsite-landing-row-item-body"> <h3 id="featured-programs" data-text="Featured programs" class="hide-from-toc no-link" tabindex="0"> Featured programs </h3> <div class="devsite-landing-row-item-description-content"> <p>Google Open Source programs support open source projects through enabling new contributors, building mentorship, and supporting documentation. </p> </div> </div> </div> </div> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-2-up devsite-landing-row-cards devsite-landing-row-padding-large featured-events-card" background="grey" header-position="top" > <div class="devsite-landing-row-inner"> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item" description-position="bottom" > <div class="devsite-landing-row-item-media "> <figure class="devsite-landing-row-item-image"> <a href="https://developers.google.com/open-source/gsoc/timeline"> <picture> <img alt="" src="https://opensource.google/static/images/programs/GSoC-logo-1300x1200.png" srcset="https://opensource.google/static/images/programs/GSoC-logo-1300x1200_36.png 36w,https://opensource.google/static/images/programs/GSoC-logo-1300x1200_48.png 48w,https://opensource.google/static/images/programs/GSoC-logo-1300x1200_72.png 72w,https://opensource.google/static/images/programs/GSoC-logo-1300x1200_96.png 96w,https://opensource.google/static/images/programs/GSoC-logo-1300x1200_480.png 480w,https://opensource.google/static/images/programs/GSoC-logo-1300x1200_720.png 720w,https://opensource.google/static/images/programs/GSoC-logo-1300x1200_856.png 856w,https://opensource.google/static/images/programs/GSoC-logo-1300x1200_960.png 960w,https://opensource.google/static/images/programs/GSoC-logo-1300x1200_1440.png 1440w,https://opensource.google/static/images/programs/GSoC-logo-1300x1200_1920.png 1920w,https://opensource.google/static/images/programs/GSoC-logo-1300x1200_2880.png 2880w" sizes="(max-width: 600px) 100vw, (max-width: 840px) 50vw, 708px" loading="lazy" > </picture> </a> </figure> </div> <div class="devsite-landing-row-item-description" > <div class="devsite-landing-row-item-body"> <h3 id="google-summer-of-code" data-text="Google Summer of Code" class="hide-from-toc no-link" tabindex="0"> <a href="https://developers.google.com/open-source/gsoc/timeline"> Google Summer of Code </a> </h3> <div class="devsite-landing-row-item-description-content"> <p>Google Summer of Code is a global, online program focused on bringing new contributors into open source software development. GSoC Contributors work with an open source organization on a 12+ week programming project under the guidance of mentors.</p> </div> <div class="devsite-landing-row-item-buttons"> <a href="https://developers.google.com/open-source/gsoc/timeline" class="button " >See program timeline</a> </div> </div> </div> </div> <div class="devsite-landing-row-item" description-position="bottom" > <div class="devsite-landing-row-item-media "> <figure class="devsite-landing-row-item-image"> <a href="https://developers.google.com/season-of-docs/docs/timeline"> <picture> <img alt="" src="https://opensource.google/static/images/programs/SoD2023-1300x1200.png" srcset="https://opensource.google/static/images/programs/SoD2023-1300x1200_36.png 36w,https://opensource.google/static/images/programs/SoD2023-1300x1200_48.png 48w,https://opensource.google/static/images/programs/SoD2023-1300x1200_72.png 72w,https://opensource.google/static/images/programs/SoD2023-1300x1200_96.png 96w,https://opensource.google/static/images/programs/SoD2023-1300x1200_480.png 480w,https://opensource.google/static/images/programs/SoD2023-1300x1200_720.png 720w,https://opensource.google/static/images/programs/SoD2023-1300x1200_856.png 856w,https://opensource.google/static/images/programs/SoD2023-1300x1200_960.png 960w,https://opensource.google/static/images/programs/SoD2023-1300x1200_1440.png 1440w,https://opensource.google/static/images/programs/SoD2023-1300x1200_1920.png 1920w,https://opensource.google/static/images/programs/SoD2023-1300x1200_2880.png 2880w" sizes="(max-width: 600px) 100vw, (max-width: 840px) 50vw, 708px" loading="lazy" > </picture> </a> </figure> </div> <div class="devsite-landing-row-item-description" > <div class="devsite-landing-row-item-body"> <h3 id="google-season-of-docs" data-text="Google Season of Docs" class="hide-from-toc no-link" tabindex="0"> <a href="https://developers.google.com/season-of-docs/docs/timeline"> Google Season of Docs </a> </h3> <div class="devsite-landing-row-item-description-content"> <p>Google Season of Docs provides support for open source projects to improve their documentation and gives professional technical writers an opportunity to gain experience in open source. Together we build a culture of better documentation in open source.</p> </div> <div class="devsite-landing-row-item-buttons"> <a href="https://developers.google.com/season-of-docs/docs/timeline" class="button " >See program timeline</a> </div> </div> </div> </div> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-1-up devsite-landing-row-header-centered end-padding-medium" background="grey" header-position="top" > <div class="devsite-landing-row-inner"> <header class="devsite-landing-row-header" > <div class="devsite-landing-row-header-buttons"> <a href="https://opensource.google/programs-and-services" class="button button-primary " >View all programs</a> </div> </header> </div> </section> <section class="devsite-landing-row devsite-landing-row-1-up devsite-landing-row-67 devsite-landing-row-large-headings devsite-landing-row-padding-large devsite-landing-row-no-image-background projects-description" header-position="top" > <div class="devsite-landing-row-inner"> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item" description-position="bottom" > <div class="devsite-landing-row-item-media "> <figure class="devsite-landing-row-item-image"> <picture> <img alt="" src="https://opensource.google/static/images/home-projects-icon.svg" srcset="https://opensource.google/static/images/home-projects-icon.svg" sizes="(max-width: 600px) 100vw, (max-width: 840px) 50vw, 464px" loading="lazy" > </picture> </figure> </div> <div class="devsite-landing-row-item-description" > <div class="devsite-landing-row-item-body"> <h3 id="projects" data-text="Projects" class="hide-from-toc no-link" tabindex="0"> Projects </h3> <div class="devsite-landing-row-item-description-content"> <p>At Google, we use open source to innovate and we release open source to share our innovations. We encourage you to browse through our featured projects to find work to use, share, and build on!</p> </div> </div> </div> </div> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-1-up" header-position="top" > <div class="devsite-landing-row-inner"> <div class="devsite-landing-row-html"> <devsite-dynamic-content query="keyword:featured+-keyword:blocked+project_url:/projects" initial-results="4" items-across="4" maxresults="4" fields="image title summary tags" link-type="button" button-label="View Project" template="card" > </devsite-dynamic-content> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-1-up devsite-landing-row-header-centered button-row end-padding-medium" header-position="top" > <div class="devsite-landing-row-inner"> <header class="devsite-landing-row-header" > <div class="devsite-landing-row-header-buttons"> <a href="https://opensource.google/projects" class="button button-primary " >View all projects</a> </div> </header> </div> </section> <section class="devsite-landing-row devsite-landing-row-1-up devsite-landing-row-67 devsite-landing-row-large-headings devsite-landing-row-padding-large devsite-landing-row-no-image-background featured-blogs-description" background="grey" header-position="top" > <div class="devsite-landing-row-inner"> <div class="devsite-landing-row-group"> <div class="devsite-landing-row-item" description-position="bottom" > <div class="devsite-landing-row-item-media "> <figure class="devsite-landing-row-item-image"> <picture> <img alt="" src="https://opensource.google/static/images/featured-blogs-icon.svg" srcset="https://opensource.google/static/images/featured-blogs-icon.svg" sizes="(max-width: 600px) 100vw, (max-width: 840px) 50vw, 464px" loading="lazy" > </picture> </figure> </div> <div class="devsite-landing-row-item-description" > <div class="devsite-landing-row-item-body"> <h3 id="featured-blogs" data-text="Featured blogs" class="hide-from-toc no-link" tabindex="0"> Featured blogs </h3> <div class="devsite-landing-row-item-description-content"> <p>On the Google Open Source blog, you'll find exciting news about Google releases, projects, and program updates, as well as guest posts from our project partners and program participants.</p> </div> </div> </div> </div> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-1-up devsite-landing-row-cards devsite-landing-row-padding-large" background="grey" header-position="top" > <div class="devsite-landing-row-inner"> <div class="devsite-landing-row-html"> <devsite-dynamic-content class="os-margin-top-zero os-featured-blogs" query="origin:blogger+account:google open source" initial-results="4" items-across="4" maxresults="4" sortorder="-timestamp" fields="image title summary tags" link-type="button" button-label="Read more" > </devsite-dynamic-content> </div> </div> </section> <section class="devsite-landing-row devsite-landing-row-1-up devsite-landing-row-header-centered devsite-landing-row-padding-large button-row" background="grey" header-position="top" > <div class="devsite-landing-row-inner"> <header class="devsite-landing-row-header" > <div class="devsite-landing-row-header-buttons"> <a href="https://opensource.googleblog.com/" class="button button-primary " >View all blogs</a> </div> </header> </div> </section> </div> <div class="devsite-floating-action-buttons"> </div> </article> <devsite-notification > </devsite-notification> <div class="devsite-content-data"> <template class="devsite-content-data-template"> [[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],[],[],[]] </template> </div> </devsite-content> </main> <devsite-footer-promos class="devsite-footer"> </devsite-footer-promos> <devsite-footer-linkboxes class="devsite-footer"> <nav class="devsite-footer-linkboxes nocontent" aria-label="Footer links"> </nav> </devsite-footer-linkboxes> <devsite-footer-utility class="devsite-footer"> <div class="devsite-footer-utility nocontent"> <nav class="devsite-footer-sites" aria-label="Other Google Developers websites"> <a href="https://developers.google.com/" class="devsite-footer-sites-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Developers Link"> <picture> <img class="devsite-footer-sites-logo" src="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/opensource/images/lockup-google-for-developers.svg" loading="lazy" alt="Google Developers"> </picture> </a> <ul class="devsite-footer-sites-list"> <li class="devsite-footer-sites-item"> <a href="//www.youtube.com/googleopensource" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer YouTube Link" > YouTube </a> </li> <li class="devsite-footer-sites-item"> <a href="//x.com/GoogleOSS" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer X Link" > X </a> </li> <li class="devsite-footer-sites-item"> <a href="https://www.linkedin.com/showcase/googledevelopers/" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer LinkedIn Link" > LinkedIn </a> </li> </ul> </nav> <nav class="devsite-footer-utility-links" aria-label="Utility links"> <ul class="devsite-footer-utility-list"> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//policies.google.com/terms" data-category="Site-Wide Custom Events" data-label="Footer Terms link" > Terms </a> </li> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//policies.google.com/privacy" data-category="Site-Wide Custom Events" data-label="Footer Privacy link" > Privacy </a> </li> <li class="devsite-footer-utility-item glue-cookie-notification-bar-control"> <a class="devsite-footer-utility-link gc-analytics-event" href="#" data-category="Site-Wide Custom Events" data-label="Footer Manage cookies link" aria-hidden="true" > Manage cookies </a> </li> </ul> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="es" >Español</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pt" >Português</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> </nav> </div> </devsite-footer-utility> <devsite-panel></devsite-panel> </section></section> <devsite-sitemask></devsite-sitemask> <devsite-snackbar></devsite-snackbar> <devsite-tooltip ></devsite-tooltip> <devsite-heading-link></devsite-heading-link> <devsite-analytics> <script type="application/json" analytics>[{"dimensions": {"dimension2": false, "dimension1": "Signed out", "dimension4": "en", "dimension5": false, "dimension3": "en"}, "gaid": "UA-53341410-8", "metrics": {}, "purpose": 0}]</script> <script type="application/json" tag-management>{"at": "True", "ga4": [{"id": "G-Q7VJ8CW5GK", "purpose": 0}], "ga4p": [{"id": "G-Q7VJ8CW5GK", "purpose": 0}], "gtm": [], "parameters": {"internalUser": "False", "language": {"machineTranslated": "False", "requested": "en", "served": "en"}, "pageType": "guide", "projectName": "Google Open Source", "signedIn": "False", "tenant": "opensource", "recommendations": {"sourcePage": "", "sourceType": 0, "sourceRank": 0, "sourceIdenticalDescriptions": 0, "sourceTitleWords": 0, "sourceDescriptionWords": 0, "experiment": ""}, "experiment": {"ids": ""}}}</script> </devsite-analytics> <devsite-badger></devsite-badger> <script nonce="1sCyrvBF/1nQFNjtC6/m7MAr/A6CI+"> (function(d,e,v,s,i,t,E){d['GoogleDevelopersObject']=i; t=e.createElement(v);t.async=1;t.src=s;E=e.getElementsByTagName(v)[0]; E.parentNode.insertBefore(t,E);})(window, document, 'script', 'https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/opensource/js/app_loader.js', '[42,"en",null,"/js/devsite_app_module.js","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/opensource","https://opensource-dot-devsite-v2-prod-3p.appspot.com",1,null,["/_pwa/opensource/manifest.json","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/images/video-placeholder.svg","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/opensource/images/favicon.png","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/opensource/images/lockup.svg","https://fonts.googleapis.com/css?family=Google+Sans:400,500,700|Roboto:400,400italic,500,500italic,700,700italic|Roboto+Mono:400,500,700&display=swap"],1,null,[1,6,8,12,14,17,21,25,50,52,63,70,75,76,80,87,91,92,93,97,98,100,101,102,103,104,105,107,108,109,110,112,113,117,118,120,122,124,125,126,127,129,130,131,132,133,134,135,136,138,140,141,147,148,149,151,152,156,157,158,159,161,163,164,168,169,170,179,180,182,183,186,191,193,196],"AIzaSyCNm9YxQumEXwGJgTDjxoxXK6m1F-9720Q","AIzaSyCc76DZePGtoyUjqKrLdsMGk_ry7sljLbY","opensource.google","AIzaSyB9bqgQ2t11WJsOX8qNsCQ6U-w91mmqF-I","AIzaSyAdYnStPdzjcJJtQ0mvIaeaMKj7_t6J_Fg",null,null,null,["Concierge__enable_pushui","Profiles__enable_recognition_badges","Cloud__enable_cloud_facet_chat","Profiles__require_profile_eligibility_for_signin","Search__enable_suggestions_from_borg","MiscFeatureFlags__enable_project_variables","MiscFeatureFlags__enable_variable_operator","Search__enable_ai_eligibility_checks","Cloud__enable_cloudx_experiment_ids","DevPro__enable_cloud_innovators_plus","Search__enable_dynamic_content_confidential_banner","Cloud__enable_cloudx_ping","MiscFeatureFlags__developers_footer_dark_image","Profiles__enable_public_developer_profiles","Cloud__enable_cloud_dlp_service","Profiles__enable_profile_collections","EngEduTelemetry__enable_engedu_telemetry","OnSwitch__enable","MiscFeatureFlags__developers_footer_image","DevPro__enable_developer_subscriptions","Experiments__reqs_query_experiments","Profiles__enable_developer_profiles_callout","Profiles__enable_release_notes_notifications","Cloud__enable_cloud_shell","MiscFeatureFlags__emergency_css","Profiles__enable_dashboard_curated_recommendations","Cloud__enable_legacy_calculator_redirect","Profiles__enable_complete_playlist_endpoint","Cloud__enable_free_trial_server_call","Profiles__enable_awarding_url","Analytics__enable_clearcut_logging","Profiles__enable_page_saving","Profiles__enable_completecodelab_endpoint","CloudShell__cloud_shell_button","MiscFeatureFlags__enable_explain_this_code","TpcFeatures__enable_mirror_tenant_redirects","MiscFeatureFlags__enable_firebase_utm","MiscFeatureFlags__enable_view_transitions","BookNav__enable_tenant_cache_key","Search__enable_page_map","TpcFeatures__enable_required_headers","CloudShell__cloud_code_overflow_menu","Cloud__enable_llm_concierge_chat","Cloud__enable_cloud_shell_fte_user_flow"],null,null,"AIzaSyA58TaKli1DculwmAmbpzLVGuWc8eCQgQc","https://developerscontentserving-pa.googleapis.com","AIzaSyDWBU60w0P9hEkr29kkksYs8Z7gvZ8u_wc","https://developerscontentsearch-pa.googleapis.com",2,4,null,"https://developerprofiles-pa.googleapis.com",[42,"opensource","Google Open Source","opensource.google",null,"opensource-dot-devsite-v2-prod-3p.appspot.com",null,null,[null,1,null,null,null,null,null,null,null,null,null,[1],null,null,null,null,null,null,[1],null,null,null,null,[1,null,1]],null,[58,null,null,null,null,null,"/images/lockup.svg",null,null,null,null,1,null,null,null,null,null,null,null,null,null,1,null,null,null,"/images/lockup-dark-theme.svg",[]],[],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[],[1,1]],[[["UA-53341410-8"],["UA-53341410-20"],null,null,["UA-53341410-19"],null,null,[["G-Q7VJ8CW5GK"],null,null,[["G-Q7VJ8CW5GK",1]]],[["UA-53341410-8",1]],null,[["UA-53341410-19",1]],null,1],[[4,5],[2,2],[1,1],[5,8],[3,4]]],null,4]]') </script> <devsite-a11y-announce></devsite-a11y-announce> </body> </html>