<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        
        
        <!-- This is broken by doc revisioning.
         -->
        <link rel="shortcut icon" href="../../../../img/favicon.ico">

        <title>toc - Apache Mynewt</title>

        <link href="../../../../css/bootstrap-3.0.3.min.css" rel="stylesheet">
        <link rel="stylesheet" href="../../../../css/highlight.css">
        <link href="../../../../css/base.css" rel="stylesheet">
        <link href="../../../../css/custom.css" rel="stylesheet">
        <link href="../../../../css/v2.css" rel="stylesheet">
        <link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">

        <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
        <!--[if lt IE 9]>
            <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
            <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
        <![endif]-->

        
            <script>
            (function(i, s, o, g, r, a, m) {
    i["GoogleAnalyticsObject"] = r;
    (i[r] =
        i[r] ||
        function() {
            (i[r].q = i[r].q || []).push(arguments);
        }),
        (i[r].l = 1 * new Date());
    (a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);
    a.async = 1;
    a.src = g;
    m.parentNode.insertBefore(a, m);
})(window, document, "script", "//www.google-analytics.com/analytics.js", "ga");

ga("create", "UA-72162311-1", "auto");
ga("send", "pageview");
</script>
        
    </head>


    <body class="toc">


        <div class="container">
    <div class="row v2-main-banner">
        <a class="logo-cell" href="/">
            <img class="logo" src="/img/logo.png">
        </a>
        <div class="tagline-cell">
            <h4 class="tagline">An OS to build, deploy and securely manage billions of devices</h4>
        </div>
        <div class="news-cell">
            <div class="well">
                <h4>Latest News:</h4> <a href="/download">Apache Mynewt 1.12.0, Apache NimBLE 1.7.0 </a> released (April 4, 2024)
            </div>
        </div>
    </div>
</div>

        






<nav id="navbar" class="navbar navbar-inverse affix-top" data-spy="affix" data-offset-top="150" role="navigation">
    <div class="container">
        <!-- Collapsed navigation -->
        <div class="navbar-header">
            <!-- Expander button -->
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>

        </div>

        <!-- Expanded navigation -->
        <div class="navbar-collapse collapse">
            <!-- Main navigation -->
            <ul class="nav navbar-nav navbar-right">
                <li 
  class=""
>
                    <a href="/"><i class="fa fa-home" style="font-size: larger;"></i></a>
                </li>
                <li 
  class="important"
>
                    <a href="/quick-start/">Quick Start</a>
                </li>
                <li 
  class=""
>
                    <a href="/about/">About</a>
                </li>
                <li 
  class=""
>
                    <a href="/talks/">Talks</a>
                </li>
                <li 
  class="active"
>
                    <a href="/documentation/">Documentation</a>
                </li>
                <li 
  class=""
>
                    <a href="/download/">Download</a>
                </li>
                <li 
  class=""
>
                    <a href="/community/">Community</a>
                </li>
                <li 
  class=""
>
                    <a href="/events/">Events</a>
                </li>
            </ul>

        </div>
    </div>
</nav>

        

        <div class="container">
            
                <div class="row">
                    <div class="col-md-3 v2-sidebar sidebar-container"><div id="docSidebar" class="hidden-print" role="complementary">
    <div class="top">
        <div role="search">
            <form id="rtd-search-form" class="wy-form" action="../../../../search.html" method="get">
                <div class="form-group">
                    <input type="text" name="q" class="form-control" placeholder="Search documentation" />
                </div>
            </form>
        </div>
    </div>
    <ul class="toc-nav">
      <li class="doc-version"><select class="form-control" onchange="if (this.value) window.location.href=this.value">
  <option value="/latest">
    Version: master
  </option>
  <option value="/v1_12_0/" >
    Version: 1.12.0
  </option>
  <option value="/v1_11_0/" >
    Version: 1.11.0
  </option>
  <option value="/v1_10_0/" >
    Version: 1.10.0
  </option>
  <option value="/v1_9_0/" >
    Version: 1.9.0
  </option>
    <option value="/v1_8_0/" >
    Version: 1.8.0
  </option>
  <option value="/v1_7_0/" >
    Version: 1.7.0
  </option>
  <option value="/v1_6_0/" >
    Version: 1.6.0
  </option>
  <option value="/v1_5_0/" >
    Version: 1.5.0
  </option>
  <option value="/v1_4_0/" >
    Version: 1.4.0
  </option>
  <option value="/v1_3_0/os/introduction" >
    Version: 1.3.0
  </option>
  <option value="/v1_2_0/os/introduction" selected="selected" >
    Version: 1.2.0
  </option>
  <option value="/v1_1_0/os/introduction" >
    Version: 1.1.0
  </option>
  <option value="/v1_0_0/os/introduction" >
    Version: 1.0.0
  </option>
  <option value="/v0_9_0/os/introduction" >
    Version: 0.9.0
  </option>
</select></li>
      
        
      
        
      
        
      
        
      
        
      
        
      
        
      
        
      
        
          
  
  
    <li ><a href="../../../introduction/">Mynewt Documentation</a>
  
  
    <ul>
          
              
          
              
                
  
  
    <li ><a href="../../../get_started/get_started/">Basic Setup</a>
  
  
    </li>

              
          
              
                
  <li >
    <a href="../../../get_started/vocabulary/">Concepts</a>
  </li>

              
          
              
                
  
  
    <li ><a href="../../tutorials/">Tutorials</a>
  
  
    <ul>
          
              
          
              
                
  
  
    <li ><a href="../../blinky/">Project Blinky</a>
  
  
    </li>

              
          
              
                
  
  
    <li class="active"><a href="./">Work with repositories</a>
  
  
    <ul>
          
              
          
              
                
  <li >
    <a href="../upgrade_repo/">Upgrade a Repo</a>
  </li>

              
          
              
                
  <li >
    <a href="../create_repo/">Turn project into a Repo</a>
  </li>

              
          
              
                
  <li >
    <a href="../private_repo/">Access a private Repo</a>
  </li>

              
          
    </ul>
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../project-slinky/">Project Slinky for Remote Comms</a>
  
  
    </li>

              
          
              
                
  
  
    <li><a href="
  ../../ble_bare_bones/
">Bluetooth Low Energy</a>
  
  
    </li>

              
          
              
                
  
  
    <li><a href="
  ../../lora/lorawanapp/
">LoRa</a>
  
  
    </li>

              
          
              
                
  
  
    <li><a href="
  ../../event_queue/
">OS Fundamentals</a>
  
  
    </li>

              
          
              
                
  
  
    <li><a href="
  ../../add_newtmgr/
">Remote Device Management</a>
  
  
    </li>

              
          
              
                
  
  
    <li><a href="
  
  
  ../../sensors/sensors/

">Sensors</a>
  
  
    </li>

              
          
              
                
  
  
    <li><a href="
  ../../segger_rtt/
">Tooling</a>
  
  
    </li>

              
          
              
                
  
  
    <li><a href="
  ../../codesize/
">Other</a>
  
  
    </li>

              
          
    </ul>
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../os_user_guide/">OS User Guide</a>
  
  
    </li>

              
          
              
                
  
  
    <li><a href="
  ../../../../network/ble/ble_intro/
">BLE User Guide</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../../newt/newt_intro/">Newt Tool Guide</a>
  
  
    </li>

              
          
              
                
  
  
    <li ><a href="../../../../newtmgr/overview/">Newt Manager Guide</a>
  
  
    </li>

              
          
              
                
  <li >
    <a href="../../../../known_issues/">Known Issues</a>
  </li>

              
          
    </ul>
  
    </li>

        
      
        
          
  
  
    <li><a href="
  ../../../../newt/install/prev_releases/
">Appendix</a>
  
  
    </li>

        
      
    </ul>
</div></div>

                    <div class="col-md-9" role="main">
                        <div class="doc-header">
                            <div role="navigation" aria-label="breadcrumbs navigation">
  <ul class="wy-breadcrumbs">
    <li><a href="/documentation/">Docs</a></li>
    
    
        
          <li>&raquo; Work with repositories</li>
        
      
        
          <li>&raquo; <a href="os/tutorials/tutorials/">Tutorials</a></li>
        
      
        
          <li>&raquo; <a href="os/introduction/">Mynewt Documentation</a></li>
        
      
      
    
    
      <li class="wy-breadcrumbs-aside">
        
          <a href="https://github.com/apache/mynewt-site/blob/master/docs/os/tutorials/repo/add_repos.md"
            class="icon icon-github"> Edit on GitHub</a>
        
      </li>
    
  </ul>
</div>
                        </div>
                        
                          
                        
                          
                        
                          
                        
                          
                        
                          
                            <div class="alert alert-warning">
                                <p>
                                    Version 1.2.0 is not the most recent version of the Apache Mynewt
                                    documentation. Click <a href="/latest">here</a> to read the latest
                                    version.
                                </p>
                            </div>
                          
                        
                        
                            <h2 id="adding-repositories-to-your-project">Adding Repositories to your Project</h2>
<h3 id="what-is-a-repository">What is a Repository</h3>
<p>A repository is a version-ed Mynewt project, which is a collection of Mynewt packages organized in a specific way for redistribution.  </p>
<p>What differentiates a repository from a Mynewt project is the presence of a
<code>repository.yml</code> file describing the repository. This will be described 
below. For a basic understanding of repositories you may read the <a href="../../../../newt/newt_intro/">Newt Tool Manual</a> and <a href="../create_repo/">How to create repos</a>.</p>
<p><strong>Note:</strong> For the remainder of this document we'll use the term repo as shorthand for a Mynewt repository.</p>
<p>Repos are useful because they are an organized way for the community to share Mynewt packages and projects.  In fact, the Mynewt-core is distributed as a repo.</p>
<p><br></p>
<h3 id="why-does-mynewt-need-additional-repos">Why does Mynewt need additional repos?</h3>
<p>Repos add functionality not included in the Mynewt core.  New repos might be created for several reasons.</p>
<ul>
<li><strong>Expertise</strong>.  Individuals or organizations may have expertise that they want
to share in the form of repos. For example a chip vendor may
create a repo to hold the Mynewt support for their chips.</li>
<li><strong>Non-Core component</strong>.  Some components, although very useful to Mynewt users
are not core to all Mynewt users.  These are likely candidates to be held in 
different repos.</li>
<li><strong>Software licensing</strong>.  Some software have licenses that make them incompatible
with the ASF (Apache Software Foundation) license policies.  These may be 
valuable components to some Mynewt users, but cannot be contained in the <code>apache-Mynewt-core</code>.</li>
</ul>
<p><br></p>
<h3 id="what-repos-are-in-my-project">What Repos are in my Project</h3>
<p>The list of repos used by your project are contained within the 
<code>project.yml</code> file.  An example can be seen by creating a new project:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>$ mkdir ~/dev
$ cd ~/dev
$ newt new myproj
$ cd myproj
</code></pre></div>

<p><br></p>
<p>View the <code>project.yml</code> section and you will see a line describing the repos:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>project.repositories:
    - apache-Mynewt-core
</code></pre></div>

<p><br> </p>
<p>By default, this newly created project uses a single repo called 
<code>apache-Mynewt-core</code>.  </p>
<p>If you wish to add additional repos, you would add 
additional lines to the <code>project.repositories</code> variable like this.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>project.repositories:
    - apache-Mynewt-core
<span style="background-color: #ffffcc">    - another_repo_named_x
</span></code></pre></div>

<p><br></p>
<h3 id="repo-descriptors">Repo Descriptors</h3>
<p>In addition to the repo name, the <code>project.yml</code> file must also contain
a repo descriptor for each repository you include that gives <code>newt</code> 
information on obtaining the repo.</p>
<p>In the same <code>myproj</code> above you will see the following repo descriptor.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>repository.apache-Mynewt-core:
    type: github
    vers: 1-latest
    user: apache
    repo: mynewt-core
</code></pre></div>

<p>A repo descriptor starts with <code>repository.&lt;name&gt;.</code>.  In this example, the 
descriptor specifies the information for the <code>apache-Mynewt-core</code>.</p>
<p><br></p>
<p>The fields within the descriptor have the following definitions:</p>
<ul>
<li>
<p><strong>type</strong> -- The type of code storage the repo uses.  The current version
of <code>newt</code> only supports github.  Future versions may support generic git or other
code storage mechanisms.</p>
</li>
<li>
<p><strong>vers</strong> -- The version of the repo to use for your project.  A source
code repository contains many versions of the source. This field is used to 
specify the one to use for this project.  See the section on versions below 
for a detailed description of the format of this field.</p>
</li>
<li>
<p><strong>user</strong> -- The username for the repo.  On github, this is the name
after <code>github.com</code> in the repo path.  Consider the repository 
<code>https://github.com/apache/mynewt-core</code>. It has username <code>apache</code>.  </p>
</li>
<li>
<p><strong>repo</strong> -- The name of the repo.  On github, this is the name after
the username described above.  Consider the repository 
<code>https://github.com/apache/mynewt-core</code>. It has path 
<code>mynewt-core</code>.  This is a path to the source control
and should not be confused with the name of the repo that you used in the 
<code>repository.&lt;name&gt;</code> declaration above.   That name is contained elsewhere
within the repo. See Below.</p>
</li>
</ul>
<p><br></p>
<h3 id="adding-existing-repos-to-my-project">Adding Existing Repos to my Project</h3>
<p>To add a new repo to your project, you have to complete two steps.</p>
<ul>
<li>
<p>Edit the <code>project.yml</code> file and add a new repo descriptor.  The previous
section includes information on the field required in your repo descriptor.</p>
</li>
<li>
<p>Edit the <code>project/yml</code> file and add a new line to the <code>project.repositories</code>
variable with the name of the repo you are adding.  </p>
</li>
</ul>
<p>An example of a <code>project.yml</code> file with two repositories is shown below:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>project.name: &quot;my_project&quot;

project.repositories:
    - apache-Mynewt-core
    - Mynewt_arduino_zero

# Use github&#39;s distribution mechanism for core ASF libraries.
# This provides mirroring automatically for us.
#
repository.apache-Mynewt-core:
    type: github
    vers: 1-latest
    user: apache
    repo: mynewt-core

# a special repo to hold hardware specific stuff for arduino zero
repository.Mynewt_arduino_zero:
    type: github
    vers: 1-latest
    user: runtimeco
    repo: Mynewt_arduino_zero
</code></pre></div>

<p><br></p>
<h3 id="what-version-of-the-repo-to-use">What Version of the Repo to use</h3>
<p>Mynewt repos are version-ed artifacts.  They are stored in source control 
systems like github.  The repo descriptor in your <code>project.yml</code> file must
specify the version of the repo you will accept into your project.</p>
<p>For now, we are at the beginnings of Mynewt. For testing and evaluation
please use <code>1-latest</code> in the <code>vers</code> field in your repo descriptor.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>    vers:1-latest
</code></pre></div>

<p>See <a href="create_repo">Create a Repo</a> for a description of the versioning system and all the possible ways to specify a version to use.</p>
<p><br></p>
<h3 id="identifying-a-repo">Identifying a Repo</h3>
<p>A repo contains Mynewt packages organized in a specific way and stored in one of the supported code storage methods described above. In other words, it is a Mynewt project with an additional file <code>repository.yml</code> which describes the repo for use by <code>newt</code> (and humans browsing them). It contains a mapping of version numbers to the actual github branches containing the source code.</p>
<p>Note that the <code>repository.yml</code> file lives only in the master branch of the git
repository.  <code>Newt</code> will always fetch this file from the master branch and then
use that to determine the actual branch required depending on the version
specified in your <code>project.yml</code> file.  Special care should be taken to ensure that this file exists only in the master branch.</p>
<p>Here is the <code>repository.yml</code> file from the apache-Mynewt-core:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>repo.name: apache-mynewt-core
repo.versions:
    &quot;0.0.0&quot;: &quot;master&quot;
    &quot;0.0.1&quot;: &quot;master&quot;
    &quot;0.7.9&quot;: &quot;mynewt_0_8_0_b2_tag&quot;
    &quot;0.8.0&quot;: &quot;mynewt_0_8_0_tag&quot;
    &quot;0.9.0&quot;: &quot;mynewt_0_9_0_tag&quot;
    &quot;0.9.9&quot;: &quot;mynewt_1_0_0_b1_tag&quot;
    &quot;0.9.99&quot;: &quot;mynewt_1_0_0_b2_tag&quot;
    &quot;0.9.999&quot;: &quot;mynewt_1_0_0_rc1_tag&quot;
    &quot;1.0.0&quot;: &quot;mynewt_1_0_0_tag&quot;

    &quot;0-latest&quot;: &quot;1.0.0&quot;    # 1.0.0
    &quot;0-dev&quot;: &quot;0.0.0&quot;       # master

    &quot;0.8-latest&quot;: &quot;0.8.0&quot;
    &quot;0.9-latest&quot;: &quot;0.9.0&quot;
    &quot;1.0-latest&quot;: &quot;1.0.0&quot;  # 1.0.0
</code></pre></div>

<p><br></p>
<p>It contains the following:</p>
<ul>
<li><strong>repo.name</strong> The external name that is used to include the library in 
your <code>project.yml</code> file.   This is the name you in include in the <code>project.repositories</code> variable when adding this repository to your project.</li>
<li><strong>repo.versions</strong> A description of what versions to give the user depending 
on the settings in their <code>project.yml</code> file.  </li>
</ul>
<p><br></p>
<h3 id="repo-version">Repo Version</h3>
<p>The repo version number resolves to an actual git branch depending on the mapping specified in <code>repository.yml</code> for that repo. The version field argument in your <code>project.yml</code> file supports multiple formats for flexibility:</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>&lt;major_num&gt;.&lt;minor_num&gt;.&lt;revision_num&gt;
</code></pre></div>

<p>or</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>&lt;major_num&gt;.&lt;minor_num&gt;-&lt;stability string&gt;
</code></pre></div>

<p>or </p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>&lt;major_num&gt;-&lt;stability string&gt;
</code></pre></div>

<p><br></p>
<p>The stability string can be one of 3 pre-defined stability values.</p>
<ol>
<li>stable -- A stable release version of the repository</li>
<li>dev    -- A development version from the repository</li>
<li>latest -- The latest from the repository</li>
</ol>
<p>In your <code>project.yml</code> file you can specify different combinations of 
the version number and stability value.  For example:</p>
<ul>
<li><code>1-latest</code>      -- The latest version with major number 1</li>
<li><code>1.2-stable</code>    -- The latest stable version with major and minor number 1.2</li>
<li><code>1.2-dev</code>       -- The development version from 1.2</li>
<li><code>1.1.1</code>         -- a specific version 1.1.1</li>
</ul>
<p>You cannot specify a stability string with a fully numbered version, e.g.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>1.2.8-stable
</code></pre></div>

<p><br></p>
<h3 id="repo-versions-available">Repo Versions Available</h3>
<p>A <code>repository.yml</code> file contains information to match a version request
into a git branch to fetch for your project.</p>
<p>It's up to the repository maintainer to map these to branches of the 
repository.  For example, let's say in a fictitious repository the following are 
defined.</p>
<div class="codehilite" style="background: #ffffff"><pre style="line-height: 125%;"><span></span><code>repo.versions:
    &quot;0.8.0&quot;: &quot;xxx_branch_0_8_0&quot;
    &quot;1.0.0&quot;: &quot;xxx_branch_1_0_0&quot;
    &quot;1.0.2&quot;: &quot;xxx_branch_1_0_2&quot;
    &quot;1.1.1&quot;: &quot;xxx_branch_1_1_0&quot;
    &quot;1.1.2&quot;: &quot;xxx_branch_1_1_2&quot;
    &quot;1.2.0&quot;: &quot;xxx_branch_1_2_0&quot;
    &quot;1.2.1&quot;: &quot;xxx_branch_1_2_1&quot;
    &quot;1.2-dev&quot;: &quot;1.2.1&quot;
    &quot;1-dev&quot;: &quot;1.2-dev&quot;
    &quot;1.2-stable&quot;: &quot;1.2.0&quot;
    &quot;0-latest&quot;: &quot;0.8.0&quot;
    &quot;1-latest&quot;: &quot;1-dev&quot;
    ....
</code></pre></div>

<p>When the <code>project.yml</code> file asks for <code>1.2-stable</code> it is resolved to version
<code>1.2.0</code> (perhaps <code>1.2.1</code> is not stable yet), which in turn resolves to a specific
branch <code>xxx_branch_1_2_0</code>.  This is the branch that <code>newt</code> fetches into 
your project. </p>
<p><strong>Note:</strong> Make sure a repo version exists in the <code>repository.yml</code> file of a repo you wish to add. Otherwise Newt will not be able to resolve the version and will fail to fetch the repo into your project.</p>
<p><br></p>
<h3 id="how-to-find-out-what-repos-are-available-for-mynewt-components">How to find out what Repos are available for Mynewt components</h3>
<p>Currently, there is no <code>newt</code> command to locate/search Mynewt package 
repositories.  However, since the <code>newt</code> tool supports only github, 
searching github by keyword is a satisfactory option until a search 
tool is created.</p>
<p>When searching github, recall that a Mynewt repository must 
have a <code>repository.yml</code> file in its root directory. If you don't see 
that file, it's not a Mynewt repository and can't be included in your 
project via the newt tool.  </p>
<p>Once you find a repository, the github URL and <code>repository.yml</code> file
should give you all the information to add it to your <code>project.yml</code> file.</p>
<p><br></p>
                        
                        <div class="row">
                            



<ul class="nav nav-pills" style="margin-bottom: 10px">
    <li>
    
    </li>
    <li class="pull-right">
    
    </li>
</ul>
                        </div>
                        <footer class="row">
    <div class="col-xs-12">
        
            <p class="copyright">Apache Mynewt is available under Apache License, version 2.0.</p>
        
    </div>
    <div class="col-xs-12">
        <div class="logos">
            <a href="https://www.apache.org/">
                <img src="/img/asf_logo_wide_small.png" alt="Apache" title="Apache">
            </a>
            <p>
                Copyright © 2015-2021 The Apache Software Foundation.<br>
                <small class="footnote">
                    Apache Mynewt, Mynewt, Apache, the Apache feather logo, and the Apache Mynewt
                    project logo are either registered trademarks or trademarks of the Apache
                    Software Foundation in the United States and other countries.
                </small>
            </p>
            <a href="">
                <img src="https://www.countit.com/images/add_to_slack.png" alt="Slack Icon" title="Join our Slack Community" />
            </a>
        </div>
    </div>
    <a href="https://www.apache.org/licenses/">
        <button class="button-footer-asf">
            License
        </button>
    </a>
    <a href="https://www.apache.org/foundation/sponsorship.html">
        <button class="button-footer-asf">
            Sponsorship
        </button>
    </a>
    <a href="https://www.apache.org/foundation/thanks.html">
        <button class="button-footer-asf">
            Thanks
        </button>
    </a>
    <a href="https://www.apache.org/security/">
        <button class="button-footer-asf">
            Security
        </button>
    </a>
    <a href="https://apache.org/events/current-event">
        <button class="button-footer-asf">
            ASF Events
        </button>
    </a>
</footer>
                    </div>
                </div>
            
            
        </div>

        <script src="../../../../js/jquery-1.10.2.min.js"></script>
        <script src="../../../../js/bootstrap-3.0.3.min.js"></script>
        <script src="../../../../js/highlight.pack.js"></script>
        <script src="../../../../js/base.js"></script>
        <script src="../../../../js/custom.js"></script>
            <script src="search/main.js"></script>

    </body>
</html>