blob: 521d0e49c7ec8e8960d17c5ee3db370c01e97d44 [file] [log] [blame]
<!doctype html><html lang=en class=no-js><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=generator content="Hugo 0.111.3"><link rel=canonical type=text/html href=/update-site/project/><link rel=alternate type=application/rss+xml href=/update-site/project/index.xml><meta name=robots content="noindex, nofollow"><link rel=apple-touch-icon sizes=57x57 href=https://apache.org/favicons/apple-touch-icon-57x57.png><link rel=apple-touch-icon sizes=60x60 href=https://apache.org/favicons/apple-touch-icon-60x60.png><link rel=apple-touch-icon sizes=72x72 href=https://apache.org/favicons/apple-touch-icon-72x72.png><link rel=apple-touch-icon sizes=76x76 href=https://apache.org/favicons/apple-touch-icon-76x76.png><link rel=apple-touch-icon sizes=114x114 href=https://apache.org/favicons/apple-touch-icon-114x114.png><link rel=apple-touch-icon sizes=120x120 href=https://apache.org/favicons/apple-touch-icon-120x120.png><link rel=apple-touch-icon sizes=144x144 href=https://apache.org/favicons/apple-touch-icon-144x144.png><link rel=apple-touch-icon sizes=152x152 href=https://apache.org/favicons/apple-touch-icon-152x152.png><link rel=apple-touch-icon sizes=180x180 href=https://apache.org/favicons/apple-touch-icon-180x180.png><link rel=icon type=image/png href=https://apache.org/favicons/favicon-32x32.png sizes=32x32><link rel=icon type=image/png href=https://apache.org/favicons/favicon-194x194.png sizes=194x194><link rel=icon type=image/png href=https://apache.org/favicons/favicon-96x96.png sizes=96x96><link rel=icon type=image/png href=https://apache.org/favicons/android-chrome-192x192.png sizes=192x192><link rel=icon type=image/png href=https://apache.org/favicons/favicon-16x16.png sizes=16x16><link rel=manifest href=https://apache.org/favicons/manifest.json><link rel="shortcut icon" href=https://apache.org/favicons/favicon.ico><title>Project | Apache Avro</title><meta name=description content><meta property="og:title" content="Project"><meta property="og:description" content><meta property="og:type" content="website"><meta property="og:url" content="/update-site/project/"><meta property="og:site_name" content="Apache Avro"><meta itemprop=name content="Project"><meta itemprop=description content><meta name=twitter:card content="summary"><meta name=twitter:title content="Project"><meta name=twitter:description content><link rel=preload href=/update-site/scss/main.min.6deb8a211453721a965671b611280fb11af8ef2def6b7a2b0a34f6a94939360f.css as=style><link href=/update-site/scss/main.min.6deb8a211453721a965671b611280fb11af8ef2def6b7a2b0a34f6a94939360f.css rel=stylesheet integrity><script src=https://code.jquery.com/jquery-3.5.1.min.js integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin=anonymous></script>
<link rel=stylesheet href=/css/prism.css></head><body class=td-section><header><nav class="js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar"><a class=navbar-brand href=/update-site/><span class=navbar-logo><img src=/docs/++version++/logo.svg width=100 height=30 style="margin:0 10px"></span><span class="text-uppercase font-weight-bold">Apache Avro</span></a><div class="td-navbar-nav-scroll ml-md-auto" id=main_navbar><ul class="navbar-nav mt-2 mt-lg-0"><li class="nav-item mr-4 mb-2 mb-lg-0"><a class="nav-link active" href=/update-site/project/><span class=active>Project</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=/update-site/blog/><span>Blog</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=/update-site/community/><span>Community</span></a></li><li class="nav-item dropdown mr-4 d-none d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true aria-expanded=false>Documentation</a><div class=dropdown-menu aria-labelledby=navbarDropdownMenuLink><a class=dropdown-item href=./docs/++version++/>++version++ (Current)</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.11.0/>1.11.0</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.10.2/>1.10.2</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.10.1/>1.10.1</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.10.0/>1.10.0</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.9.2/>1.9.2</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.9.1/>1.9.1</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.9.0/>1.9.0</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.8.2/>1.8.2</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.8.1/>1.8.1</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.8.0/>1.8.0</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.7.7/>1.7.7</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.7.6/>1.7.6</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.7.5/>1.7.5</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.7.4/>1.7.4</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.7.3/>1.7.3</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.7.2/>1.7.2</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.7.1/>1.7.1</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.7.0/>1.7.0</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.6.3/>1.6.3</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.6.2/>1.6.2</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.6.1/>1.6.1</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.6.0/>1.6.0</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.5.4/>1.5.4</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.5.3/>1.5.3</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.5.2/>1.5.2</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.5.1/>1.5.1</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.5.0/>1.5.0</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.4.1/>1.4.1</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.4.0/>1.4.0</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.3.3/>1.3.3</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.3.2/>1.3.2</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.3.1/>1.3.1</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.3.0/>1.3.0</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.2.0/>1.2.0</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.1.0/>1.1.0</a>
<a class=dropdown-item href=https://avro.apache.org/docs/1.0.0/>1.0.0</a></div></li><li class="nav-item dropdown mr-4 d-none d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true aria-expanded=false>ASF links</a><div class=dropdown-menu aria-labelledby=navbarDropdownMenuLink><a class=dropdown-item href=http://www.apache.org/ target=_blank>ASF Web Site</a>
<a class=dropdown-item href=http://www.apache.org/licenses/ target=_blank>License</a>
<a class=dropdown-item href=http://www.apache.org/foundation/sponsorship.html target=_blank>Donate</a>
<a class=dropdown-item href=http://www.apache.org/foundation/thanks.html target=_blank>Thanks</a>
<a class=dropdown-item href=http://www.apache.org/security/ target=_blank>Security</a></div></li></ul></div><div class="navbar-nav d-none d-lg-block"></div></nav></header><div class="container-fluid td-outer"><div class=td-main><div class="row flex-xl-nowrap"><div class="col-12 col-md-3 col-xl-2 td-sidebar d-print-none"></div><div class="d-none d-xl-block col-xl-2 td-toc d-print-none"></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><div class=td-content><div class="pageinfo pageinfo-primary d-print-none"><p>This is the multi-page printable view of this section.
<a href=# onclick="return print(),!1">Click here to print</a>.</p><p><a href=/update-site/project/>Return to the regular view of this page</a>.</p></div><h1 class=title>Project</h1><ul><li>1: <a href=#pg-012e680f6242537b069eff18d686a674>Download</a></li><ul></ul><li>2: <a href=#pg-b08f161257be4031dd69d279dafb245d>Credits</a></li><ul></ul><li>3: <a href=#pg-c05facdffda7353502bb63fac17f8bf4>Papers</a></li><ul></ul><li>4: <a href=#pg-898b76f8cf57b8c994043c03c3f5b1b6>Articles</a></li><ul></ul><li>5: <a href=#pg-24675057bcd6c8b266448b2d875c1bd0>How to contribute</a></li><ul></ul><li>6: <a href=#pg-3a23ebde194977974e94413cfe6da181>PMC onboarding guide</a></li><ul></ul><li>7: <a href=#pg-5ee3e57c091fc2dd203e42d819af627a>Committer onboarding guide</a></li><ul></ul><li>8: <a href=#pg-dfe06294e8456eedf106aa3d551fee02>Contributor onboarding guide</a></li><ul></ul><li>9: <a href=#pg-2b814fdab87b77e27bbe970e4d2415dd>Privacy policy</a></li><ul></ul><li>10: <a href=#pg-d7feecbc8c835017ffc6e5b4f4f6cc1c>Security</a></li><ul></ul><li>11: <a href=#pg-200654b0ff5d29c0f16045724bbf40cc>License</a></li><ul></ul><li>12: <a href=#pg-db9f7bea0d60535461a9ded5188e7bef>Events</a></li><ul></ul><li>13: <a href=#pg-daa926aa961e2ed947801fb956063660>Donate</a></li><ul></ul><li>14: <a href=#pg-067bedbc98e98c9cb8e5c7676e38b28e>Thanks</a></li><ul></ul></ul><div class=content><p>Apache Avro project is a member of the Apache Software Foundation!</p></div></div><div class=td-content><h1 id=pg-012e680f6242537b069eff18d686a674>1 - Download</h1><h2 id=download>Download</h2><p>Releases may be downloaded from Apache mirrors: <a href=https://www.apache.org/dyn/closer.cgi/avro/>Download</a></p><p>The latest release is: Avro ++version++ (3.4M, source, <a href=https://downloads.apache.org/avro/avro-++version++/avro-src-++version++.tar.gz.asc>pgp</a>, <a href=https://downloads.apache.org/avro/avro-++version++/avro-src-++version++.tar.gz.sha512>sha512</a>)</p><ul><li>C#: <a href=https://www.nuget.org/packages/Apache.Avro/++version++>https://www.nuget.org/packages/Apache.Avro/++version++</a></li><li>Java: from Maven Central,</li><li>Javascript: <a href=https://www.npmjs.com/package/avro-js/v/++version++>https://www.npmjs.com/package/avro-js/v/++version++</a></li><li>Perl: <a href=https://metacpan.org/release/Avro>https://metacpan.org/release/Avro</a></li><li>Python 3: <a href=https://pypi.org/project/avro/++version++>https://pypi.org/project/avro/++version++</a></li><li>Ruby: <a href=https://rubygems.org/gems/avro/versions/++version++>https://rubygems.org/gems/avro/versions/++version++</a></li></ul><h2 id=release-notes>Release Notes</h2><p>Release notes for Avro releases are available in <a href="https://issues.apache.org/jira/browse/AVRO?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel">Jira</a></p><p>##Verifying a release
It is essential that you verify the integrity of the downloaded files using the PGP signatures or SHA512 checksums. Please read <a href=https://www.apache.org/info/verification.html>How to verify downloaded</a> files for more information on why you should verify our releases.</p><p>The PGP signatures can be verified using PGP or GPG. First download the <a href=https://downloads.apache.org/avro/KEYS>KEYS</a> file as well as the .asc signature files for the relevant release packages. Make sure you get these files from the main distribution directory, rather than from a mirror. Then verify the signatures using:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>% gpg --import KEYS
</span></span><span style=display:flex><span>% gpg --verify downloaded_file.asc downloaded_file
</span></span></code></pre></div><p>or</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>% pgpk -a KEYS
</span></span><span style=display:flex><span>% pgpv downloaded_file.asc
</span></span></code></pre></div><p>or</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>% pgp -ka KEYS
</span></span><span style=display:flex><span>% pgp downloaded_file.asc
</span></span></code></pre></div><p>Alternatively, you can verify the hash on the file.</p><p>Hashes can be calculated using GPG:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>% gpg --print-md SHA256 downloaded_file
</span></span></code></pre></div><p>The output should be compared with the contents of the SHA256 file. Similarly for other hashes (SHA512, SHA1, MD5 etc) which may be provided.</p><p>Windows 7 and later systems should all now have certUtil:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>% certUtil -hashfile pathToFileToCheck
</span></span></code></pre></div><p>HashAlgorithm choices: <em>MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512</em></p><p>Unix-like systems (and macOS) will have a utility called <em>md5</em>, <em>md5sum</em> or <em>shasum</em>.</p></div><div class=td-content style=page-break-before:always><h1 id=pg-b08f161257be4031dd69d279dafb245d>2 - Credits</h1><h2 id=apache-avro-credits>Apache Avro credits</h2><h3 id=committers>Committers</h3><p>Apache Avro&rsquo;s active committers are:</p><table><thead><tr><th style=text-align:left><strong>username</strong></th><th style=text-align:left><strong>name</strong></th><th style=text-align:left><strong>organization</strong></th><th style=text-align:center><strong>roles</strong></th><th style=text-align:center><strong>timezone</strong></th></tr></thead><tbody><tr><td style=text-align:left>blue</td><td style=text-align:left>Ryan Blue</td><td style=text-align:left>Netflix</td><td style=text-align:center>spec, java, ruby</td><td style=text-align:center>-8</td></tr><tr><td style=text-align:left>brucem</td><td style=text-align:left>Bruce Mitchener</td><td style=text-align:left>Army of Bruce</td><td style=text-align:center>c</td><td style=text-align:center>+7</td></tr><tr><td style=text-align:left>busbey</td><td style=text-align:left>Sean Busbey</td><td style=text-align:left>Cloudera</td><td style=text-align:center>java, ruby</td><td style=text-align:center>-6</td></tr><tr><td style=text-align:left>cutting</td><td style=text-align:left>Doug Cutting</td><td style=text-align:left>Cloudera</td><td style=text-align:center>spec, java</td><td style=text-align:center>-8</td></tr><tr><td style=text-align:left>dcreager</td><td style=text-align:left>Douglas Creager</td><td style=text-align:left>RedJack, LLC</td><td style=text-align:center>c</td><td style=text-align:center>-5</td></tr><tr><td style=text-align:left>hammer</td><td style=text-align:left>Jeff Hammerbacher</td><td style=text-align:left>Cloudera</td><td style=text-align:center>python</td><td style=text-align:center>-8</td></tr><tr><td style=text-align:left>iemejia</td><td style=text-align:left>Ismaël Mejía</td><td style=text-align:left>Talend</td><td style=text-align:center>java, docker</td><td style=text-align:center>+1</td></tr><tr><td style=text-align:left>kojiromike</td><td style=text-align:left>Michael A. Smith</td><td style=text-align:left>Independent</td><td style=text-align:center>python, docker</td><td style=text-align:center>-5</td></tr><tr><td style=text-align:left>massie</td><td style=text-align:left>Matt Massie</td><td style=text-align:left>UC Berkeley</td><td style=text-align:center>c</td><td style=text-align:center>-8</td></tr><tr><td style=text-align:left>martinkl</td><td style=text-align:left>Martin Kleppmann</td><td style=text-align:left>University of Cambridge</td><td style=text-align:center>c, ruby</td><td style=text-align:center>0</td></tr><tr><td style=text-align:left>mgrigorov</td><td style=text-align:left>Martin Grigorov</td><td style=text-align:left>Huawei</td><td style=text-align:center>rust</td><td style=text-align:center>+2</td></tr><tr><td style=text-align:left>nielsbasjes</td><td style=text-align:left>Niels Basjes</td><td style=text-align:left>Bol.com</td><td style=text-align:center>java, docker</td><td style=text-align:center>+1</td></tr><tr><td style=text-align:left>philz</td><td style=text-align:left>Philip Zeyliger</td><td style=text-align:left>Cloudera</td><td style=text-align:center>java</td><td style=text-align:center>-8</td></tr><tr><td style=text-align:left>rskraba</td><td style=text-align:left>Ryan Skraba</td><td style=text-align:left>Talend</td><td style=text-align:center>java, docker</td><td style=text-align:center>+1</td></tr><tr><td style=text-align:left>sbanacho</td><td style=text-align:left>Scott Banachowski</td><td style=text-align:left>Microsoft</td><td style=text-align:center>c++</td><td style=text-align:center>-8</td></tr><tr><td style=text-align:left>scottcarey</td><td style=text-align:left>Scott Carey</td><td style=text-align:left>RichRelevance</td><td style=text-align:center>java</td><td style=text-align:center>-8</td></tr><tr><td style=text-align:left>sekikn</td><td style=text-align:left>Kengo Seki</td><td style=text-align:left>NTT Data</td><td style=text-align:center>perl, interoperability</td><td style=text-align:center>+9</td></tr><tr><td style=text-align:left>sharadag</td><td style=text-align:left>Sharad Agarwal</td><td style=text-align:left>InMobi</td><td style=text-align:center>python</td><td style=text-align:center>+5.5</td></tr><tr><td style=text-align:left>thiru</td><td style=text-align:left>Thiruvalluvan M. G.</td><td style=text-align:left>VertiCloud</td><td style=text-align:center>java</td><td style=text-align:center>+5.5</td></tr><tr><td style=text-align:left>tjwp</td><td style=text-align:left>Tim Perkins</td><td style=text-align:left>Shopify</td><td style=text-align:center>ruby</td><td style=text-align:center>-5</td></tr><tr><td style=text-align:left>tomwhite</td><td style=text-align:left>Tom White</td><td style=text-align:left>Cloudera</td><td style=text-align:center>java</td><td style=text-align:center>0</td></tr></tbody></table><hr><h3 id=contributors>Contributors</h3><p>A list of Avro contributors and their contributions is available from <a href=http://s.apache.org/AvroFixed>Jira</a></p><h3 id=emeriti>Emeriti</h3><p>Contributors who are no longer active on Avro are:</p><ul><li>None</li></ul></div><div class=td-content style=page-break-before:always><h1 id=pg-c05facdffda7353502bb63fac17f8bf4>3 - Papers</h1><hr><p><strong>A Benchmark of JSON-compatible Binary Serialization Specifications</strong><br>Jan 9 2022, by Juan Cruz Viotti, Mital Kinderkhedia.</p><p><a href=https://arxiv.org/abs/2201.03051>https://arxiv.org/abs/2201.03051</a></p><hr><p><strong>A Survey of JSON-compatible Binary Serialization Specifications</strong><br>Jan 6 2022, by Juan Cruz Viotti, Mital Kinderkhedia.</p><p><a href=https://arxiv.org/abs/2201.02089>https://arxiv.org/abs/2201.02089</a></p><hr><p><strong>Putting Avro into Hive</strong><br>Apr 2017, by S. Sreekanth, A Sai Ram Pramodhini, Ch S Likita, Chiluka Manisha.</p><p><a href=https://journals.pen2print.org/index.php/ijr/article/view/7377/0>https://journals.pen2print.org/index.php/ijr/article/view/7377/0</a></p><hr><p><strong>Benchmarking Performance of Data Serialization and RPC Frameworks in Microservices Architecture: gRPC vs. Apache Thrift vs. Apache Avro</strong><br>Oct 27 2016, by Nguyen, Thuy.</p><p><a href=https://aaltodoc.aalto.fi/handle/123456789/23386>https://aaltodoc.aalto.fi/handle/123456789/23386</a></p><hr><p><strong>Apache Avro</strong><br>Sep 30 2016, by Deepak Vohra.</p><p><a href=https://link.springer.com/chapter/10.1007/978-1-4842-2199-0_7>https://link.springer.com/chapter/10.1007/978-1-4842-2199-0_7</a></p><hr><p><strong>Object serialization vs relational data modelling in Apache Cassandra: a performance evaluation</strong><br>Apr 2015, by Valdemar Johansen.</p><p><a href=https://www.diva-portal.org/smash/get/diva2:839521/FULLTEXT02.pdf>https://www.diva-portal.org/smash/get/diva2:839521/FULLTEXT02.pdf</a></p></div><div class=td-content style=page-break-before:always><h1 id=pg-898b76f8cf57b8c994043c03c3f5b1b6>4 - Articles</h1><hr><p><strong>Guide to Apache Avro</strong><br>Feb 19, 2023, by baeldung.</p><p><a href=https://www.baeldung.com/java-apache-avro>https://www.baeldung.com/java-apache-avro</a></p><hr><p><strong>Apache Avro IDL Schema Support</strong>,<br>Apr 11, 2022, by Oscar Westra van Holthe - Kind.</p><p><a href=https://plugins.jetbrains.com/plugin/15728-apache-avro-idl-schema-support>https://plugins.jetbrains.com/plugin/15728-apache-avro-idl-schema-support</a></p><hr><p><strong>Generate random JSON data from an AVRO schema using Java</strong>,<br>Jan 24, 2022, by Maarten Smeets.</p><p><a href=https://technology.amis.nl/soa/kafka/generate-random-json-data-from-an-avro-schema-using-java/>https://technology.amis.nl/soa/kafka/generate-random-json-data-from-an-avro-schema-using-java/</a></p><hr><p><strong>A Gentle (and Practical) Introduction to Apache Avro</strong>,<br>Dec 22, 2020, by Anton Rodriguez.</p><p><a href=https://dzone.com/articles/gentle-and-practical-introduction-to-apache-avro-part-1>https://dzone.com/articles/gentle-and-practical-introduction-to-apache-avro-part-1</a></p><hr><p><strong>Apache Avro – A data serialization system</strong><br>Dec 09, 2018, by Dennis Vriend.</p><p><a href=https://binx.io/2018/12/09/apache-avro/>https://binx.io/2018/12/09/apache-avro/</a></p><hr><p><strong>Introduction to Apache Avro</strong><br>Mar 12, 2016, by Bartosz Konieczny.</p><p><a href=https://www.waitingforcode.com/apache-avro/introduction-to-apache-avro/read>https://www.waitingforcode.com/apache-avro/introduction-to-apache-avro/read</a></p><hr><p><strong>Reading and Writing Avro Files from the Command Line</strong>,<br>Mar 17, 2013, by Michael G. Noll.</p><p><a href=https://www.michael-noll.com/blog/2013/03/17/reading-and-writing-avro-files-from-the-command-line/>https://www.michael-noll.com/blog/2013/03/17/reading-and-writing-avro-files-from-the-command-line/</a></p><hr><p><strong>Using Apache Avro</strong><br>Jan 25, 2011, by Boris Lublinsky.</p><p><a href=https://www.infoq.com/articles/ApacheAvro/>https://www.infoq.com/articles/ApacheAvro/</a></p></div><div class=td-content style=page-break-before:always><h1 id=pg-24675057bcd6c8b266448b2d875c1bd0>5 - How to contribute</h1><h2 id=getting-the-source-code>Getting the source code</h2><p>First of all, you need the Avro source code.</p><p>The easiest way is to clone or fork the GitHub mirror:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>git clone https://github.com/apache/avro.git -o github
</span></span></code></pre></div><h2 id=making-changes>Making Changes</h2><p>Before you start, file an issue in <a href=https://issues.apache.org/jira/browse/AVRO>JIRA</a> or discuss your ideas on the <a href=http://avro.apache.org/mailing_lists.html>Avro developer mailing list</a>. Describe your proposed changes and check that they fit in with what others are doing and have planned for the project. Be patient, it may take folks a while to understand your requirements.</p><p>Modify the source code and add some (very) nice features using your favorite IDE.</p><p>But take care about the following points</p><p><strong>All Languages</strong></p><ul><li>Contributions should pass existing unit tests.</li><li>Contributions should document public facing APIs.</li><li>Contributions should add new tests to demonstrate bug fixes or test new features.</li></ul><p><strong>Java</strong></p><ul><li>All public classes and methods should have informative <a href=https://www.oracle.com/fr/technical-resources/articles/java/javadoc-tool.html>Javadoc comments</a>.</li><li>Do not use @author tags.</li><li>Java code should be formatted according to <a href=https://www.oracle.com/java/technologies/javase/codeconventions-introduction.html>Oracle&rsquo;s conventions</a>, with one exception:<ul><li>Indent two spaces per level, not four.</li></ul></li><li><a href=http://www.junit.org/>JUnit</a> is our test framework:</li><li>You must implement a class whose class name starts with Test.</li><li>Define methods within your class and tag them with the @Test annotation. Call JUnit&rsquo;s many assert methods to verify conditions; these methods will be executed when you run mvn test.</li><li>By default, do not let tests write any temporary files to /tmp. Instead, the tests should write to the location specified by the test.dir system property.</li><li>Place your class in the src/test/java/ tree.</li><li>You can run all the unit tests with the command mvn test, or you can run a specific unit test with the command mvn -Dtest=&lt;class name, fully qualified or short name> test (for example mvn -Dtest=TestFoo test)</li></ul><h2 id=code-style-autoformatting>Code Style (Autoformatting)</h2><p>For Java code we use <a href=https://github.com/diffplug/spotless/>Spotless</a> to format the code to comply with Avro&rsquo;s code style conventions (see above). Automatic formatting relies on <a href=https://github.com/apache/avro/blob/master/lang/java/eclipse-java-formatter.xml>Avro&rsquo;s Eclipse JDT formatter definition</a>. You can use the same definition to auto format from Eclipse or from IntelliJ configuring the Eclipse formatter plugin.</p><p>If you use maven code styles issues are checked at the compile phase. If your code breaks because of bad formatting, you can format it automatically by running the command:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>mvn spotless:apply
</span></span></code></pre></div><h2 id=unit-tests>Unit Tests</h2><p>Please make sure that all unit tests succeed before constructing your patch and that no new compiler warnings are introduced by your patch. Each language has its own directory and test process.</p><details><summary>Java</summary><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span><span style=color:#204a87>cd</span> avro-trunk/lang/java
</span></span><span style=display:flex><span>mvn clean <span style=color:#204a87>test</span>
</span></span></code></pre></div></details><details><summary>Python</summary><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span><span style=color:#204a87>cd</span> avro-trunk/lang/py
</span></span><span style=display:flex><span>./setup.py build <span style=color:#204a87>test</span>
</span></span></code></pre></div></details><details><summary><a href=https://www.rust-lang.org/>Rust</a></summary><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span><span style=color:#204a87>cd</span> avro-trunk/lang/rust
</span></span><span style=display:flex><span>./build.sh clean <span style=color:#204a87>test</span>
</span></span></code></pre></div></details><details><summary>C#</summary><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span><span style=color:#204a87>cd</span> avro-trunk/lang/csharp
</span></span><span style=display:flex><span>./build.sh clean <span style=color:#204a87>test</span>
</span></span></code></pre></div></details><details><summary>C</summary><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span><span style=color:#204a87>cd</span> avro-trunk/lang/c
</span></span><span style=display:flex><span>./build.sh clean
</span></span><span style=display:flex><span>./build.sh <span style=color:#204a87>test</span>
</span></span></code></pre></div></details><details><summary>C++</summary><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span><span style=color:#204a87>cd</span> avro-trunk/lang/c++
</span></span><span style=display:flex><span>./build.sh clean <span style=color:#204a87>test</span>
</span></span></code></pre></div></details><details><summary>Ruby</summary><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span><span style=color:#204a87>cd</span> avro-trunk/lang/ruby
</span></span><span style=display:flex><span>gem install echoe
</span></span><span style=display:flex><span>rake clean <span style=color:#204a87>test</span>
</span></span></code></pre></div></details><details><summary>PHP</summary><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span><span style=color:#204a87>cd</span> avro-trunk/lang/php
</span></span><span style=display:flex><span>./build.sh clean
</span></span><span style=display:flex><span>./build.sh <span style=color:#204a87>test</span>
</span></span></code></pre></div></details><h2 id=contributing-your-code>Contributing your code</h2><p>Contribution can be made directly via github with a Pull Request, or via a patch.</p><p><strong>Via Github</strong></p><p>Method is to create a <a href=https://help.github.com/articles/using-pull-requests/>pull request</a>.</p><p>On your fork, create a branch named with JIRA (avro-1234_fixNpe for example)
On source, go to it</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>git pull
</span></span><span style=display:flex><span>git switch avro-1234_fixNpe
</span></span></code></pre></div><p>code your changes (following preceding recommendations)</p><p>check and add updated sources</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>git status
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#8f5902;font-style:italic># Add any new or changed files with:</span>
</span></span><span style=display:flex><span>git add src/.../MyNewClass.java
</span></span><span style=display:flex><span>git add src/.../TestMyNewClass.java
</span></span></code></pre></div><p>Finally, create a commit with your changes and a good log message, and push it:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>git commit -m <span style=color:#4e9a06>&#34;AVRO-1234: Fix NPE by adding check to ...&#34;</span>
</span></span><span style=display:flex><span>git push
</span></span></code></pre></div><p>On your github fork site, a button will propose you to build the Pull Request.
Click on it, fill Conversation form, and create it.
Link this PR to the corresponding JIRA ticket (on JIRA ticket, add PR to &ldquo;Issue Links&rdquo; chapter, and add label &lsquo;pull-request-available&rsquo; to it .</p><h2 id=jira-guidelines>Jira Guidelines</h2><p>Please comment on issues in <a href=https://issues.apache.org/jira/projects/AVRO/issues>Jira</a>, making your concerns known. Please also vote for issues that are a high priority for you.</p><p>Please refrain from editing descriptions and comments if possible, as edits spam the mailing list and clutter Jira&rsquo;s &ldquo;All&rdquo; display, which is otherwise very useful. Instead, preview descriptions and comments using the preview button (on the right) before posting them. Keep descriptions brief and save more elaborate proposals for comments, since descriptions are included in Jira&rsquo;s automatically sent messages. If you change your mind, note this in a new comment, rather than editing an older comment. The issue should preserve this history of the discussion.</p><h2 id=stay-involved>Stay involved</h2><p>Contributors should join the Avro mailing lists. In particular, the commit list (to see changes as they are made), the dev list (to join discussions of changes) and the user list (to help others).</p><h2 id=workflow>Workflow</h2><p>Building and running the site locally requires a recent extended version of Hugo. Install <a href=https://gohugo.io/installation/>Hugo</a> for your environment. Once you&rsquo;ve made your working copy of the site repo, from the repo root folder, run:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>hugo server --navigateToChanged
</span></span></code></pre></div><p>Edit .md and .html files in content/ folder</p><p>Once satisfied with the changes, commit them:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>git commit -a
</span></span></code></pre></div><p>Generate the HTML file stop hugo server &ndash;navigateToChanged (with Ctrl+C) and run</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>hugo
</span></span></code></pre></div><p>This will generate the HTMLs in public/ folder and this is actually what is being deployed</p><p>Add the modified HTML files to Git</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>git add .
</span></span><span style=display:flex><span>git rm offline-search-index.&lt;&lt;OLD-HASH&gt;&gt;.json
</span></span><span style=display:flex><span>git commit -a
</span></span><span style=display:flex><span>git push
</span></span></code></pre></div><p>This way even when the PR modifies a lot of files we can review only the first commit, the meaningful one, with the modified files in content/ folder</p><h2 id=running-a-container-locally>Running a container locally</h2><p>You can also run avro-website inside a Docker container, the container runs with a volume bound to the avro-website folder. This approach doesn&rsquo;t require you to install any dependencies other than Docker Desktop on Windows and Mac, and Docker Compose on Linux.</p><p>Build the docker image</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>docker-compose build
</span></span></code></pre></div><p>Run the built image</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>docker-compose up
</span></span></code></pre></div><p>NOTE: You can run both commands at once with docker-compose up &ndash;build.</p><p>Verify that the service is working.</p><p>Open your web browser and type http://localhost:1313 in your navigation bar, This opens a local instance of the docsy-example homepage. You can now make changes to the docsy example and those changes will immediately show up in your browser after you save.</p><p><strong>Cleanup</strong></p><p>To stop Docker Compose, on your terminal window, press Ctrl + C.</p><p>To remove the produced images run:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>docker-compose rm
</span></span></code></pre></div><h2 id=troubleshooting>Troubleshooting</h2><p>As you run the website locally, you may run into the following error:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>➜ hugo server
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>INFO 2021/01/21 21:07:55 Using config file:
</span></span><span style=display:flex><span>Building sites … INFO 2021/01/21 21:07:55 syncing static files to /
</span></span><span style=display:flex><span>Built in <span style=color:#0000cf;font-weight:700>288</span> ms
</span></span><span style=display:flex><span>Error: Error building site: TOCSS: failed to transform <span style=color:#4e9a06>&#34;scss/main.scss&#34;</span> <span style=color:#ce5c00;font-weight:700>(</span>text/x-scss<span style=color:#ce5c00;font-weight:700>)</span>: resource <span style=color:#4e9a06>&#34;scss/scss/main.scss_9fadf33d895a46083cdd64396b57ef68&#34;</span> not found in file cache
</span></span></code></pre></div><p>This error occurs if you have not installed the extended version of Hugo. See our user guide for instructions on how to install Hugo.</p><h2 id=edit-content>Edit content</h2><p>The website content is in content/en folder. It contains .md (Markdown) and .html (HTML) files.</p><p><strong>Layouts</strong></p><p>To change the layout of any page edit layouts/<page>/**.html. If there is no layout for a given page at that location then copy the one provided by the theme and edit it:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>cp themes/docsy/layouts/&lt;xyz&gt; layouts/&lt;xyz&gt;
</span></span></code></pre></div><p><strong>Avro version</strong></p><p>When a new version of Apache Avro is released:</p><p>Change the value of params.avroversion in config.toml
Add a new entry to the Releases pages in the Blog section, for example:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>cp content/en/blog/releases/avro-1.10.2-released.md content/en/blog/releases/avro-1.11.0-released.md
</span></span></code></pre></div><p><strong>API documentation for C/C++/C# modules</strong></p><p>The API documentations for C/C++/C# are built by their respective build.sh dist implementations. The final HTML should be copied to the external folder, for example:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>cp ../avro/build/avro-doc-1.12.0-SNAPSHOT/api/c/* content/en/docs/external/c/
</span></span></code></pre></div><h2 id=jira-conventions>JIRA conventions</h2><p>Issue types: JIRA issues are categorized into different types such as bugs, improvements, new features, etc. Each issue type has a unique icon and a set of fields that are specific to that type.</p><p>Workflow: JIRA issues follow a predefined workflow that defines the steps that an issue goes through from creation to resolution. Each step in the workflow can have its own set of conditions and actions.</p><p>Priority: JIRA allows users to set priorities for issues to help determine the order in which they should be addressed. The priority can be set to one of five levels: Blocker, Critical, Major, Minor, and Trivial. Blocker is the highest priority and Trivial is the lowest priority.</p><p>Labels: Labels are used to tag issues with keywords or phrases that can help with searching and filtering.</p><p>Components: Components are used to group related issues together. For example, a software project might have components for the user interface, database, and networking.</p><h2 id=see-also>See Also</h2><ul><li><a href=http://www.apache.org/dev/contributors.html>Apache contributor documentation</a></li><li><a href=http://www.apache.org/foundation/voting.html>Apache voting documentation</a></li></ul></div><div class=td-content style=page-break-before:always><h1 id=pg-3a23ebde194977974e94413cfe6da181>6 - PMC onboarding guide</h1><ol><li>Use <a href=https://whimsy.apache.org>https://whimsy.apache.org</a> you can check that you got added to the PMC list properly</li><li>Validate you are in the PMC group in JIRA and the Confluence Wiki</li><li>Subscribe to <a href=mailto:private@avro.apache.org>private@avro.apache.org</a>; you can use whimsy to do this for whatever email account you want, or send mail from that mail address to private-subscribe@</li><li>You should have access also to <a href=https://reporter.apache.org>https://reporter.apache.org</a> which seeds our board reports</li><li>You can now access and read the private list archive (for linking to vote threads, etc) at <a href=https://lists.apache.org/list.html?private@avro.apache.org>https://lists.apache.org/list.html?private@avro.apache.org</a></li><li>Review the ASF PMC guides. There are a few, but you should re-read what the responsibilities are.</li><li>The PMC keeps a set of valuable resources in <a href=https://svn.apache.org/repos/private/pmc>https://svn.apache.org/repos/private/pmc</a></li></ol></div><div class=td-content style=page-break-before:always><h1 id=pg-5ee3e57c091fc2dd203e42d819af627a>7 - Committer onboarding guide</h1><hr><p>For you, the new committer:</p><ol><li>File your ICLA and send it to <a href=mailto:secretary@apache.org>secretary@apache.org</a></li><li>Log in to <a href=https://whimsy.apache.org>https://whimsy.apache.org</a>; that will confirm a working ASF account</li><li>You can edit email routing for the account, and add other emails that you own</li><li>You can directly edit mailing list subscriptions (for example, you might switch them to your ASF account - you can still post from any of your registered emails)</li><li>Link your GitHub account with your ASF account at <a href=https://gitbox.apache.org/>https://gitbox.apache.org/</a> once you see the big green &ldquo;Merge&rdquo; button on pull requests, this is working</li><li>Read the ASF new committer guide: <a href=https://www.apache.org/dev/new-committers-guide.html>https://www.apache.org/dev/new-committers-guide.html</a></li></ol><hr><p>A committer in JIRA can add a new contributor by following these steps:</p><ol><li>Log in to JIRA with your committer credentials.</li><li>Navigate to the project where you want to add the new contributor.</li><li>Click on the &ldquo;People&rdquo; tab at the top of the page.</li><li>Click on the &ldquo;Add People&rdquo; button.</li><li>Enter the email address of the new contributor in the &ldquo;Email Address&rdquo; field.</li><li>Select the appropriate role for the new contributor from the &ldquo;Role&rdquo; dropdown menu.</li><li>Click the &ldquo;Add&rdquo; button to add the new contributor to the project.</li><li>An email will be sent to the new contributor asking them to accept the invitation to join the project.</li></ol></div><div class=td-content style=page-break-before:always><h1 id=pg-dfe06294e8456eedf106aa3d551fee02>8 - Contributor onboarding guide</h1><ol><li><p>Familiarize yourself with Apache Avro: Before you start contributing to Apache Avro, it&rsquo;s essential to have a good understanding of what Apache Avro is and how it works. You can start by reading the Apache Avro documentation to get an overview of the project&rsquo;s features, use cases, and architecture.</p></li><li><p>Join the Apache Avro community: Join the Apache Avro mailing lists, IRC channels, and forums to interact with other contributors and users. You can ask questions, discuss ideas, and get feedback on your contributions from experienced contributors.</p></li><li><p>Set up your development environment: To contribute to Apache Avro, you need to set up your development environment. The Apache Avro project uses Git for version control, and Apache Maven for building. You can follow the instructions in the Apache Avro documentation to set up your environment.</p></li><li><p>Choose a contribution: Apache Avro is an open-source project, and there are always new features, bug fixes, and improvements that can be made. You can choose from a wide range of contributions, from documentation updates to code changes.</p></li><li><p>Review existing issues and pull requests: Before you start working on a contribution, it&rsquo;s important to review existing issues and pull requests to avoid duplicating efforts. You can use the Apache Avro issue tracker to search for issues and pull requests related to your contribution.</p></li><li><p>Create a new issue or pull request: If you can&rsquo;t find an existing issue or pull request related to your contribution, you can create a new one. Make sure to provide detailed information about your contribution, including a description of the problem, proposed solution, and any relevant code changes.</p></li><li><p>Work on your contribution: Once you have a clear understanding of the contribution you want to make, you can start working on it. Make sure to follow the Apache Avro coding guidelines and best practices to ensure that your code is of high quality.</p></li><li><p>Submit your contribution: When you&rsquo;re ready to submit your contribution, create a pull request in the Apache Avro GitHub repository. Make sure to include a detailed description of your changes, and any relevant documentation or test cases.</p></li><li><p>Participate in reviews: Once you&rsquo;ve submitted your contribution, it will be reviewed by other contributors. You may need to make additional changes based on their feedback before your contribution is accepted.
Celebrate your contribution: Once your contribution has been accepted, celebrate your achievement! You&rsquo;ve helped improve Apache Avro and contributed to the open-source community.</p></li></ol></div><div class=td-content style=page-break-before:always><h1 id=pg-2b814fdab87b77e27bbe970e4d2415dd>9 - Privacy policy</h1><p>Apache Avro project shares the same privacy policy as the <a href=https://hadoop.apache.org/privacy_policy.html>Apache Software Foundation</a></p></div><div class=td-content style=page-break-before:always><h1 id=pg-d7feecbc8c835017ffc6e5b4f4f6cc1c>10 - Security</h1><p>Apache Avro project shares the same security policy as the <a href=https://www.apache.org/security/>Apache Software Foundation</a></p></div><div class=td-content style=page-break-before:always><h1 id=pg-200654b0ff5d29c0f16045724bbf40cc>11 - License</h1><p>Apache Avro project is licensed under <a href=https://www.apache.org/licenses/LICENSE-2.0>Apache Software License 2.0</a></p></div><div class=td-content style=page-break-before:always><h1 id=pg-db9f7bea0d60535461a9ded5188e7bef>12 - Events</h1><p>Apache Avro members often participate in events organized by the <a href=https://www.apache.org/events/current-event.html>Apache Software Foundation</a></p></div><div class=td-content style=page-break-before:always><h1 id=pg-daa926aa961e2ed947801fb956063660>13 - Donate</h1><p>If you would like to donate please see the Apache Software Foundation <a href=https://www.apache.org/foundation/sponsorship.html>donation program</a></p></div><div class=td-content style=page-break-before:always><h1 id=pg-067bedbc98e98c9cb8e5c7676e38b28e>14 - Thanks</h1><p>Apache Avro project could not exist without the continued generous support from the community! We would like to take this opportunity to thank the ASF <a href=https://www.apache.org/foundation/thanks.html>Sponsors</a>.</p></div></main></div></div><footer class="bg-dark py-5 row d-print-none"><div class="container-fluid mx-sm-5"><div class=row><div class="col-4 col-sm-3 text-xs-center order-sm-2"><ul class="list-inline mb-0"><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title="User mailing list" aria-label="User mailing list"><a class=text-white target=_blank rel=noopener href=mailto:user@avro.apache.org aria-label="User mailing list"><i class="fa fa-envelope"></i></a></li><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title=Twitter aria-label=Twitter><a class=text-white target=_blank rel=noopener href=https://twitter.com/ApacheAvro aria-label=Twitter><i class="fab fa-twitter"></i></a></li><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title="Stack Overflow" aria-label="Stack Overflow"><a class=text-white target=_blank rel=noopener href=https://stackoverflow.com/questions/tagged/avro aria-label="Stack Overflow"><i class="fab fa-stack-overflow"></i></a></li></ul></div><div class="col-4 col-sm-3 text-right text-xs-center order-sm-3"><ul class="list-inline mb-0"><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title=GitHub aria-label=GitHub><a class=text-white target=_blank rel=noopener href=https://github.com/apache/avro aria-label=GitHub><i class="fab fa-github"></i></a></li><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title=Issues aria-label=Issues><a class=text-white target=_blank rel=noopener href=https://issues.apache.org/jira/projects/AVRO/issues aria-label=Issues><i class="fab fa-jira"></i></a></li><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title="Chat with other project developers at Slack" aria-label="Chat with other project developers at Slack"><a class=text-white target=_blank rel=noopener href=https://the-asf.slack.com/ aria-label="Chat with other project developers at Slack"><i class="fab fa-slack"></i></a></li><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title="Developer mailing list" aria-label="Developer mailing list"><a class=text-white target=_blank rel=noopener href=mailto:dev@avro.apache.org aria-label="Developer mailing list"><i class="fa fa-envelope"></i></a></li></ul></div><div class="col-10 col-sm-3 text-center py-2 order-sm-2"><a href=https://www.apache.org/><small class=text-white>&copy; 2023 The Apache Software Foundation </small></a><small class=text-white>All Rights Reserved</small><p><small class=text-white>Apache Avro, Avro&trade;, Apache&reg;, and the Apache feather logo are either registered trademarks or trademarks of The Apache Software Foundation.</small></p></div><div class="col-5 col-sm-3 order-sm-2"><a href=https://www.apache.org/events/current-event.html><img src=https://www.apache.org/events/current-event-234x60.png></a></div></div></div></footer></div><script src=https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js integrity=sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN crossorigin=anonymous></script>
<script src=https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.min.js integrity="sha512-UR25UO94eTnCVwjbXozyeVd6ZqpaAE9naiEUBK/A+QDbfSTQFhPGj5lOR6d8tsgbBk84Ggb5A3EkjsOgPRPcKA==" crossorigin=anonymous></script>
<script src=/js/tabpane-persist.js></script>
<script src=/update-site/js/main.min.b0910468256f44515fad3d1c8b5cf64a439da3abc1acef42ad39b9ceac3ae705.js integrity="sha256-sJEEaCVvRFFfrT0ci1z2SkOdo6vBrO9CrTm5zqw65wU=" crossorigin=anonymous></script>
<script src=/js/prism.js></script></body></html>