Difference between revisions of "Google Summer of Code 2017"

From Libvirt Wiki
Jump to: navigation, search
m (Timeline)
(Add projects + clean unneeded infos)
 
Line 10: Line 10:
  
 
Please contact the respective mentor for the idea you are interested in. For general questions feel free to contact me: Michal Prívozník (IRC nick: mprivozn).
 
Please contact the respective mentor for the idea you are interested in. For general questions feel free to contact me: Michal Prívozník (IRC nick: mprivozn).
 
== Timeline ==
 
 
The timeline is to be found [https://developers.google.com/open-source/gsoc/timeline here].
 
  
 
== FAQ ==
 
== FAQ ==
Line 25: Line 21:
 
== Accepted projects ==
 
== Accepted projects ==
  
The list of accepted projects (with student assigned) should go here.
+
=== QEMU command line generator XML fuzzing ===
 +
 +
'''Summary:''' Using fuzzing techniques to generate unusual XML to feed to QEMU command line generator
 +
 +
There are a huge number of potential variants of XML documents that can be fed into libvirt. Only a subset of these are valid for generating QEMU command lines. It is likely that there are cases where omitting certain attributes or XML elements will cause the QEMU command line generator to crash. Using fuzzing techniques to generate unusual XML documents which could then be fed through the test suite may identify crashes.
 +
 +
'''Details:'''
 +
* Component: libvirt
 +
* Skill level: intermediate
 +
* Language: C
 +
* Mentor:
 +
* Suggested by: Daniel Berrange
  
== Template ==
+
'''Unfinished'''
<nowiki>=== TITLE ===
+
 
 +
=== Conversion to and from OCI-formatted containers ===
 
   
 
   
  '''Summary:''' Short description of the project
+
'''Summary:''' Container formats is being standardized by [https://www.opencontainers.org Open Container Initiative]. libvirt-lxc support for them would be awesome.
 +
 
 +
virsh has domxml-from-native and domxml-to-native to help converting between libvirt configuration and another one. In the libvirt-lxc driver the domxml-from-native command already supports converting from [https://linuxcontainers.org/ lxc] (yes, naming is confusing). The goal is not only to implement it also for [https://github.com/opencontainers/specs OCI format] but also to implement export to OCI format.
 +
 
 +
Some code pointers to get started:
 +
* [http://libvirt.org/git/?p=libvirt.git;a=blob;f=src/lxc/lxc_native.c src/lxc/lxc_native.c] is the place where the lxc import is implemented.
 +
* The starting point in the lxc driver is the [http://libvirt.org/git/?p=libvirt.git;a=blob;f=src/lxc/lxc_driver.c#l5815 connectDomainXMLFromNative] function pointer.
 +
* To add export capabilities, the [http://libvirt.org/git/?p=libvirt.git;a=blob;f=src/driver-hypervisor.h#l282 connectDomainXMLToNative] will have to be defined.
 +
 
 +
Note that there may be tricky things to handle, like disk images conversion to a rootfs, but this project aims at implementing the simple cases first. If time permits, the corner cases could be handled as well.
 +
 
 +
'''Details:'''
 +
* Component: libvirt
 +
* Skill level: intermediate
 +
* Language: C
 +
* Mentor: Cédric Bosdonnat <cbosdonnat@suse.com>
 +
* Suggested by: Cédric Bosdonnat
 +
 
 +
'''Unfinished'''
 +
 
 +
=== Ease creation of containers ===
 +
   
 +
'''Summary:''' Creating containers for libvirt LXC driver is a pain since there is no simple way to setup the root file system. A new workflow around container images is presented in http://bosdonnat.fr/system-container-images.html. This project is about moving the ''virt-bootstrap'' tool further, that is add more features to it and integrate it with ''virt-manager'' and ''virt-install'' for a smooth user experience.
 
   
 
   
Detailed description of the project.
+
So far the virt-bootstrap tool is in a rather primitive state. It's sources should be cleaned up to be ready for merge in virt-manager sources. The virt-manager UI will have to be modified to fully use this new tool.
 +
 
 +
The virt-bootstrap tool would need the following features to be added:
 +
 
 +
* Handle more sources format (virt-builder, Live DVD isos...)
 +
* Provide several output formats: folder (done), qcow2 with backing chains
 +
 
 +
The project will also study how to produce a user-namespace-ready root file system.
 
   
 
   
'''Links:'''
+
'''Links:'''
* Wiki links to relevant material
+
* virt-bootstrap current code: https://github.com/cbosdo/virt-bootstrap
* External links to mailing lists or web sites
+
* virt-manager git repository: https://github.com/virt-manager/virt-manager
 
   
 
   
'''Details:'''
+
'''Details:'''
* Skill level: beginner or intermediate or advanced
+
* Skill level: beginner
* Language: C
+
* Language: Python
* Student: Name and email address
+
* Mentor: Cédric Bosdonnat <cbosdonnat@suse.com>, cbosdonnat on IRC (#virt OFTC)
* Mentors: Email address and IRC nick
+
* Suggested by: Cédric Bosdonnat <cbosdonnat@suse.com>
* Suggested by: Person who suggested the idea</nowiki>
+
 
 +
'''Succeeded'''

Latest revision as of 08:43, 2 January 2018

Google Summer of Code 2017

Introduction

Like in the previous years, libvirt is willing to apply for Google Summer of Code 2017. The program has been announced. This page lists accepted projects only. For the list of ideas go here.

Contacts

  • IRC (GSoC specific): #qemu-gsoc on irc.oftc.net
  • IRC (development and general): #virt on irc.oftc.net
  • libvir-list

Please contact the respective mentor for the idea you are interested in. For general questions feel free to contact me: Michal Prívozník (IRC nick: mprivozn).

FAQ

Some of the frequently asked questions among with answers can be found here.

Project ideas

The list of project ideas can be found here.

Accepted projects

QEMU command line generator XML fuzzing

Summary: Using fuzzing techniques to generate unusual XML to feed to QEMU command line generator

There are a huge number of potential variants of XML documents that can be fed into libvirt. Only a subset of these are valid for generating QEMU command lines. It is likely that there are cases where omitting certain attributes or XML elements will cause the QEMU command line generator to crash. Using fuzzing techniques to generate unusual XML documents which could then be fed through the test suite may identify crashes.

Details:

  • Component: libvirt
  • Skill level: intermediate
  • Language: C
  • Mentor:
  • Suggested by: Daniel Berrange

Unfinished

Conversion to and from OCI-formatted containers

Summary: Container formats is being standardized by Open Container Initiative. libvirt-lxc support for them would be awesome.

virsh has domxml-from-native and domxml-to-native to help converting between libvirt configuration and another one. In the libvirt-lxc driver the domxml-from-native command already supports converting from lxc (yes, naming is confusing). The goal is not only to implement it also for OCI format but also to implement export to OCI format.

Some code pointers to get started:

Note that there may be tricky things to handle, like disk images conversion to a rootfs, but this project aims at implementing the simple cases first. If time permits, the corner cases could be handled as well.

Details:

  • Component: libvirt
  • Skill level: intermediate
  • Language: C
  • Mentor: Cédric Bosdonnat <cbosdonnat@suse.com>
  • Suggested by: Cédric Bosdonnat

Unfinished

Ease creation of containers

Summary: Creating containers for libvirt LXC driver is a pain since there is no simple way to setup the root file system. A new workflow around container images is presented in http://bosdonnat.fr/system-container-images.html. This project is about moving the virt-bootstrap tool further, that is add more features to it and integrate it with virt-manager and virt-install for a smooth user experience.

So far the virt-bootstrap tool is in a rather primitive state. It's sources should be cleaned up to be ready for merge in virt-manager sources. The virt-manager UI will have to be modified to fully use this new tool.

The virt-bootstrap tool would need the following features to be added:

  • Handle more sources format (virt-builder, Live DVD isos...)
  • Provide several output formats: folder (done), qcow2 with backing chains

The project will also study how to produce a user-namespace-ready root file system.

Links:

Details:

  • Skill level: beginner
  • Language: Python
  • Mentor: Cédric Bosdonnat <cbosdonnat@suse.com>, cbosdonnat on IRC (#virt OFTC)
  • Suggested by: Cédric Bosdonnat <cbosdonnat@suse.com>

Succeeded