<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
  <body>
    <h1>Downloads</h1>

    <ul id="toc"></ul>

    <h2><a id="releases">Project modules</a></h2>

    <p>
      The libvirt project maintains a number of inter-related modules beyond
      the core C library/daemon.
    </p>

    <table class="top_table downloads">
      <thead>
        <tr>
          <th>Module</th>
          <th>Releases</th>
          <th>GIT Repo</th>
          <th>GIT Mirrors</th>
          <th>Resources</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>libvirt</td>
          <td>
            <a href="https://libvirt.org/sources/">libvirt</a>
          </td>
          <td>
            <a href="https://libvirt.org/git/?p=libvirt.git;a=summary">libvirt</a>
          </td>
          <td>
            <a href="https://gitlab.com/libvirt/libvirt">gitlab</a>
            <a href="https://github.com/libvirt/libvirt">github</a>
          </td>
          <td>
            <a href="html/index.html">api ref</a>
            <a href="news.html">changes</a>
          </td>
        </tr>
        <tr>
          <th colspan="7">Language bindings</th>
        </tr>
        <tr>
          <td>C#</td>
          <td>
            <a href="https://libvirt.org/sources/csharp/">libvirt</a>
          </td>
          <td>
            <a href="https://libvirt.org/git/?p=libvirt-csharp.git;a=summary">libvirt</a>
          </td>
          <td>
            <a href="https://gitlab.com/libvirt/libvirt-csharp">gitlab</a>
            <a href="https://github.com/libvirt/libvirt-csharp">github</a>
          </td>
          <td></td>
        </tr>
        <tr>
          <td>Go</td>
          <td>
            <a href="https://libvirt.org/sources/go/">libvirt</a>
          </td>
          <td>
            <a href="https://libvirt.org/git/?p=libvirt-go.git;a=summary">libvirt</a>
          </td>
          <td>
            <a href="https://gitlab.com/libvirt/libvirt-go">gitlab</a>
            <a href="https://github.com/libvirt/libvirt-go">github</a>
          </td>
          <td>
            <a href="https://godoc.org/github.com/libvirt/libvirt-go">api ref</a>
          </td>
        </tr>
        <tr>
          <td>Java</td>
          <td>
            <a href="https://libvirt.org/sources/java/">libvirt</a>
          </td>
          <td>
            <a href="https://libvirt.org/git/?p=libvirt-java.git;a=summary">libvirt</a>
          </td>
          <td>
            <a href="https://gitlab.com/libvirt/libvirt-java">gitlab</a>
            <a href="https://github.com/libvirt/libvirt-java">github</a>
          </td>
          <td></td>
        </tr>
        <tr>
          <td>OCaml</td>
          <td>
            <a href="https://libvirt.org/sources/ocaml/">libvirt</a>
          </td>
          <td>
            <a href="https://libvirt.org/git/?p=libvirt-ocaml.git;a=summary">libvirt</a>
          </td>
          <td>
            <a href="https://gitlab.com/libvirt/libvirt-ocaml">gitlab</a>
            <a href="https://github.com/libvirt/libvirt-ocaml">github</a>
          </td>
          <td></td>
        </tr>
        <tr>
          <td>Perl (Sys::Virt)</td>
          <td>
            <a href="https://metacpan.org/release/Sys-Virt/">cpan</a>
          </td>
          <td>
            <a href="https://libvirt.org/git/?p=libvirt-perl.git;a=summary">libvirt</a>
          </td>
          <td>
            <a href="https://gitlab.com/libvirt/libvirt-perl">gitlab</a>
            <a href="https://github.com/libvirt/libvirt-perl">github</a>
          </td>
          <td>
            <a href="https://metacpan.org/release/Sys-Virt/">api ref</a>
            <a href="https://libvirt.org/git/?p=libvirt-perl.git;a=blob;f=Changes;hb=HEAD">changes</a>
          </td>
        </tr>
        <tr>
          <td>PHP</td>
          <td>
            <a href="https://libvirt.org/sources/php/">libvirt</a>
          </td>
          <td>
            <a href="https://libvirt.org/git/?p=libvirt-php.git;a=summary">libvirt</a>
          </td>
          <td>
            <a href="https://gitlab.com/libvirt/libvirt-php">gitlab</a>
            <a href="https://github.com/libvirt/libvirt-php">github</a>
          </td>
          <td></td>
        </tr>
        <tr>
          <td>Python</td>
          <td>
            <a href="https://libvirt.org/sources/python/">libvirt</a>
            <a href="https://pypi.python.org/pypi/libvirt-python">pypi</a>
          </td>
          <td>
            <a href="https://libvirt.org/git/?p=libvirt-python.git;a=summary">libvirt</a>
          </td>
          <td>
            <a href="https://gitlab.com/libvirt/libvirt-python">gitlab</a>
            <a href="https://github.com/libvirt/libvirt-python">github</a>
          </td>
          <td></td>
        </tr>
        <tr>
          <td>Ruby</td>
          <td>
            <a href="https://libvirt.org/sources/ruby/">libvirt</a>
          </td>
          <td>
            <a href="https://libvirt.org/git/?p=ruby-libvirt.git;a=summary">libvirt</a>
          </td>
          <td>
            <a href="https://gitlab.com/libvirt/ruby-libvirt">gitlab</a>
            <a href="https://github.com/libvirt/ruby-libvirt">github</a>
          </td>
          <td></td>
        </tr>
        <tr>
          <td>Rust</td>
          <td>
            <a href="https://libvirt.org/sources/rust/">libvirt</a>
          </td>
          <td>
            <a href="https://libvirt.org/git/?p=libvirt-rust.git;a=summary">libvirt</a>
          </td>
          <td>
            <a href="https://gitlab.com/libvirt/libvirt-rust">gitlab</a>
            <a href="https://github.com/libvirt/libvirt-rust">github</a>
          </td>
          <td></td>
        </tr>
        <tr>
          <th colspan="7">Integration modules</th>
        </tr>
        <tr>
          <td>GLib / GConfig / GObject</td>
          <td>
            <a href="https://libvirt.org/sources/glib/">libvirt</a>
          </td>
          <td>
            <a href="https://libvirt.org/git/?p=libvirt-glib.git;a=summary">libvirt</a>
          </td>
          <td>
            <a href="https://gitlab.com/libvirt/libvirt-glib">gitlab</a>
            <a href="https://github.com/libvirt/libvirt-glib">github</a>
          </td>
          <td></td>
        </tr>
        <tr>
          <td>Go XML</td>
          <td>
            <a href="https://libvirt.org/sources/go/">libvirt</a>
          </td>
          <td>
            <a href="https://libvirt.org/git/?p=libvirt-go-xml.git;a=summary">libvirt</a>
          </td>
          <td>
            <a href="https://gitlab.com/libvirt/libvirt-go-xml">gitlab</a>
            <a href="https://github.com/libvirt/libvirt-go-xml">github</a>
          </td>
          <td>
            <a href="https://godoc.org/github.com/libvirt/libvirt-go-xml">api ref</a>
          </td>
        </tr>
        <tr>
          <td>D-Bus</td>
          <td>
            <a href="https://libvirt.org/sources/dbus/">libvirt</a>
          </td>
          <td>
            <a href="https://libvirt.org/git/?p=libvirt-dbus.git;a=summary">libvirt</a>
          </td>
          <td>
            <a href="https://gitlab.com/libvirt/libvirt-dbus">gitlab</a>
            <a href="https://github.com/libvirt/libvirt-dbus">github</a>
          </td>
          <td></td>
        </tr>
        <tr>
          <td>Console Proxy</td>
          <td>
            <a href="https://libvirt.org/sources/consoleproxy/">libvirt</a>
          </td>
          <td>
            <a href="https://libvirt.org/git/?p=libvirt-console-proxy.git;a=summary">libvirt</a>
          </td>
          <td>
            <a href="https://gitlab.com/libvirt/libvirt-console-proxy">gitlab</a>
            <a href="https://github.com/libvirt/libvirt-console-proxy">github</a>
          </td>
          <td></td>
        </tr>
        <tr>
          <td>CIM provider</td>
          <td>
            <a href="https://libvirt.org/sources/CIM/">libvirt</a>
          </td>
          <td>
            <a href="https://libvirt.org/git/?p=libvirt-cim.git;a=summary">libvirt</a>
          </td>
          <td>
            <a href="https://gitlab.com/libvirt/libvirt-cim">gitlab</a>
            <a href="https://github.com/libvirt/libvirt-cim">github</a>
          </td>
          <td></td>
        </tr>
        <tr>
          <td>CIM utils</td>
          <td>
            <a href="https://libvirt.org/sources/CIM/">libvirt</a>
          </td>
          <td>
            <a href="https://libvirt.org/git/?p=libcmpiutil.git;a=summary">libvirt</a>
          </td>
          <td>
            <a href="https://gitlab.com/libvirt/libcmpiutil">gitlab</a>
            <a href="https://github.com/libvirt/libcmpiutil">github</a>
          </td>
          <td></td>
        </tr>
        <tr>
          <td>SNMP</td>
          <td>
            <a href="https://libvirt.org/sources/snmp/">libvirt</a>
          </td>
          <td>
            <a href="https://libvirt.org/git/?p=libvirt-snmp.git;a=summary">libvirt</a>
          </td>
          <td>
            <a href="https://gitlab.com/libvirt/libvirt-snmp">gitlab</a>
            <a href="https://github.com/libvirt/libvirt-snmp">github</a>
          </td>
          <td></td>
        </tr>
        <tr>
          <td>Application Sandbox</td>
          <td>
            <a href="https://libvirt.org/sources/sandbox/">libvirt</a>
          </td>
          <td>
            <a href="https://libvirt.org/git/?p=libvirt-sandbox.git;a=summary">libvirt</a>
          </td>
          <td>
            <a href="https://gitlab.com/libvirt/libvirt-sandbox">gitlab</a>
            <a href="https://github.com/libvirt/libvirt-sandbox">github</a>
          </td>
          <td></td>
        </tr>
        <tr>
          <th colspan="7">Testing</th>
        </tr>
        <tr>
          <td>TCK</td>
          <td>
            <a href="https://libvirt.org/sources/tck/">libvirt</a>
          </td>
          <td>
            <a href="https://libvirt.org/git/?p=libvirt-tck.git;a=summary">libvirt</a>
          </td>
          <td>
            <a href="https://gitlab.com/libvirt/libvirt-tck">gitlab</a>
            <a href="https://github.com/libvirt/libvirt-tck">github</a>
          </td>
          <td></td>
        </tr>
        <tr>
          <td>Test API</td>
          <td></td>
          <td>
            <a href="https://libvirt.org/git/?p=libvirt-test-API.git;a=summary">libvirt</a>
          </td>
          <td>
            <a href="https://gitlab.com/libvirt/libvirt-test-API">gitlab</a>
            <a href="https://github.com/libvirt/libvirt-test-API">github</a>
          </td>
          <td></td>
        </tr>
        <tr>
          <td>Jenkins Config</td>
          <td></td>
          <td>
            <a href="https://libvirt.org/git/?p=libvirt-jenkins-ci.git;a=summary">libvirt</a>
          </td>
          <td>
            <a href="https://gitlab.com/libvirt/libvirt-jenkins-ci">gitlab</a>
            <a href="https://github.com/libvirt/libvirt-jenkins-ci">github</a>
          </td>
          <td></td>
        </tr>
        <tr>
          <td>CIM Test</td>
          <td></td>
          <td>
            <a href="https://libvirt.org/git/?p=cimtest.git;a=summary">libvirt</a>
          </td>
          <td>
            <a href="https://gitlab.com/libvirt/cimtest">gitlab</a>
            <a href="https://github.com/libvirt/cimtest">github</a>
          </td>
          <td></td>
        </tr>
        <tr>
          <th colspan="7">Documentation</th>
        </tr>
        <tr>
          <td>Publican Brand</td>
          <td></td>
          <td>
            <a href="https://libvirt.org/git/?p=libvirt-publican.git;a=summary">libvirt</a>
          </td>
          <td>
            <a href="https://gitlab.com/libvirt/libvirt-publican">gitlab</a>
            <a href="https://github.com/libvirt/libvirt-publican">github</a>
          </td>
          <td></td>
        </tr>
        <tr>
          <td>App Development Guide</td>
          <td></td>
          <td>
            <a href="https://libvirt.org/git/?p=libvirt-appdev-guide.git;a=summary">libvirt</a>
          </td>
          <td>
            <a href="https://gitlab.com/libvirt/libvirt-appdev-guide">gitlab</a>
            <a href="https://github.com/libvirt/libvirt-appdev-guide">github</a>
          </td>
          <td></td>
        </tr>
        <tr>
          <td>App Development Guide Python</td>
          <td></td>
          <td>
            <a href="https://libvirt.org/git/?p=libvirt-appdev-guide-python.git;a=summary">libvirt</a>
          </td>
          <td>
            <a href="https://gitlab.com/libvirt/libvirt-appdev-guide-python">gitlab</a>
            <a href="https://github.com/libvirt/libvirt-appdev-guide-python">github</a>
          </td>
          <td></td>
        </tr>
        <tr>
          <td>virsh Command Reference</td>
          <td></td>
          <td>
            <a href="https://libvirt.org/git/?p=libvirt-virshcmdref.git;a=summary">libvirt</a>
          </td>
          <td>
            <a href="https://gitlab.com/libvirt/libvirt-virshcmdref">gitlab</a>
            <a href="https://github.com/libvirt/libvirt-virshcmdref">github</a>
          </td>
          <td></td>
        </tr>
      </tbody>
    </table>

    <h2>Primary download site</h2>

    <p>
      Most modules have releases made available for download on the project
      site via HTTPS. Some modules are instead made available at alternative
      locations, for example, the Perl binding is made available only on CPAN.
    </p>

    <ul>
      <li><a href="https://libvirt.org/sources/">libvirt.org HTTPS server</a></li>
    </ul>

    <h2><a id="schedule">Primary release schedule</a></h2>

    <p>
      The core libvirt module follows a time based plan, with releases made
      once a month on the 1st of each month give or take a few days. The only
      exception is at the start of the year where there are two 6 weeks gaps
      (first release in the middle of Jan, then skip the Feb release), giving
      a total of 11 releases a year. The Python and Perl modules will aim to
      release at the same time as the core libvirt module. Other modules have
      independent ad-hoc releases with no fixed time schedule.
    </p>

    <h2><a id="numbering">Release numbering</a></h2>

    <p>
      Since libvirt 2.0.0, a time based version numbering rule
      is applied to the core library releases. As such, the changes
      in version number have do not have any implications with respect
      to the scope of features or bugfixes included, the stability of
      the code, or the API / ABI compatibility (libvirt API / ABI is
      guaranteed stable forever). The rules applied for changing the
      libvirt version number are:
    </p>

    <dl>
      <dt><code>major</code></dt>
      <dd>incremented by 1 for the first release of the year (the
        Jan 15th release)</dd>
      <dt><code>minor</code></dt>
      <dd>reset to 0 with every major increment, otherwise incremented by 1
        for each monthly release from git master</dd>
      <dt><code>micro</code></dt>
      <dd>always 0 for releases from git master, incremented by 1
        for each stable maintenance release</dd>
    </dl>

    <p>
      Prior to 2.0.0, the major/minor numbers were incremented
      fairly arbitrarily, and maintenance releases appended a
      fourth digit. The language bindings will aim to use the
      same version number as the most recent core library API
      they support. The other modules have their own distinct
      release numbering sequence, though they generally aim
      to follow the above rules for incrementing major/minor/micro
      digits.
    </p>

    <h2><a id="maintenance">Maintenance releases</a></h2>
    <p>
      In the git repository are several stable maintenance branches
      for the core library, matching the
      pattern <code>v<i>major</i>.<i>minor</i>-maint</code>;
      these branches are forked off the corresponding
      <code>v<i>major</i>.<i>minor</i>.0</code> formal
      release, and may have further releases of the
      form <code>v<i>major</i>.<i>minor</i>.<i>micro</i></code>.
      These maintenance branches should only contain bug fixes, and no
      new features, backported from the master branch, and are
      supported as long as at least one downstream distribution
      expresses interest in a given branch.  These maintenance
      branches are considered during CVE analysis. In contrast
      to the primary releases which are made once a month, there
      is no formal schedule for the maintenance releases, which
      are made whenever there is a need to make available key
      bugfixes to downstream consumers. The language bindings
      and other modules generally do not provide stable branch
      releases.
    </p>

    <p>
      For more details about contents of maintenance releases, see
      <a href="http://wiki.libvirt.org/page/Maintenance_Releases">the
      wiki page</a>.
    </p>

    <h2><a id="git">GIT source repository</a></h2>

    <p>
      All modules maintained by the libvirt project have their primary
      source available in the <a href="https://libvirt.org/git/">project GIT server</a>.
      Each module can be cloned anonymously using:
    </p>

    <pre>
git clone https://libvirt.org/git/[module name].git</pre>

    <p>
      The <code>git://</code> protocol is also available if desired, but
      <code>https://</code> is encouraged, since it is more reliable when
      faced with strict firewalls.
    </p>

    <pre>
git clone git://libvirt.org/[module name].git</pre>

    <p>
      In addition to this primary repository, there are the following read-only git
      repositories which mirror the master one. Note that we currently do not
      use the full set of features on these mirrors (e.g. pull requests on
      GitHub, so please don't use them). All patch review and discussion only
      occurs on the <a href="contact.html">libvir-list</a> mailing list. Also
      note that some repositories listed below allow HTTP checkouts too.
    </p>

    <pre>
<a href="https://github.com/libvirt/">https://github.com/libvirt/</a>
<a href="https://gitlab.com/libvirt/libvirt">https://gitlab.com/libvirt/</a></pre>

  </body>
</html>
