Internships/Hypervisor

== Hardware Requirements ==
For hypervisor development, it is important to check that you have the correct hardware. In the best case scenario, you have a spare laptop or PC, that you can wipe and use as test and deployment environment. Another option would be to partition your system and use one as a test and development environment and the rest as your development environment. Please do check with your mentor before you do anything though and make sure that you have the right skills (you don't want to accidentally delete any of your data).
If you have a Linux laptop or PC that has Linux already installed on it (e.g. Ubuntu), you could also use Nested_Virtualization_in_Xen as a test and deployment environment. In this case, you would just install Xen packages on your machine and create VM's that you can use for testing and debugging. However, this may not work for all projects: so make sure you discuss with your mentor beforehand (make sure you CC the list). 
If not, we can see whether there is a way to resolve the hardware problem. We have been able to do this in the past, but whether this is feasible depends on many factors.
=== Checking Hardware Requirements ===
Some projects may require specific hardware features. You can use tools such as cpuid, the /proc/cpuinfo file and others to check hardware capabilities. This excellent article gives you a great overview over what tools are available, with very specific instructions. 
If in doubt, check with prospective mentor (make sure you CC the list) and see whether what you have is sufficient for the projects you are interested in.
== Compile, Run and providing Logs ==
I simple test to check whether you can easily get started with Hypervisor Development is to make a tarball of a specific version of Xen, maybe with some additional debug information added (or a BUG() command added), deploy it, run it and check the logs. This will give you a good sense of whether you can master the basic tasks to get easily going with a Hypervisor project. Please raise this with your mentor and work out a specific set of tasks that may be helpful for your project. For Outreachy Hypervisor (and other lower level) projects, we may require this as a Make a Small Code Contribution Requirement, while we strongly recommend this for GSoC applicants.
This will show that you can
# Compile, deploy and boot Xen
# Have a way to get the serial logs
# Be able to search through the code for the string in question to prove that you have done the right thing
Also see:
* Compiling_Xen#Compiling_Xen_from_the_source_repo and/or Raisin
* Xen_Serial_Console
== Getting a small contribution task ==
Outreachy requires to Make a Small Code Contribution as a requirement. GSoC doesn't, but we recommend that GSoC applicants also do one or two of these projects (also see here: this will help you with the communities workflow and give you sufficient confidence to get going.
An easy way to get started is to address a suitable number of Coverity Scan issues. Ask on xen-devel@ for a set of suitable Coverity issues. Note that this does not require any access to the Coverity scan results. Open bugs to fix under the Small Code Contribution Requirement can also be found on bugs.xenproject.org.
Recent examples of such small contributions (including review discussions) can be found at
* v1 & v2
* 
Make sure you check the follow-up mails to get a sense of what you can expect.
Also see:
* Submitting_Xen_Project_Patches
Category:GSoC
Category:Outreachy
Category:Internships