aside:
- type: resource
items:
- - name: https://xenbits.xenproject.org/governance/communication-guide.html
- link: Communication Guide
- - name: https://xenbits.xenproject.org/governance/code-review-guide.html
- link: Code Review Guide
- - name: https://xenbits.xenproject.org/governance/communication-practice.html
- link: Communication Best Practice
- - name: https://xenbits.xenproject.org/governance/resolving-disagreement.html
- link: Resolving Disagreement
+ - name: Communication Guide
+ link: https://xenbits.xenproject.org/governance/communication-guide.html
+ - name: Code Review Guide
+ link: https://xenbits.xenproject.org/governance/code-review-guide.html
+ - name: Communication Best Practice
+ link: https://xenbits.xenproject.org/governance/communication-practice.html
+ - name: Resolving Disagreement
+ link: https://xenbits.xenproject.org/governance/resolving-disagreement.html
---
{{<section md="true" container="small content-markdown">}}
keywords: "Xen Project contribution guidelines, contributing to Xen Project, Xen Project patches, Xen Project code submission, Xen Project community, Xen Project development, Xen Project code of conduct, Xen Project patch submission, Xen Project developer guide, Xen Project contribution process, Xen Project coding standards, Xen Project patch review, Xen Project code security, Xen Project static analysis, Xen Project Coverity Scan"
date: 2024-01-14T07:07:07+01:00
draft: false
-layout: content-only
menus:
main:
parent: Contribute
weight: 50
---
-## Introduction
+
+{{<section md="true" class="content-markdown">}}
+### Introduction
We want to see people contributing to the Xen Project effort, and there are many ways to do so.
Our goal is to maintain an environment of professionalism, respect, and innovation within Xen Project development.
Please adhere to our [Code of Conduct](/contribute/code-of-conduct/) in the Xen Project community.
-## Contributing code
+### Contributing code
Contributions to the Xen Project are made through patches that are reviewed by the community. We do require contributors to sign contributions using the sign-off feature of the code repository, following the same approach as the Linux Kernel does (see [Developer Certificate Of Origin](http://elinux.org/Developer_Certificate_Of_Origin)).
You can also ask questions on the [xen-devel@lists.xenproject.org](mailto:xen-devel@lists.xenproject.org) mailing list or our [Matrix channels](/resources/matrix/).
-## Submitting patches to the Xen Project codebase
+### Submitting patches to the Xen Project codebase
Please first check the submission process for the Xen Sub-Project, and send an email to the proper mailing list with [PATCH] as the first word in the subject line. Each patch should perform a single function. Patches sent to the mailing lists should be broken up into several email messages of less than 100KB each, with only one patch per email.
For details about what to include in your patch, you should start with the [patch submission documentation](https://wiki.xenproject.org/wiki/Submitting_Xen_Project_Patches)).
-## Escalation
+### Escalation
If you submitted a patch to the xen-devel mailing list or bugzilla and did not receive a response within 5 business days, please send an email to xen-devel and in the first line of that email, include this phrase "Patch escalation: no response for x days".
This is one case where you should "top post" to make sure that the escalation text is read.
-## Code security scanning
+### Code security scanning
The Xen Project is registered with the ["Coverity Scan" service](https://scan.coverity.com/faq) which applies Coverity's static analyser to the Open Source projects. The tool can and does find flaws in the source code which can include security issues. Currently only the Xen Project Hypervisor (i.e. xen.git) is covered by these scans. Triaging and proposing solutions for the flaws found by Coverity is a useful way in which Community members can contribute to the Xen Project.
Members of the community may request access to the Coverity database. However, Coverity requires that you create an account and apply for Xen Project membership by searching for the Xen Project and then requesting to be added to the project. We typically will approve requests within a few days, but reserve rejecting requests from accounts who never engaged with the project (aka never posted to a mailing list) or which look like spam accounts.
-
+{{</section>}}
title="Contributing to Xen: an introduction"
media=`https://www.youtube.com/embed/F6TDJnYtcY8`
alt="Video of a presentation about Contributing to Xen on Youtube"
+ animate="true"
>}}
We've collated some information to help you get started, click here for resources.
{{</media-block>}}
{{</section>}}
-{{<section background="curve">}}
+{{<section class="section-square-primary">}}
{{<vertical-lists cols="2">}}
- title: "**Read** documentation"
text: >
{{<media-block
title="Access more resources"
media=`/img/flatline/java.svg`
- mediaPosition="right"
alt="Illustration of a laptop displaying code, with a cup of coffee and a notebook beside it, symbolizing a coding or development environment."
+ mediaPosition="right"
+ animate="true"
>}}
<p class="mg-t-md"><a href="https://www.youtube.com/channel/UCGukhVf8pWrUVdse6KR6SRw">Youtube channel<i class="fas fa-arrow-up-right-from-square"></i></a></p>
{{<media-block
title="Advised by Xen project **members**"
media=`{{<partial "blocks/logos-circle">}}`
+ animate="true"
>}}
The Xen Project Advisory Board is composed of experienced members who provide guidance and support to the project. Their expertise helps shape the direction and ensures the success of the Xen Project. By collaborating with the advisory board, we can address challenges and seize opportunities in the virtualization technology landscape.
{{<media-block
title="Become a member"
media="/img/flatline/team-meeting.svg"
- mediaPosition="right"
alt="Illustration of three people discussing around a table with documents, representing teamwork and collaboration."
+ mediaPosition="right"
+ animate="true"
>}}
By being an active Advisory Board participant, regular opportunities for discussions with technical leaders include the chance to share priorities and endorse new strategies. In return, members will gain valuable strategic insight into project plans and future scope.
<p class="mg-t-md">
{{<list-pages "projects">}}
{{</section>}}
-{{<section background="curve" class="txt-c">}}
+{{<section class="section-square-primary txt-c">}}
{{<md>}}
### Join the **conversation**
{{</md>}}
title="Lead by a <strong>dedicated community</strong>"
media="/img/flatline/team-work.svg"
alt="Illustration of a team working together on a project, with a shared vision and goal."
+ animate="true"
>}}
The Xen community is a dynamic and collaborative ecosystem comprised of developers, researchers, and enthusiasts dedicated to advancing open-source virtualization technology.
With diverse backgrounds and expertise, members actively contribute to Xen's evolution, fostering innovation, sharing knowledge, and supporting one another through continuous development efforts.
<p class="mg-t-md">
- <a href="/contribute/get-started/" class="btn btn-secondary">
+ <a href="/contribute/get-started/" class="btn btn-primary">
Get started <i class="fas fa-arrow-right"></i>
</a>
</p>
{{<media-block
title="About **Xen Project**</strong>"
media="/img/flatline/data-process.svg"
- mediaPosition="right"
alt="Illustration of a laptop displaying 3D bar charts, connected to cloud storage and file management icons, symbolizing data synchronization and integration."
+ mediaPosition="right"
+ animate="true"
>}}
The Xen community is a dynamic and collaborative ecosystem comprised of developers, researchers, and enthusiasts dedicated to advancing open-source virtualization technology.
With diverse backgrounds and expertise, members actively contribute to Xen's evolution, fostering innovation, sharing knowledge, and supporting one another through continuous development efforts.
media="/img/logos/arm-logo.svg"
imageSize="50%"
alt="ARM logo"
+ animate="true"
>}}
{{<md>}}
At the core of every modern embedded system is software meticulously crafted and seamlessly integrated with hardware, dedicated to fulfilling a specific, vital function. This is where our journey begins.
media="/img/flatline/data_and_settings.svg"
mediaPosition="right"
alt="Illustration of a database icon with gears and a wrench, representing data management and configuration tools."
+ animate="true"
+
>}}
{{<md>}}
- Xen revolutionizes embedded systems, enabling fully-featured operating systems like Linux to coexist with smaller and faster RTOSes such as Zephyr.
{{</media-block>}}
{{</section>}}
-{{<section background="normal">}}
+{{<section class="section-square-rounded">}}
{{<features-list cols="3">}}
- title: Real-Time and Cache Coloring
icon: fas fa-clock-rotate-left
{{<media-block
title="Why Xen Project?"
media=`{{<youtube id="uuBhqwbaObE" title="Xen Project's Progress Toward Safety Certification" >}}`
+ animate="true"
+
>}}
The Xen Project Hypervisor is uniquely placed to support a new range of use cases, building on top of 14 years of usage within the data center. In particular, its isolation and security features, flexible virtualization mode and architecture, driver disaggregation, and ARM support (only 47K lines of code) make it a perfect fit for embedded applications.
media="/img/others/xen-progress-certification.png"
mediaPosition="right"
alt="Slide titled 'Xen Project's Progress Toward Safety Certification' by Stefano Stabellini and team members from AMD and BUGSENG."
+ animate="true"
>}}
{{<md>}}
With sponsorships from the likes of AMD, we’re on a mission to align Xen with top safety standards, including ISO 26262 ASIL D and IEC 61508 SIL 3.
title="Functional safety"
media="/img/flatline/coding.svg"
alt="Illustration of a person typing code on a computer, symbolizing software development and programming."
+ animate="true"
>}}
{{<md>}}
title="What is HVMI?"
media="https://xenproject.org/wp-content/uploads/sites/79/2020/07/github-hvmi-v2_Kek0TiK6.compressed.mp4"
alt="Video of a presentation about HVMI"
+ animate="true"
>}}
HVMI stands for Hypervisor-based Memory Introspection. The technology leverages Virtual Machine Introspection (VMI) APIs in the Xen and KVM hypervisors. By gaining introspection of the raw memory of running guest virtual machines, HVMI can apply security logic to detect and prevent the use of common attack techniques, such as buffer overflows, heap spray, code injection, and so-on.
{{</media-block>}}
media="/img/flatline/laptop-cybersecurity.svg"
mediaPosition="right"
alt="Illustration of a laptop with a shield and check mark icon, representing cybersecurity and data protection."
+ animate="true"
>}}
A research and development team at Bitdefender extended the VMI APIs by working with the Xen Project and KVM Project communities. Bitdefender initially released a commercial solution known as GravityZone Hypervisor Introspection (HVI). The core components of HVI were open-sourced in mid-2020, forming the basis of the HVMI project.
title="License"
media="/img/flatline/coding2.svg"
alt="Illustration of hands typing code on a laptop with documents and a cup of coffee, symbolizing software development and workflow."
+ animate="true"
>}}
HVMI is licensed under Apache 2.0.
{{</media-block>}}
icon: fas fa-check
- name: Features (unstable)
link: https://xenbits.xen.org/docs/unstable/SUPPORT.html
- icon: fa-road
+ icon: fas fa-road
- title: Team Processes
items:
- name: Maintenance
link: http://wiki.xenproject.org/wiki/Xen_Maintenance_Releases
- icon: fa-wrench
+ icon: fas fa-wrench
- name: Security Process
- link: /about-xen/security-policy/
- icon: fa-key
+ link: /about/security-policy
+ icon: fas fa-key
- name: OpenPGP Keys
- link: /developers/openpgp-keys
- icon: fa-key
+ link: ./openpgp-keys
+ icon: fas fa-key
- title: Users
items:
- name: Downloads
- link: /xen-project-archives/
- icon: fa-cube
+ link: /resources/downloads/
+ icon: fas fa-cube
- name: Docs
link: https://wiki.xenproject.org/wiki/Main_Page#Xen_Started
- icon: fa-book
+ icon: fas fa-book
- name: xen-users@ mailing list
- link: /help/mailing-list#general
- icon: fa-envelope
+ link: /resources/mailing-lists/#xen-project-hypervisor
+ icon: fas fa-envelope
- name: "IRC: #xen"
- link: /help/irc/
- icon: fa-comments-o
+ link: /resources/mailing-lists/#xen-project-hypervisor
+ icon: fas fa-comments-o
- name: Report a Bug
link: http://wiki.xenproject.org/wiki/Reporting_Bugs_against_Xen
- icon: fa-bug
+ icon: fas fa-bug
- name: Xen Project Test Days
link: http://wiki.xenproject.org/wiki/Xen_Test_Days
- icon: fa-calendar-check-o
+ icon: fas fa-calendar-check-o
- name: Security Announcements
link: https://xenbits.xen.org/xsa/
- icon: fa-bullhorn
+ icon: fas fa-bullhorn
- title: Developers
items:
- name: xen-devel@ mailing list
- link: /help/mailing-list#devel
- icon: fa-envelope
+ link: /resources/mailing-lists/#xen-project-hypervisor
+ icon: fas fa-envelope
- name: "IRC: #xendevel"
link: /help/irc/
- icon: fa-comments-o
+ icon: fas fa-comments-o
- name: Browse Xen.git
link: http://xenbits.xenproject.org/gitweb/?p=xen.git;a=summary
- icon: fa-code-fork
+ icon: fas fa-code-fork
- name: Repositories and Branches
link: http://wiki.xenproject.org/wiki/Xen_Repositories
- icon: fa-git
+ icon: fas fa-git
- name: Submitting Patches
link: http://wiki.xenproject.org/wiki/Submitting_Xen_Patches
- icon: fa-medkit
+ icon: fas fa-medkit
- name: Docs (API and Test)
link: /help/documentation/#xen
- icon: fa-book
+ icon: fas fa-book
- name: Wiki Dev Home
link: http://wiki.xenproject.org/wiki/XenDevHome
- icon: fa-globe
+ icon: fas fa-globe
- name: Projects for Newbies
link: https://wiki.xenproject.org/wiki/Outreach_Program_Projects
- icon: fa-cube
+ icon: fas fa-cube
- title: Project Team
items:
- name: "Release Manager: Henry Wang"
- icon: fa-briefcase
+ icon: fas fa-briefcase
- name: Andy Cooper
- icon: fa-star
+ icon: fas fa-star
- name: George Dunlap
icon: fa-star
- name: Jan Beulich
- icon: fa-star
+ icon: fas fa-star
- name: Julien Grall
- icon: fa-star
+ icon: fas fa-star
- name: Stefano Stabellini
- icon: fa-star
+ icon: fas fa-star
- name: Wei Liu
- icon: fa-star
+ icon: fas fa-star
- name: Maintainers
link: http://xenbits.xenproject.org/gitweb/?p=xen.git;a=blob;f=MAINTAINERS;hb=HEAD
icon: fa-wrench
- title: Committer Emeritus
items:
- name: Keir Fraser
- icon: fa-star
+ icon: fas fa-star
- name: Ian Campbell
- icon: fa-star
+ icon: fas fa-star
- name: Tim Deegan
icon: fa-star
- name: Ian Jackson
- icon: fa-star
+ icon: fas fa-star
- name: Konrad R Wilk
- icon: fa-star
+ icon: fas fa-star
---
{{</section>}}
-{{<section class="background-normal" >}}
+{{<section class="section-square-rounded">}}
{{<features-list cols="2">}}
- title: Small footprint and interface
icon: fas fa-memory
--- /dev/null
+---
+title: OpenPGP Keys
+description: OpenPGP Keys for the Xen Project
+keywords: "Xen Project, OpenPGP, PGP keys, security, cryptographic keys"
+draft: false
+---
+
+{{<section md="true">}}
+# The Hypervisor Team’s OpenPGP Keys
+
+The Hypervisor team uses OpenPGP when necessary to provide essential confidentiality and integrity. Our current set of in-use, published, keys are these:
+
+## Xen Project tree code signing and announcements
+
+We use this key to sign git tags on xen.git and qemu-xen-*.git, whenever we make a Xen Project release.
+
+We also use it to sign Xen Project security advisories from the security team.
+
+```text
+pub 2048R/57E82BD9 2010-04-06
+ Key fingerprint = 23E3 222C 145F 4475 FA80 60A7 83FE 14C9 57E8 2BD9
+uid Xen.org Xen tree code signing (signatures on the
+ xen hypervisor and tools) <pgp@xen.org>
+```
+
+## Security team incoming email
+
+If you need to send encrypted email to the Xen Project security team, please use this key. We prefer that routine communications not be encrypted.
+
+```text
+pub 2048R/82D3A964 2012-05-02
+ Key fingerprint = F1F9 380F 6287 0056 A186 2CC0 743A 3FCA 82D3 A964
+uid Xen.org (incoming email) <security@xen.org>
+```
+
+```text
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.12 (GNU/Linux)
+mQENBE+hNqgBCADYua5OFR0/Jeu0rByk+Obk6+SewIeGej1FAcjo+Cvpcr1dfnLB
+AhmmhbfMb++qr6SG6Ek+cUQogYAFvZcEcusbRPy4MIzJkqoPSyOUhCxZoxWNWUfh
+Ddt0TWA3Hs1vYmFOe+2jvlL3h7yAsGMYO8jo6ow8ceBEOmf8Q5BLq2OPkNpGcaHE
+hbSv0VZ3mdHM30ynY6GubIwsc68LZ5hTORTSjKaj2WVCe4OorBMZte5Im+6MOEUb
+CjynqPJSU9KNFhIhUuyXp1vn0gZ2N5QSpkghpzBJLzeBNEI6ecV3Q0p+/pq8EvEA
+uUSNLUEbIZ/NSLqyTVMc9HZxnPu59im8wB9rABEBAAG0K1hlbi5vcmcgKGluY29t
+aW5nIGVtYWlsKSA8c2VjdXJpdHlAeGVuLm9yZz6JATgEEwECACIFAk+hNqgCGwMG
+CwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEHQ6P8qC06lk1y0H/2PjjQyPDZVS
+4zIVnR4xQOQ1KphPCdSTPlhj+VVrjZZNXWGCUKvJShL84XIONH62fIgQE/6CTWXJ
+tx6i4u1oAtFH4+8HayFjg609lxx9frJ4tJkJitw5TT6VEGAambchIG5QaP9hepgy
+rVXjQ0X2ot0jgpwL6G3sx0L1gewiMALXtGT6oTqLjXius/nv69yRe26wxU1GX80o
+WWH/5p585xt54C1XnhDEVzp0S9UW7VAAVDCWuSefSrihh3jZi4QE1fnGRwO0RfeL
+h1sXeuMn9uFIz0CmaCbAp5PeUyNb6wgG60h4JLCDyhJntoHfq8pQLEJ8G9nvjDfw
+8BLvkBKYNvaIRgQQEQIABgUCUVv1xQAKCRCR4BLxp7SsZHgRAJ0XZO6Ids87Wp7q
+djuti9yoTByh1gCgjzZL+llMzUAvTHPUvnY054utm365AQ0ET6E2qAEIALqWNlGF
+d3uIj+DXZ40/i7fsoPb+HaYaG6Y+7+ZWxMxUeQDTLBnTYiAa+EGVutc4v52BXH8R
+Zc9I/NH9lBT2/AwaEVSomxLicbixXUGoFC9kMp/VP1xwWJ+gm+ZEnQzY+2AFJGMv
+qEsGocQA7yLw121JUOrorny3CqpHykPUF3fqp4n/GL47VTaKxlsoV8o2JgZZ62NJ
+lkBtnbA4ODzhWr6cA21smWFgsfFJ+EkXb1NEeYLs8CWtTn2EiQXlZTQ8OgBPahfv
+LZ+AJ4sM/Raoi2c3UIQrlCsg9BoojKMkLi8XUrywr8HEJYjhBYObCgbmaeIEfmrw
+5XJqOKlMg40XY+MAEQEAAYkBHwQYAQIACQUCT6E2qAIbDAAKCRB0Oj/KgtOpZDhJ
+B/0XtxrlVuRttpjK1PEYK/A/9h47VH9p0UvVYCH+ZS2a+sTgsapx0zp4uni8wtyt
+kvGw/EM06D4ZoaWAUcjXILNKGdi62q/z+WAfdEY/WrONxAbr2Dtv/LT00/2nifYU
+9O1vGYS1Kx/B3D8fU0w+2Sjv+hYjbGDWn619etC8dNEIxczH6V/cVOZf0D2KhoBf
+MCHUoKeuAfaIKDMxOZjb7sajfUW70cxFFWYqH96Py01oxDroOKzy0x62iVdsYFGB
+3FvcD9tDWsxVWwGHA8DKEfKMuNPiuapzdxdrNm5AQilSUlfD65KK9d3kQdoOUPdP
+WoIQnz8GnHMPDe997SuwxWGb
+=Ne4C
+-----END PGP PUBLIC KEY BLOCK-----
+```
+
+{{</section>}}
\ No newline at end of file
title="About us"
media="/img/flatline/data_and_settings.svg"
alt="Illustration of a database icon with gears and a wrench, representing data management and configuration tools."
+ animate="true"
>}}
MirageOS is a library operating system that constructs unikernels for secure, high-performance, low-energy footprint applications across various hypervisor and embedded platforms. It is available as an open-source project created and maintained by the MirageOS Core Team. A unikernel can be customised based on the target architecture by picking the relevant MirageOS libraries and compiling them into a standalone operating system, strictly containing the functionality necessary for the target. This minimises the unikernel’s footprint, increasing the security of the deployed operating system.
{{</media-block>}}
{{</section>}}
-{{<section class="background-normal" >}}
+{{<section class="section-square-rounded" >}}
{{<features-list cols="2">}}
- title: Fast Start
icon: fas fa-power-off
media="/img/flatline/coding.svg"
mediaPosition="right"
alt="Illustration of a person typing code on a computer, symbolizing software development and programming."
+ animate="true"
>}}
Mirage OS follows a standard Github workflow and has its own Developer Portal. All developer-related information such as documentation, development team members, and other information related to the development of Mirage OS can be found there as well.
{{</media-block>}}
title="License"
media="/img/flatline/coding2.svg"
alt="Illustration of hands typing code on a laptop with documents and a cup of coffee, symbolizing software development and workflow."
+ animate="true"
>}}
{{<md>}}
The Mirage codebase is released under the ISC license, with some portions of code released under LGPLv2.
title="Basic concepts"
media="https://www.slideshare.net/slideshow/embed_code/key/hzJl1EbWmxfFUN"
alt="Slide for Unikraft's basic concepts on slideshare.net"
+ animate="true"
>}}
The high-level goal of Unikraft is to be able to build unikernels targeted at specific applications without requiring the time-consuming, expert work that building such a unikernel requires today. An additional goal (or hope) of Unikraft is that all developers interested in unikernel development would contribute by supplying libraries rather than working on independent projects with different code bases as it is done now.
{{</media-block>}}
media="/img/others/unikraft-architecture.png"
mediaPosition="right"
alt="Diagram showing the process of selecting applications, configuring libraries, building, and running unikernel binaries with various components like network stack, filesystem, schedulers, and memory allocators."
+ animate="true"
>}}
{{<md>}}
The main idea behind Unikraft is depicted in Figure 1 and consists of two basic components:
title="License"
media="/img/flatline/coding2.svg"
alt="Illustration of hands typing code on a laptop with documents and a cup of coffee, symbolizing software development and workflow."
+ animate="true"
>}}
{{<md>}}
The main license of the run-time components of Unikraft is a 3-clause BSD license unless there is a good reason not to use it (e.g. we may import 2-clause BSD licensed code from Mini-OS, which we would not anticipate to change). The Makefile system would be licensed under GPL v2 or later as we want to be able to use KConfig functionality from Buildroot/Linux.
title="About Windows PV Drivers"
media=`{{<youtube id="3R_IxOlP548" title="Xen Project's Progress Toward Safety Certification" >}}`
alt="Video of a presentation about Windows PV Drivers on Youtube"
+ animate="true"
>}}
{{<md>}}
Paravirtualization aware (PV) device drivers are an important part of HVM guests running under the Xen Project Hypervisor.
title="License"
media="/img/flatline/coding2.svg"
alt="Illustration of hands typing code on a laptop with documents and a cup of coffee, symbolizing software development and workflow."
+ animate="true"
>}}
{{<md>}}
The drivers are available under a [simplified 2-clause BSD license](https://en.wikipedia.org/wiki/BSD_licenses#2-clause_license_.28.22Simplified_BSD_License.22_or_.22FreeBSD_License.22.29). The code can be found in the following repositories on [xenbits.xen.org](https://xenbits.xen.org/gitweb/) in the [pvdrivers/win](https://xenbits.xen.org/gitweb/?a=project_list;pf=pvdrivers/win) folder.
- type: resource
items:
- name: "**Github project**"
- url: "https://github.com/xapi-project/xapi"
+ link: "https://github.com/xapi-project/xapi"
- name: Documentation
- url: "http://xapi-project.github.io/"
+ link: "http://xapi-project.github.io/"
- name: Contribute
- url: "https://github.com/xapi-project/xen-api/blob/master/README.markdown"
+ link: "https://github.com/xapi-project/xen-api/blob/master/README.markdown"
- name: Report a Bug
- url: "https://github.com/xapi-project/xen-api/issues"
+ link: "https://github.com/xapi-project/xen-api/issues"
keywords: "XAPI, xen API, virtualization management, xen toolstack, virtual machine management, cloud orchestration, virtualization tools, resource management, VM lifecycle management, infrastructure management"
---
title="Enterprise-ready tools"
media="/img/flatline/data_and_settings.svg"
alt="Illustration of a database icon with gears and a wrench, representing data management and configuration tools."
+ animate="true"
>}}
The XAPI project is an enterprise ready toolstack for use with the Xen Project hypervisor. When used with Xen, the XAPI toolstack consolidates server workloads, enables savings in power, cooling, and management costs (contributing to environmentally sustainable computing), increases the ability to adapt to ever-changing IT environments, optimizes the use of existing hardware, and improves the level of IT reliability.
The XAPI team also develops tooling, agents and libraries that are needed to operate a XAPI-based system.
media="/img/flatline/coding2.svg"
mediaPosition="right"
alt="Illustration of hands typing code on a laptop with documents and a cup of coffee, symbolizing software development and workflow."
+ animate="true"
>}}
{{<md>}}
XAPI is licensed under the [Lesser GNU General Public License (LGPL2)](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html).
url: "https://github.com/xcp-ng"
- name: Dev Docs
url: "https://github.com/xcp-ng/xcp/wiki#development"
- - name: Project Team
+ - name: Team
type: members-list
items:
- name: Project Lead
title="Turnkey **open-source hypervisor**"
media="/img/others/xcp-ng-badge.webp"
alt="Logo of XCP-ng : Illustration of a red rocket ship blasting off into space with a circular background, symbolizing innovation and progress."
-
+ animate="true"
>}}
{{<md>}}
XCP-ng enables an easy way to deploy a VM based infrastructure using Xen as the hypervisor and XAPI to deliver an out of the box, turnkey, solution. XCP-ng satisfies the needs of any sized organization from their thriving community of homelabbers to massive data centers. **XCP-ng is built to run in numerous configurations for any type of production environment.**
media="/img/flatline/timeline.svg"
mediaPosition="right"
alt="Illustration of a timeline with milestones for the years 2012, 2018, 2020, and 2024, representing project progress and development."
+ animate="true"
>}}
{{<md>}}
In 2018 XCP-ng was born, following Citrix System’s announcement to remove features from their free version and place them behind paid tiers. XCP-ng was launched with the intentions of revitalizing the original goals of the XCP project, to **provide free and community back version of XenServer.**
{{</section>}}
-{{<section class="background-normal" >}}
+{{<section class="section-square-rounded" >}}
{{<features-list cols="2">}}
- title: Scalable
icon: fas fa-expand
title="How to **get started?**"
media="/img/flatline/start-up.svg"
alt="Illustration of a green rocket launching from a laptop screen, symbolizing a startup or new project launch."
-
+ animate="true"
>}}
{{<md>}}
There are many ways to get started with XCP-ng. There are a number of **video training tutorials** on our youtube channel, **step-by-step written instructions** in our documentation, and a training course for XCP-ng is coming soon.
media="/img/flatline/coding.svg"
mediaPosition="right"
alt="Illustration of a person typing code on a computer, symbolizing software development and programming."
+ animate="true"
>}}
{{<md>}}
The XCP-ng platform benefits from **15 dedicated employees** and the assistance of contributors like yourself. Within our documentation, you can find more detailed information about our development process, **how you can be involved in future** updates and testing of the platform.
media="/img/flatline/data-process.svg"
mediaPosition="right"
alt="Illustration of a laptop displaying 3D bar charts, connected to cloud and file management icons, representing data integration and synchronization."
+ animate="true"
>}}
Qubes OS is a security-focused operating system based on Xen. The goal of Qubes OS is to create a reasonably secure environment that is also practical and usable, capable of playing the role of a daily driver rather than a highly situational solution - and Xen is a major reason why we can confidently say that Qubes OS succeeds.
<p class="mg-t-md">
title="Xen Server case study"
media="/img/flatline/data-process.svg"
alt="Illustration of a laptop displaying 3D bar charts, connected to cloud and file management icons, representing data integration and synchronization."
+ animate="true"
>}}
Xen Server, powered by the Xen Project hypervisor, offers a robust virtualization platform for enterprise environments. It enables efficient resource utilization, simplified management, and enhanced security for organizations of all sizes. With features like live migration and dynamic memory allocation, Xen Server optimizes datacenter operations and reduces downtime.
{{</media-block>}}
mediaPosition="right"
media="/img/flatline/data-hosting.svg"
alt="Illustration of servers surrounded by cloud icons with upload and download arrows, representing cloud computing and data storage."
+ animate="true"
>}}
Amazon Web Services (AWS) leverages the Xen Project hypervisor to power its Elastic Compute Cloud (EC2) service. This implementation demonstrates the scalability and reliability of Xen in large-scale cloud environments. AWS's success with Xen has revolutionized cloud computing, offering flexible and cost-effective solutions for businesses worldwide.
{{</media-block>}}
title="Security"
media="/img/flatline/data-process.svg"
alt="Illustration of a laptop displaying 3D bar charts, connected to cloud and file management icons, representing data integration and synchronization."
+ animate="true"
>}}
The Xen Project hypervisor prioritizes security through its unique architecture and ongoing development efforts. Its small codebase and isolation features minimize the attack surface, while regular security updates address emerging threats. Xen's security-first approach makes it an ideal choice for organizations with stringent data protection requirements.
<p class="mg-t-md">
media="/img/flatline/data_and_settings.svg"
mediaPosition="right"
alt="Illustration of a database icon with gears and a wrench, representing data management and configuration tools."
+ animate="true"
>}}
Xen Project's virtualization technology is increasingly adopted in embedded systems and automotive applications. It enables the consolidation of multiple systems onto a single hardware platform, reducing costs and complexity. In automotive, Xen supports the development of advanced infotainment systems and autonomous driving technologies while ensuring critical safety features remain isolated.
{{</section>}}
-{{<section md="true" background="curve-reverse" container="small">}}
+{{<section md="true" class="section-square-primary">}}
## Did you know?
There are several virtualization technologies available in the world today. Our Xen Project virtualization and cloud software includes many powerful features that make it an excellent choice for many organizations.
{{<section container="full">}}
-{{<center class="mg-t-lg">}}
- ### Projects
-{{</center>}}
{{<carousel class="mg-t-lg">}}
{{<getpages "projects">}}
{{</carousel>}}
<p class="mg-t-xl txt-c">
- <a href="/projects/all-projects" class="btn btn-secondary">Discover all projects <i class="fas fa-arrow-right"></i></a>
+ <a href="/projects/all-projects" class="btn btn-primary">Discover all projects <i class="fas fa-arrow-right"></i></a>
</p>
{{</section>}}
"nav",
"ol",
"p",
+ "pgp@xen.org",
"pre",
"script",
"section",
+ "security@xen.org",
"source",
"span",
"strong",
"container",
"container-full",
"container-small",
+ "container-square-primary",
+ "container-square-rounded",
"content",
"content-markdown",
"conversation-card",
"footer__menu",
"footer__text",
"full-width-image",
+ "has-aside",
"header",
"header-content",
+ "header-inner",
"header-logo",
"header-nav",
"hero-block",
+ "highlight",
"home-hero-animated",
"home-section-hero",
"image-ratio-large",
"list-no-style",
"list-pages",
"main",
+ "mainhas-aside",
"media-block",
"media-block--left",
"media-block--mobile-bottom",
"scope-of-this-process",
"security-response-team-members",
"security-response-team-short-security-team",
+ "security-team-incoming-email",
"specific-process",
"sponsor",
"sub-projects-and-teams",
"submitting-patches-to-the-xen-project-codebase",
"supports-multiple-cloud-platforms-cloudstack-openstack",
"supports-multiple-guest-operating-systems-linux-windows-netbsd-freebsd",
+ "the-hypervisor-teams-openpgp-keys",
"the-linux-foundation",
"trademark-policy",
"transparency",
"xen-project-advisory-board",
"xen-project-hypervisor",
"xen-project-matrix",
+ "xen-project-tree-code-signing-and-announcements",
"xen-project-wide-roles"
]
}
.box-members {
+ background-color: #fff;
+ border-radius: 16px;
+ padding: var(--sp-md);
ul {
list-style: none;
padding: 0;
.box-resources {
- background-color: var(--color-brand-surface);
+ background-color: #fff;
+ border-radius: 16px;
padding: var(--sp-md);
.box-resources__title {
--translate: -100%;
--size: calc(var(--circle-dimensions) + (var(--padding) * 2));
- --bg-color: var(--color-surface);
+ --bg-color: var(--color-surface-secondary);
--index: 0;
--total: 1;
--start-angle: 0deg;
--nav-margin-left: 0;
--header-height: 84px;
--header-font-size: 16px;
+ padding: var(--header-padding);
@include desktop {
--gap: 40px;
--header-padding: 12px 40px;
}
- flex-direction: row;
- gap: var(--gap);
- height: var(--header-height);
- justify-content: space-between;
- padding: var(--header-padding);
- z-index: 10;
- font-size: var(--header-font-size);
+ .header-inner {
+ flex-direction: row;
+ gap: var(--gap);
+ height: var(--header-height);
+ justify-content: space-between;
+ z-index: 10;
+ font-size: var(--header-font-size);
+ }
&-content {
display: flex;
.header {
--header-height: 52px;
- display: flex;
- flex-direction: row-reverse;
- justify-content: space-between;
- align-items: center;
background: var(--header-color-background);
- border-bottom: 1px solid var(--header-color-border);
- position: relative;
+ border-bottom: none;
padding: var(--sp-xs) var(--sp-sm);
- height: var(--header-height);
+
+ .header-inner {
+ display: flex;
+ flex-direction: row-reverse;
+ justify-content: space-between;
+ align-items: center;
+ position: relative;
+ height: var(--header-height);
+ max-width: var(--container-width);
+ margin: 0 auto;
+ }
}
.header-logo {
.page-aside {
- padding: var(--sp-lg);
+ padding: 0 var(--sp-lg) var(--sp-lg);
+
display: flex;
flex-direction: column;
gap: var(--sp-lg);
-.page-single-aside {
- flex-direction: column;
- display: flex;
- gap: 0;
- justify-content: stretch;
- align-items: flex-start;
+// .page-single-aside {
+// flex-direction: column;
+// display: flex;
+// gap: 0;
+// justify-content: stretch;
+// align-items: flex-start;
- .page-aside {
- flex: 0 0 auto;
- padding: var(--sp-lg);
- }
+// .page-aside {
+// flex: 0 0 auto;
+// padding: var(--sp-lg);
+// }
- .page-content {
- flex: 1;
- }
+// .page-content {
+// flex: 1;
+// }
- @include tablet {
- flex-direction: row;
+// @include tablet {
+// flex-direction: row;
- .page-aside {
- flex: 0 0 320px;
- padding: var(--sp-lg) var(--sp-lg) var(--sp-xl);
- }
- }
-}
+// .page-aside {
+// flex: 0 0 320px;
+// padding: var(--sp-lg) var(--sp-lg) var(--sp-xl);
+// }
+// }
+// }
.btn {
- --border-radius: 0.125rem;
+ --border-radius: 0.4em;
--border-size: 0.125rem;
--color-active: var(--color-action-fill-pressed);
--color-disabled: var(--color-border);
&-secondary,
&-tertiary {
- background-color: var(--color-surface);
+ background-color: var(--color-surface-secondary);
color: var(--color-primary);
}
@include desktop {
--features-columns-count: 3;
}
+
+ .features-list--cols-2 {
+ --features-columns-count: 2;
+ }
+
+ .features-list--cols-3 {
+ --features-columns-count: 3;
+ }
+
+ .features-list--cols-4 {
+ --features-columns-count: 4;
+ }
}
// Mixins
--li-width: calc(100% / var(--features-columns-count) - var(--gap));
margin: 0;
flex: 1 1 var(--li-width);
+ min-width: 300px;
}
//
--padding-v: 20px;
--media-h-padding: 6.9vw;
--media-v-padding: 0;
+ --animation-delay: 0.1s;
display: flex;
flex-wrap: nowrap;
&--right.animate .media-block__media {
animation: slideFromRight 0.8s ease-out forwards;
- animation-delay: 0.3s;
+ animation-delay: var(--animation-delay);
}
&--left.animate .media-block__media {
animation: slideFromLeft 0.8s ease-out forwards;
- animation-delay: 0.3s;
+ animation-delay: var(--animation-delay);
}
&[data-animate] .media-block__media {
flex-grow: 1;
border: none;
background: transparent;
- padding: 10px;
+ padding: 0 24px;
+ line-height: 2;
+ height: 3em;
+ font-size: 1rem;
&::placeholder {
color: var(--color-text-secondary);
border: none;
padding: 8px 12px;
cursor: pointer;
+ margin-right: 8px;
+ font-size: 1.1em;
}
}
.search-results ul {
flex: 1;
--border-left: 2px solid var(--color-brand-fill);
padding-left: var(--sp-sm-md);
- border-left: var(--border-left);
+ //border-left: var(--border-left);
ul,
li {
.main {
- // break margin
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ justify-content: stretch;
+ align-items: stretch;
+ padding-top: 80px;
+
+ &.has-aside {
+ max-width: 1920px;
+ margin-left: auto;
+ margin-right: auto;
+ }
+
&::before,
&::after {
content: "";
display: table;
}
- padding: 0 var(--content-padding-horizontal);
-}
-@include tablet {
.page-aside {
- width: 420px;
- }
-}
+ min-width: 400px;
+ flex: 0 0 400px;
-.page-single {
- @include tablet {
- > .article {
- padding-top: var(--sp-xl);
+ @media (max-width: 900px) {
+ min-width: 100%;
+ flex: 1 0 100%;
}
}
- &.with-aside {
- display: flex;
- flex-direction: column;
- gap: var(--sp-lg);
- margin-left: auto;
- margin-right: auto;
- max-width: 1920px;
-
- @include tablet {
- flex-direction: row;
- gap: 0;
-
- > .article,
- > .page-aside {
- padding-top: var(--sp-xl);
- }
-
- > .article h1 {
- margin-top: 0;
- }
- }
- }
-
- @include tablet {
- .single-content {
- margin-top: var(--sp-lg);
- .section-space:first-child {
- margin-top: 0;
- }
- }
+ .article {
+ flex: 1;
+ padding: 0 var(--content-padding-horizontal);
+ width: 100%;
}
}
@include tablet {
--container-paddings: var(--sp-lg);
- --section-space: 160px;
+ --section-space: 100px;
--block-space: 160px;
--h1-font-size: 2.5rem; /* 40px */
--h2-font-size: 2.25rem; /* 36px */
const init = (element) => {
const searchInput = element.querySelector(".search-input");
resultsContainer = element.querySelector(".search-results");
+ element.querySelector("form").addEventListener("submit", (e) => {
+ e.preventDefault();
+ });
// Load data immediately
loadDownloadsData();
}, 300);
searchInput.addEventListener("input", debouncedSearch);
-
- searchInput.value = "xen sss";
- searchInput.dispatchEvent(new Event("input"));
};
init(element);
};
</head>
<body class="{{ block "bodyClass" . }}{{ end }} {{ .Params.bodyClass }}">
{{ partial "header.html" . }}
- <main class="main">
+ <main class="main{{ if .Page.Params.aside }} has-aside{{ end }}">
{{ block "main" . }}{{ end }}
</main>
{{ partial "footer.html" . }}
-{{define "main"}}
- {{.Content}}
-{{end}}
+{{ define "main" }}
+ <article class="article">
+ {{ .Content }}
+ </article>
+{{ end }}
{{ if .Page.Params.aside }}
{{ $class = "with-aside " | add $class }}
{{ end }}
- <div class="{{ $class }}">
- {{ $asidePosition := .Page.Params.asidePosition | default "before" }}
- {{ if eq $asidePosition "before" }}
- {{ partial "aside.html" . }}
- {{ end }}
- <article class="article">
- <div class="container page-top">
- <h1>{{ .Title }}</h1>
- <div class="description">
- {{ .Description }}
- </div>
- </div>
- <div class="single-content">
- {{ .Content }}
+ {{ $asidePosition := .Page.Params.asidePosition | default "before" }}
+ {{ if eq $asidePosition "before" }}
+ {{ partial "aside.html" . }}
+ {{ end }}
+ <article class="article">
+ <div class="container page-top">
+ <h1>{{ .Title }}</h1>
+ <div class="description">
+ {{ .Description }}
</div>
- {{ partial "terms.html" (dict "taxonomy" "tags" "page" .) }}
- </article>
- {{ if eq $asidePosition "after" }}
- {{ partial "aside.html" . }}
- {{ end }}
- </div>
+ </div>
+
+ <div class="single-content">
+ {{ .Content }}
+ </div>
+ {{ partial "terms.html" (dict "taxonomy" "tags" "page" .) }}
+ </article>
+ {{ if eq $asidePosition "after" }}
+ {{ partial "aside.html" . }}
+ {{ end }}
+
{{ end }}
+{{ $defaultIcon := "fa-arrow-up-right-from-square" }}
+{{ $defaultLinkText := "Join" }}
+
+
<div class="card {{ .class }}">
<h3 class="card__label">{{ .title | safeHTML }}</h3>
<div class="card__content">{{ .description | safeHTML }}</div>
<div class="card__actions">
<a href="{{ .link }}" class="join-button">
- {{ .linkText | default "Join" }} <i class="fas fa-arrow-up-right-from-square"></i>
+ {{ .linkText | default $defaultLinkText }} <i class="fas {{ .linkIcon | default $defaultIcon }}"></i>
</a>
{{ if .secondaryLink }}
- <a href="{{ .secondaryLink }}" class="join-button">
- {{ .secondaryLinkText | default "Join" }} <i class="fas fa-arrow-up-right-from-square"></i>
+ <a href="{{ .secondaryLink }}" class="btn btn-tertiary join-button">
+ {{ .secondaryLinkText | default $defaultLinkText }}
+ <i class="fas {{ .secondaryLinkIcon | default $defaultIcon }}"></i>
</a>
{{ end }}
</div>
<header class="header">
- <div class="header-logo">
- <a href="/">
- <img src="/img/logo-xen-reverse.svg" alt="Xen-Project" />
- </a>
- </div>
- <button class="menu-toggle btn btn-tertiary" title="Toggle menu"></button>
- <div class="header-content" data-menu-title="Menu">
- {{ partial "menu.html" (dict "menuID" "main" "page" .) }}
- {{ partial "socials.html" }}
+ <div class="header-inner">
+ <div class="header-logo">
+ <a href="/">
+ <img src="/img/logo-xen-reverse.svg" alt="Xen-Project" />
+ </a>
+ </div>
+ <button class="menu-toggle btn btn-tertiary" title="Toggle menu"></button>
+ <div class="header-content" data-menu-title="Menu">
+ {{ partial "menu.html" (dict "menuID" "main" "page" .) }}
+ {{ partial "socials.html" }}
+ </div>
</div>
</header>
<li>
- <a href="{{ .link }}" target="_blank">
- {{ .name }}
- {{ if .icon }}
- <i class="{{ .icon }}"></i>
- {{ else }}
- <i class="fas fa-arrow-up-right-from-square"></i>
- {{ end }}
- </a>
+ {{ if .link }}
+ <a href="{{ .link }}" {{ if and (not (hasPrefix .link "/")) (not (hasPrefix .link "./")) }}target="_blank"{{ end }}>
+ {{ .name | markdownify }}
+ {{ if .icon }}
+ <i class="{{ .icon }}"></i>
+ {{ else }}
+ <i class="fas fa-arrow-up-right-from-square"></i>
+ {{ end }}
+ </a>
+ {{ else }}
+ <span>
+ {{ .name | markdownify }}
+ {{ if .icon }}
+ <i class="{{ .icon }}"></i>
+ {{ end }}
+ </span>
+ {{ end }}
</li>
<div class="list-pages">
{{ range $projects }}
- {{ partial "project-card.html" (dict
+ {{ partial "card.html" (dict
"title" .Title
"description" .Description
"link" .Permalink
"linkText" "Discover"
- "class" "project-card"
+ "linkIcon" "fas fa-arrow-right"
+ "class" ""
)
}}
{{ end }}