Archived/GSoC 2015: Difference between revisions
Lars.kurth (talk | contribs) No edit summary |
Lars.kurth (talk | contribs) No edit summary |
||
(36 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
{{Info|Unfortunately the project has not been accepted for GSoC in 2015! However, there are Xen related projects hosted in various organisations, such as |
|||
{{InfoLeft|Please read this [http://lists.xen.org/archives/html/xen-devel/2015-02/msg00902.html message] if you are a mentor to and want to prepare for GSoC 2015}} |
|||
* [http://wiki.centos.org/GSoC/2015/Ideas#head-ecb615be72e53950f08df92809020721d44c6694 Xen based Hypervisor in a Box @ Centos] |
|||
* [http://www.openbsdfoundation.org/gsoc2015.html#xenguest Xen guest support for OpenBSD @ Open BSD Foundation] |
|||
* [https://code.google.com/p/ganeti/wiki/SummerOfCode2015Ideas 3 Xen related projects @ Ganeti] |
|||
We should also be able to find mentors and add Xen related projects in the following places: |
|||
* [https://www.google-melange.com/gsoc/org2/google/gsoc2015/qemu qemu] - if you are interested, please get in touch with developers on xen-devel |
|||
}} |
|||
__TOC__ |
__TOC__ |
||
http://1-ps.googleusercontent.com/xk/lUi00NOiZZtaYcm5-HDw_Ypz0k/s.google-melange.appspot.com/www.google-melange.com/soc/content/2-1-20150205/images/gsoc/logo/banner-gsoc2015.png.pagespeed.ce.1-XG35qq3RLrLftld3Q2.png |
|||
== Xen Project == |
|||
The Xen Project is a Linux Foundation collaborative project that develops the |
The Xen Project is a Linux Foundation collaborative project that develops the |
||
* [http://xenproject.org/developers/teams/pvops.html |
* [http://xenproject.org/developers/teams/pvops.html Domain Support] |
||
* [http://xenproject.org/developers/teams/hypervisor.html Xen Hypervisor] (for x86 and [http://xenproject.org/developers/teams/arm-hypervisor.html ARM]) |
* [http://xenproject.org/developers/teams/hypervisor.html Xen Hypervisor] (for x86 and [http://xenproject.org/developers/teams/arm-hypervisor.html ARM]) |
||
* [http://xenproject.org/developers/teams/xapi.html The XAPI toolstack] |
* [http://xenproject.org/developers/teams/xapi.html The XAPI toolstack] |
||
Line 11: | Line 22: | ||
The project also has excellent relationships with its upstreams (Linux Kernel, the BSDs, QEMU and other projects) and upstreams such as Linux distributions. This is reflected in the project list, which contains many interesting cross-project development projects for students. |
The project also has excellent relationships with its upstreams (Linux Kernel, the BSDs, QEMU and other projects) and upstreams such as Linux distributions. This is reflected in the project list, which contains many interesting cross-project development projects for students. |
||
== GSoC and Xen == |
== GSoC and Xen Project == |
||
This page is used to list project ideas for [http://www.google-melange.com/gsoc/homepage/google/gsoc2015 Google Summer of Code (GSOC) 2015]. |
This page is used to list project ideas for [http://www.google-melange.com/gsoc/homepage/google/gsoc2015 Google Summer of Code (GSOC) 2015]. |
||
Line 25: | Line 36: | ||
'''To work on a project:''' |
'''To work on a project:''' |
||
* Find a project that looks interesting (or a bug if you want to start with something simple) |
* Find a project that looks interesting (or a bug if you want to start with something simple) |
||
* Send an email to the relevant [http://www.xenproject.org/help/mailing-list.html mailing list] (see '''Developer Mailing Lists''') and let us know if you are interested in starting to work or applying on a specific project. |
* Send an email to the relevant [http://www.xenproject.org/help/mailing-list.html mailing list] (see '''Developer Mailing Lists''') - the correct list should also be on the project - and let us know if you are interested in starting to work or applying on a specific project. |
||
* Post your ideas, questions, RFCs to the relevant [http://www.xenproject.org/help/mailing-list.html mailing list] sooner than later so you can get comments and feedback. |
* Post your ideas, questions, RFCs to the relevant [http://www.xenproject.org/help/mailing-list.html mailing list] sooner than later so you can get comments and feedback. |
||
Line 39: | Line 50: | ||
* Any work you submit before applying for a project should be based on xen-unstable development tree, if the project is Xen Hypervisor and/or tools related. Linux kernel related patches should be based on upstream kernel.org Linux git tree (latest version). XAPI and Mirage OS patches should be based on the right codeline too. Check out the '''navigation by audience''' section on the left to find resources. |
* Any work you submit before applying for a project should be based on xen-unstable development tree, if the project is Xen Hypervisor and/or tools related. Linux kernel related patches should be based on upstream kernel.org Linux git tree (latest version). XAPI and Mirage OS patches should be based on the right codeline too. Check out the '''navigation by audience''' section on the left to find resources. |
||
==== More |
==== More Resources ==== |
||
Project resources are listed in below's table. Projects in the GSoC project list are under headline that maps to one of the entries below, e.g. a project under [[#Xen Hypervisor Userspace Tools|Xen Hypervisor Userspace Tools]] will map to the '''Xen Hypervisor''' in the table below. Also note that the links in the '''Sub-Project/Team''' column will get you to a page with general resources related to that project. |
|||
Quick links to changelogs of the various Xen related repositories/trees: Please see [[XenRepositories]] wiki page! |
|||
{|class="prettytable" style="text-align: left;" valign="top" |
|||
Before to submit patches, please look at [[Submitting Xen Patches]] wiki page and the relevant [http://www.xenproject.org/developers/teams.html Xen Project team page]. This will contain more information. |
|||
!style="width: 20%;"|Sub-Project/Team |
|||
!style="width: 30%;"|Mailing List |
|||
If you have new ideas, suggestions or development plans let us know and we'll update this list! |
|||
!style="width: 30%;"|Code Repos |
|||
!style="width: 20%;"|Additional Information |
|||
|- |
|||
|[http://xenproject.org/developers/teams/pvops.html Domain Support] |
|||
|Start with [http://lists.xenproject.org/cgi-bin/mailman/listinfo/xen-devel xen-devel@lists.xenproject.org] |
|||
|[[Mainline Linux Kernel Configs]], [[Xen Project Repositories]] |
|||
|[[:Category:Developers|Xen Developer Wiki]] |
|||
|- |
|||
|[http://xenproject.org/developers/teams/hypervisor.html Xen Hypervisor] (x86 & ARM) |
|||
|[http://lists.xenproject.org/cgi-bin/mailman/listinfo/xen-devel xen-devel@lists.xenproject.org] |
|||
|[[Xen Project Repositories]] |
|||
|[[:Category:Developers|Xen Developer Wiki]], [[Xen_ARM_with_Virtualization_Extensions|Xen Developer Wiki (ARM related info)]] |
|||
|- |
|||
|[http://xenproject.org/developers/teams/xapi.html The XAPI toolstack] |
|||
|[http://lists.xenproject.org/cgi-bin/mailman/listinfo/xen-api xen-api@lists.xenproject.org] |
|||
|[https://github.com/xapi-project/ xapi-project on GitHub] |
|||
|[[:Category:XAPI_Devel|XAPI Developer Wiki]] |
|||
|- |
|||
|[http://xenproject.org/developers/teams/mirage-os.html Mirage OS] |
|||
|[http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel mirageos-devel@lists.xenproject.org] |
|||
|[https://github.com/mirage/ mirage on GitHub] - you can check out all repos via ''git clone --recursive git://github.com/mirage/megamirage'' |
|||
|[[:Category:Mirage_Devel|Mirage OS Developer Wiki]], [http://www.openmirage.org/ Mirage OS Site] |
|||
|- |
|||
|[http://xenproject.org/developers/teams/windows-pv-drivers.html Windows PV Drivers] |
|||
|[http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel win-pv-devel@lists.xenproject.org] |
|||
|[[Windows_PV_Drivers/Repositories]] |
|||
|[[:Category:Windows_PV_Drivers|Windows PV Drivers Developer Wiki]] |
|||
|- |
|||
|[http://xenproject.org/developers/teams/embedded-and-automotive.html Embedded & Automotive Drivers] |
|||
|[http://lists.xenproject.org/cgi-bin/mailman/listinfo/embedded-pv-devel embedded-pv-devel@lists.xenproject.org] |
|||
|None yet |
|||
|[[:Category:Embedded_and_Automotive_PV_Drivers|Embedded & Automotive Drivers Developer Wiki]] |
|||
|} |
|||
=== Aspiring Students === |
=== Aspiring Students === |
||
* Please contact the mailing list and CC the mentor (you can find mentor e-mail addresses on the [[Talk:GSoC 2015|talk]] page). Please do *not* contact the mentor without CC'ing the list: GSoC is about community engagement and you will need to get used to working in public on the mailing list. |
|||
* Please contact the mentor and CC the most appropriate mailing list |
|||
* Get a bite-size task from the mentor before the application starts |
* Get a bite-size task from the mentor before the application starts |
||
* If you feel comfortable with an idea, please put your name to an idea using the following format |
* If you feel comfortable with an idea, please put your name to an idea using the following format |
||
Line 68: | Line 112: | ||
== List of peer reviewed Projects == |
== List of peer reviewed Projects == |
||
=== Domain support (PVOPS and Linux) === |
=== Domain support (PVOPS and Linux) === |
||
{{project |
|||
|Project=OVMF Compatibility Support Module support in Xen |
|||
|Date=2/5/2014 |
|||
|Contact=Wei Liu <wei.liu2@citrix.com> |
|||
|GSoC=Yes |
|||
|Difficulty=Medium |
|||
|Desc= |
|||
OVMF is a project to enable UEFI support for virtual machine. http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=OVMF |
|||
SeaBIOS is a legacy BIOS implementation used by Xen to boot HVM guests. http://www.coreboot.org/SeaBIOS |
|||
Currently Xen supports booting HVM guest with Seabios and OVMF UEFI firmware, but those are separate binaries. OVMF supports adding legacy BIOS blob in its binary with Compatibility Support Module support. We can try to produce single OVMF binary with Seabios in it, thus having only one firmware binary. |
|||
Tasks may include: |
|||
* understand the boot process of HVM guests |
|||
* figure out how CSM works |
|||
* design / implement interface between Hvmloader and the unified binary |
|||
| Outcomes=Produce a single firmware binary that can be used for legacy boot HVM guest and UEFI HVM guest |
|||
| Skills=You need to have understanding of: |
|||
* Firmware internal |
|||
* Some C programming skills |
|||
|Review= |
|||
}} |
|||
{{project |
{{project |
||
Line 117: | Line 137: | ||
|GSoC=Yes |
|GSoC=Yes |
||
}} |
}} |
||
{{project |
|||
|Project=Xen block backend/frontend multiqueue support |
|||
|Date=03/09/2014 |
|||
|Difficulty=High |
|||
|Contact=Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> |
|||
|Desc= |
|||
The Linux kernel (and FreeBSD, Windows, etc) have ParaVirtualized (PV) drivers to perform |
|||
the I/O instead of using the emulated devices that appear in QEMU (IDE, SCSI, etc). This is |
|||
done because the emulation of the IDE drivers is quite slow - and if you dig in how it |
|||
actually is done - it is full of bit-banging registers. The PV drivers are an answer to this |
|||
and eliminate the need for emulation. The mechanism by which they work is |
|||
nicely draw out in http://wiki.xen.org/wiki/PV_Protocol |
|||
and http://www.informit.com/articles/article.aspx?p=1160234&seqNum=3 |
|||
("Definitive Guide to the Xen Hypervisor, The") |
|||
There have been improvements done in it - see http://wiki.xen.org/wiki/Xen_4.3_Block_Protocol_Scalability |
|||
and http://blog.xen.org/index.php/2013/08/07/indirect-descriptors-for-xen-pv-disks/ |
|||
However, there are still room for improvement. We can utilize the new |
|||
block multiqueue API support in Linux (See https://lwn.net/Articles/552904/ |
|||
and http://kernel.dk/systor13-final18.pdf) |
|||
to allocate per CPU a block thread (which handles the I/O transmission). |
|||
That should provide greater throughput and lower latency for I/O workloads. |
|||
Also see https://docs.google.com/document/d/1Vh5T8Z3Tx3sUEhVB0DnNDKBNiqB_ZA8Z5YVqAsCIjuI |
|||
which has some of the explanation. |
|||
| Skills=You need to have understanding of: |
|||
* Knowledge of Linux kernel |
|||
* How I/O works |
|||
* C language |
|||
|Outcomes=Expected outcome: |
|||
* Patches for the Linux Kernel Mailing list (LKML). |
|||
* Benchmark reports. |
|||
|GSoC=Yes |
|||
}} |
|||
{{project |
{{project |
||
|Project=Enabling the 9P File System transport as a paravirt device |
|Project=Enabling the 9P File System transport as a paravirt device |
||
|Date=01/20/2014 |
|Date=01/20/2014 |
||
|Verified=02/13/2015 |
|||
|Difficulty=High |
|Difficulty=High |
||
|Contact=Wei Liu <wei.liu2@citrix.com> Julien Grall <julien.grall@citrix.com> |
|||
|Contact=Andres Lagar-Cavilla <andres@lagarcavilla.org> |
|||
|GSoC=Yes |
|GSoC=Yes |
||
|Desc=VirtIO provides a 9P FS transport, which is essentially a paravirt file system device. VMs can mount arbitrary file system hierarchies exposed by the backend. The 9P FS specification has been around for a while, while the VirtIO transport is relatively new. The project would consist of implementing a classic Xen front/back pv driver pair to provide a transport for the 9P FS Protocol. |
|Desc=VirtIO provides a 9P FS transport, which is essentially a paravirt file system device. VMs can mount arbitrary file system hierarchies exposed by the backend. The 9P FS specification has been around for a while, while the VirtIO transport is relatively new. The project would consist of implementing a classic Xen front/back pv driver pair to provide a transport for the 9P FS Protocol. |
||
Line 193: | Line 176: | ||
|Project=KDD (Windows Debugger Stub) enhancements |
|Project=KDD (Windows Debugger Stub) enhancements |
||
|Date=01/30/2014 |
|Date=01/30/2014 |
||
|Verified=02/10/2015 |
|||
|Contact=Paul Durrant <paul.durrant@citrix.com> |
|Contact=Paul Durrant <paul.durrant@citrix.com> |
||
|Difficulty=Medium |
|Difficulty=Medium |
||
Line 221: | Line 205: | ||
For example, in a qemu-kvm command-line you may encounter: |
For example, in a qemu-kvm command-line you may encounter: |
||
<pre> |
|||
-cpu SandyBridge,+pdpe1gb,+osxsave,+dca,+pcid,+pdcm,+xtpr,+tm2,+est,+smx, |
-cpu SandyBridge,+pdpe1gb,+osxsave,+dca,+pcid,+pdcm,+xtpr,+tm2,+est,+smx, |
||
+vmx,+ds_cpl,+monitor,+dtes64,+pbe,+tm,+ht,+ss,+acpi,+ds,+vme |
|||
</pre> |
|||
And in <qemu>/target-i386.c you find a fairly comprehensive description of x86 processor models, what CPUID features are inherent, and what CPUID feature each of these symbolic flags enables. |
And in <qemu>/target-i386.c you find a fairly comprehensive description of x86 processor models, what CPUID features are inherent, and what CPUID feature each of these symbolic flags enables. |
||
Line 234: | Line 220: | ||
CPUID management is crucial in a heterogeneous cluster where migrations and save restore require careful processor feature selection to avoid blow-ups. |
CPUID management is crucial in a heterogeneous cluster where migrations and save restore require careful processor feature selection to avoid blow-ups. |
||
See: |
|||
See: http://wiki.qemu.org/images/c/c8/Cpu-models-and-libvirt-devconf-2014.pdf |
|||
* http://wiki.qemu.org/images/c/c8/Cpu-models-and-libvirt-devconf-2014.pdf |
|||
* https://www.berrange.com/posts/2010/02/15/guest-cpu-model-configuration-in-libvirt-with-qemukvm/ |
|||
and http://blog.xen.org/index.php/2014/01/17/libvirt-support-for-xens-new-libxenlight-toolstack/ |
|||
* http://blog.xen.org/index.php/2014/01/17/libvirt-support-for-xens-new-libxenlight-toolstack/ |
|||
|Skills= A good understanding of C user-land programming, and the ability to dive into qemu/libvirt (for reference code and integration), as well as libxc and libxl (for implementation). |
|Skills= A good understanding of C user-land programming, and the ability to dive into qemu/libvirt (for reference code and integration), as well as libxc and libxl (for implementation). |
||
Line 242: | Line 229: | ||
* Mainline patches for libxl |
* Mainline patches for libxl |
||
}} |
}} |
||
=== Mirage OS === |
|||
{{project |
{{project |
||
|Project= |
|Project=Rump kernel based stubdom |
||
|Date= |
|Date=Feb 06 2014 |
||
|Verified=Feb 06 2014 |
|||
|Contact=Dave Scott <dave.scott@eu.citrix.com> |
|||
|Contact=Wei Liu <wei.liu2@citrix.com> |
|||
|Difficulty=Medium |
|||
|Difficulty=Easy |
|||
|Skills=OCaml |
|||
|GSoC=Yes |
|||
|Desc=The Mirage OS framework (see http://xenproject.org/developers/teams/mirage-os.html, http://www.openmirage.org/) can be used to create tiny 'unikernels': entire software stacks which run directly on the Xen hypervisor. These VMs have such a small memory footprint (16 MiB or less) that many of them can be run even on relatively small hosts. The goal of this project is to create a specific unikernel that can be configured to generate a specific I/O pattern, and to create configurations that mimic the boot sequence of Linux and Windows guests. The resulting unikernel will then enable cheap system load testing. |
|||
|Desc=Stubdom can help boost performance and security. Currently stubdom is not very nice to work with. It employs an ancient version of newlib and the build system is fragile. |
|||
Rump kernel (a way to implement unikernel / library OS) already runs on Xen and it uses NetBSD's libraries which are much more maintainable. This project aims to port existing stubdoms (c, xenstore, ocaml etc) to rump kernel. |
|||
The first task is to generate an I/O trace from a VM. For this we could use 'xen-disk', a userspace Mirage application which acts as a block backend for xen guests (see http://openmirage.org/wiki/xen-synthesize-virtual-disk). Following the wiki instructions we could modify a 'file' backend to log the request timestamps, offsets, buffer lengths. |
|||
During this process, student can get first hand experience on Xen and rump kernel and tackle both kernel level and application level problems. The experience on the frontier of OS development and research is also valuable. Student should be able to understand how a to turn a piece of software into unikernel when he / she finishes this project. |
|||
The second task is to create a simple kernel based on one of the MirageOS examples (see http://github.com/mirage/mirage-skeleton). The 'block' example shows how reads and writes are done. The previously-generated log could be statically compiled into the kernel and executed to generate load. |
|||
|Outcomes=1. a repository containing an 'unikernel' (see http://github.com/mirage/mirage-skeleton) |
|||
2. at least 2 I/O traces, one for Windows boot and one for Linux boot (any version) |
|||
|GSoC=yes}} |
|||
Useful links: |
|||
{{project |
|||
|Project=Fuzz testing Xen with Mirage |
|||
* http://rumpkernel.org/ |
|||
|Date=28/11/2013 |
|||
|Contact=Anil Madhavapeddy <anil@recoil.org> |
|||
|Skills=OCaml, Xen |
|||
|Difficulty=medium |
|||
|Desc= |
|||
Mirage OS (see http://xenproject.org/developers/teams/mirage-os.html, http://www.openmirage.org/) is a type-safe unikernel written in OCaml which generates highly specialised "appliance" VMs that run directly on Xen without requiring an intervening guest kernel. We would like to use the Mirage/Xen libraries to fuzz test all levels of a typical cloud toolstack. Mirage has low-level bindings for Xen hypercalls, mid-level bindings for domain management, and high-level bindings to XCP for cluster management. This project would build a QuickCheck-style fuzzing mechanism that would perform millions of random operations against a real cluster, and identify bugs with useful backtraces. |
|||
|Skills= Knowledge of operating system, GNU autotools, C programming and good debugging skills. |
|||
The first task would be to become familiar with a specification-based testing tool like Kaputt (see http://kaputt.x9c.fr/). The second task would be to choose an interface for testing; perhaps one of the hypercall ones. |
|||
[[GSoC_2013#fuzz-testing-mirage]] |
|||
|Outcomes=Patches for Xen and rump kernel. |
|||
|Outcomes=1. a repo containing a fuzz testing tool; 2. some unexpected behaviour with a backtrace (NB it's not required that we find a critical bug, we just need to show the approach works) |
|||
|GSoC=yes |
|||
}} |
}} |
||
=== MirageOS === |
|||
{{project |
{{project |
||
|Project= |
|Project=Various MirageOS Pioneer Projects |
||
|Date= |
|Date=01/30/2015 |
||
|Verified=Feb 8th, 2015 (see this [http://lists.xenproject.org/archives/html/mirageos-devel/2015-02/msg00046.html conversation]) |
|||
|Contact=Anil Madhavapeddy <anil@recoil.org> |
|||
|Contact=Send a mail to mirageos-devel@lists.xenproject.org if you're interested in starting on one or several of these projects. |
|||
|Skills=OCaml, shell scripting |
|||
|Difficulty= |
|Difficulty=Various levels of difficulty |
||
|Skills=OCaml |
|||
|Desc= |
|||
|Desc=This is a list of pioneer projects for Mirage OS, covering area such as '''Build Tools''', '''New Libraries''', '''Storage Technologies''', '''Networking Technologies''', '''Interfaces to Non-OCaml (aka foreign) Languages''', '''Testing''' and other topics. Note that some of these projects may be too small or too big for a single GSoC project. If you are interested in one of these, make sure you discuss first on mirageos-devel@lists.xenproject.org - we can then merge or split these as needed for GSoC. |
|||
MirageOS has an emerging web toolstack that's broken up as a series of libraries -- for example, Cohttp, Uri, Cow, Ipaddr, RSS and Cowabloga. This project will get you familiar with them by building a protocol testing framework that can generate traffic using off-the-shelf tools such as httperf, and evaluate the results vs applications such as Apache or Nginx. |
|||
References: |
|||
|Outcomes=1. a test harness for HTTP; 2. some results of the evaluation using the test harness |
|||
* [https://github.com/mirage/mirage-www/wiki/Pioneer-Projects Complete list of Pioneer Projects] (currently approximately 15 projects) |
|||
|GSoC=yes |
|||
|Outcomes=Listed in [https://github.com/mirage/mirage-www/wiki/Pioneer-Projects Complete list of Pioneer Projects] |
|||
|GSoC=yes, but do check mirageos-devel@lists.xenproject.org first |
|||
}} |
}} |
||
Line 538: | Line 520: | ||
[[Category:GSoC 2015]] |
[[Category:GSoC 2015]] |
||
[[Category:Developers]] |
[[Category:Developers]] |
||
[[Category:Archived]] |
|||
[[Category:Index]] |
[[Category:Index]] |
||
[[Category:Project]] |
[[Category:Project]] |
||
[[Category:Transient]] <!-- as if not maintained it becomes stale --> |
[[Category:Transient]] <!-- as if not maintained it becomes stale --> |
||
[[Category:Internships]] |
|||
[[Category:Archived]] |
Latest revision as of 18:06, 2 February 2017
Unfortunately the project has not been accepted for GSoC in 2015! However, there are Xen related projects hosted in various organisations, such as
We should also be able to find mentors and add Xen related projects in the following places:
|
Xen Project
The Xen Project is a Linux Foundation collaborative project that develops the
- Domain Support
- Xen Hypervisor (for x86 and ARM)
- The XAPI toolstack
- Mirage OS
- Windows PV Drivers
- Embedded & Automotive Drivers
The project also has excellent relationships with its upstreams (Linux Kernel, the BSDs, QEMU and other projects) and upstreams such as Linux distributions. This is reflected in the project list, which contains many interesting cross-project development projects for students.
GSoC and Xen Project
This page is used to list project ideas for Google Summer of Code (GSOC) 2015.
Key GSoC resources
The Xen Project is planning to apply as a Mentoring Organization. Stay posted.
Finding a project that fits you
This page lists Xen Project development projects for GSoC that can be picked up by anyone! If you're interesting in hacking Xen Project code and want to become a part of our friendly developer community this is the place to start! Ready for the challenge?
To work on a project:
- Find a project that looks interesting (or a bug if you want to start with something simple)
- Send an email to the relevant mailing list (see Developer Mailing Lists) - the correct list should also be on the project - and let us know if you are interested in starting to work or applying on a specific project.
- Post your ideas, questions, RFCs to the relevant mailing list sooner than later so you can get comments and feedback.
You have your own project idea: no problem!
- If you have your own project idea, outline what you are trying to do on the mailing list. If you know the right list, post your project idea on mailing list. Failing that post on xen-devel and we can redirect you to the right list. Make sure you add GSoC 2015 to the subject line.
It is a good idea to ...
The Xen Project has also participated in the Gnome Outreach Program for Women (OPW) in the past. One of the things we learned by participating in OPW is that you will be more successful, happier and get more out of participating in student programs such as GSoC, if you do a bit of prep-work before writing an application. Here is some stuff you can do:
- Contact your mentor early and get to know him or her
- If the Xen Project is accepted into GSoC, start hanging out on our IRC channel. You can use the #xen-opw IRC channel on freenode.net for now (if accepted, we will create a GSoC channel)
- You may want to ask the mentor for a couple of small bitesize work-items (such as reviewing someones patch, a bitesize bug, ...) and start communicating on the relevant mailing list. That helps you become familiar with our development process, the mentor and other community members and will help you chose the right project and help you decide whether the Xen project is for you.
- Note that quite a few Xen maintainers used to be GSoC students once. Feel free to ask community dot manager at xenproject dot org to put you in touch with them if you have questions about their experience.
- Any work you submit before applying for a project should be based on xen-unstable development tree, if the project is Xen Hypervisor and/or tools related. Linux kernel related patches should be based on upstream kernel.org Linux git tree (latest version). XAPI and Mirage OS patches should be based on the right codeline too. Check out the navigation by audience section on the left to find resources.
More Resources
Project resources are listed in below's table. Projects in the GSoC project list are under headline that maps to one of the entries below, e.g. a project under Xen Hypervisor Userspace Tools will map to the Xen Hypervisor in the table below. Also note that the links in the Sub-Project/Team column will get you to a page with general resources related to that project.
Sub-Project/Team | Mailing List | Code Repos | Additional Information |
---|---|---|---|
Domain Support | Start with xen-devel@lists.xenproject.org | Mainline Linux Kernel Configs, Xen Project Repositories | Xen Developer Wiki |
Xen Hypervisor (x86 & ARM) | xen-devel@lists.xenproject.org | Xen Project Repositories | Xen Developer Wiki, Xen Developer Wiki (ARM related info) |
The XAPI toolstack | xen-api@lists.xenproject.org | xapi-project on GitHub | XAPI Developer Wiki |
Mirage OS | mirageos-devel@lists.xenproject.org | mirage on GitHub - you can check out all repos via git clone --recursive git://github.com/mirage/megamirage | Mirage OS Developer Wiki, Mirage OS Site |
Windows PV Drivers | win-pv-devel@lists.xenproject.org | Windows_PV_Drivers/Repositories | Windows PV Drivers Developer Wiki |
Embedded & Automotive Drivers | embedded-pv-devel@lists.xenproject.org | None yet | Embedded & Automotive Drivers Developer Wiki |
Aspiring Students
- Please contact the mailing list and CC the mentor (you can find mentor e-mail addresses on the talk page). Please do *not* contact the mentor without CC'ing the list: GSoC is about community engagement and you will need to get used to working in public on the mailing list.
- Get a bite-size task from the mentor before the application starts
- If you feel comfortable with an idea, please put your name to an idea using the following format
{{project ... |Review=(delete as addressed) * {{Comment|~~~~:}} I am interested in this idea ... (note that you may also want to link to the e-mail thread with the mentor)
- You will need to request write access to the wiki by filling out this form
Applying for GSoC
Note that we will update this section when more student information on melange is available, to make it easier for you to find information. And of course assuming that the Xen Project will be accepted into GSoC. |
To apply for a project, follow the steps outlined on
- melange
- We do have our own GSoC Student Application Template form
List of peer reviewed Projects
Domain support (PVOPS and Linux)
Utilize Intel QuickData on network and block path.
|
Enabling the 9P File System transport as a paravirt device
Peer Review Comments(delete as addressed)
|
Xen Hypervisor Userspace Tools
CPU/RAM/PCI diagram tool
|
KDD (Windows Debugger Stub) enhancements
|
CPUID Programming for Humans
|
Rump kernel based stubdom
|
MirageOS
Various MirageOS Pioneer Projects
|
List of projects that need more work
Xen Hypervisor
Introducing PowerClamp-like driver for Xen
|
Xen Hypervisor Userspace Tools
Refactor Linux hotplug scripts
|
XL to XCP VM motion
|
Advanced Scheduling Parameters
|
PCI Pass-through improvements
Allowing guests to boot with a passed-through GPU as the primary display
|
Improve PCIe Advanced Error Reporting (AER) handling for passed-through devices
|
XAPI
DRBD Integration
|
New Project Ideas
Please add new project ideas here, following
Archive
GSoC Projects that were accepted in 2014
Implement Xen PVUSB support in xl/libxl toolstack
|
Lazy restore using memory paging
|
HVM per-event-channel interrupts
|
Mirage OS cloud API support
|
Parallel xenwatch kthread
|
Conventions for Projects and Project Mentors
Rules and Advice for Adding Ideas
- Be creative
- Add projects into New Project Ideas or improve projects in Project Ideas that Need Review or more work through review comments.
- Use the {{GSoC Project}} template to encode ideas on this page. Please read the Template Documentation before you do so.
- Be specific: what do you want to be implemented; if at all possible provide an indication of size and complexity as described above to make it easier for a student to choose ideas
- Check that the project meets the GSoC Program Goals
- If you are willing to mentors those ideas, add your name and email to the idea.
- Aspiring mentors should introduce themselves on the most appropriate Xen Project mailing list
Peer Review Goals
We strongly recommend and invite project proposers and project mentors to review each others proposals. When you review, please look out for
- Can a student get going and started with the information in the project description
- Are any unstated assumptions in the proposal, is there undefined terminology, etc. in the proposal
- Can the project completed in 3 months (assume that one month is needed for preparation)
- Does the project meet Google Summer of Code goals, which are
- Create and release open source code for the benefit of all
- Inspire young developers to begin participating in open source development
- Help open source projects identify and bring in new developers and committers
- Provide students the opportunity to do work related to their academic pursuits (think "flip bits, not burgers")
- Give students more exposure to real-world software development scenarios (e.g., distributed development, software licensing questions, mailing-list etiquette)
Peer Review Conventions
The {{GSoC Project}} template used to encode GSoC projects, contains some review functionality. Please read the Template Documentation before you add a template, also please use the conventions below to make comments.
|Review=(delete as addressed) * {{Comment|~~~~:}} Comment 1 * {{Comment|~~~~:}} Comment 2
Choosing Projects
We have a bi-weekly mentor meeting overlooked by our program management team, which are a core team of 2-3 mentors and a program administrator. This group will work with mentors to ensure that project proposals are of good quality and whether mentors are engaging with the program management team and students in the weeks before the application period ends.