StudentProjectIdeas

Version 45 (Tino Vázquez, 03/25/2010 12:55 pm)

1 19 Borja Sotomayor
h1. Project Ideas for Students
2 2 Ruben S. Montero
3 28 Ruben S. Montero
!>2010_300x267px.jpg!
4 28 Ruben S. Montero
5 33 Borja Sotomayor
OpenNebula has been accepted as a Google Summer of Code 2010 mentoring organization. "Google Summer of Code (GSoC)":http://code.google.com/soc/ is a program that offers student developers stipends to write code for various open source projects. To get more information on the program please "take a look to the GSoC FAQ":http://socghop.appspot.com/document/show/gsoc_program/google/gsoc2010/faqs. This page lists projects we would be willing to mentor as part of Summer of Code.
6 4 Borja Sotomayor
7 34 Borja Sotomayor
Once you are ready to submit an application, remember that you must do so before *April 9th* through the "GSoC webapp":http://socghop.appspot.com/ 
8 34 Borja Sotomayor
9 1 Ruben S. Montero
h2. OpenNebula in a Nutshell
10 1 Ruben S. Montero
11 24 Borja Sotomayor
OpenNebula is an open-source toolkit to easily build Infrastructure-as-a-Service clouds. In a nutshell, it is a piece of software that manages the deployment of virtual machines (Xen, KVM, VMWare are currently supported) on a pool of physical resources. OpenNebula has also been designed to be integrated with existing networking and storage solutions, meaning OpenNebula will also handle VM image transfers, VM setup, network setup, etc.
12 1 Ruben S. Montero
13 24 Borja Sotomayor
You can read more about OpenNebula on our "main website":http://www.opennebula.org/
14 16 Borja Sotomayor
15 18 Borja Sotomayor
h2. Required skills
16 1 Ruben S. Montero
17 1 Ruben S. Montero
To work on any of these projects, you will need to be familiar with the languages and technologies used to write OpenNebula. Unfortunately, we cannot mentor students who are just getting started in computer programming, or would have to learn a completely new language for the project (unless you feel you can learn this language on your own).
18 1 Ruben S. Montero
19 18 Borja Sotomayor
The skill you should have are:
20 1 Ruben S. Montero
21 18 Borja Sotomayor
* Competent in C++ or Ruby. These are the two languages used in OpenNebula, and most components use only C++ or Ruby exclusively, so you only need to know one of them.
22 24 Borja Sotomayor
* Working knowledge of Git.
23 24 Borja Sotomayor
* Being familiar with Xen, KVM or VMWare is not required, but it certainly helps.
24 1 Ruben S. Montero
25 18 Borja Sotomayor
Each project idea may have more specific requirements beyond those listed above.
26 18 Borja Sotomayor
27 18 Borja Sotomayor
28 18 Borja Sotomayor
h2. Project Ideas
29 18 Borja Sotomayor
30 43 Tino Vázquez
> *!!! IMPORTANT NOTE !!!*
31 40 Tino Vázquez
32 45 Tino Vázquez
> Jaime Melis and Constantino Vazquez won't be available during 27th March through the 4th April, if you have any urgent doubts regarding one their mentored projects during this period, please contact one of the following mentors:
33 44 Tino Vázquez
> 
34 44 Tino Vázquez
> * Ruben S. Montero (rubensm@dacya.ucm.es)
35 44 Tino Vázquez
> * Javier Fontán (jfontan@fdi.ucm.es)
36 44 Tino Vázquez
> * Borja Sotomayor (borja@cs.uchicago.edu)
37 37 Tino Vázquez
38 1 Ruben S. Montero
h3. OpenNebula Management Console
39 16 Borja Sotomayor
40 1 Ruben S. Montero
** *Description*: OpenNebula provides a powerful API and CLI, in this project we will develop a web-based console for OpenNebula. The user will login in a configurable dashboard with specific widgets/tabs for monitoring the physical infrastructure, boot a new virtual machine, or control running VMs.
41 1 Ruben S. Montero
** *Links*: To get an idea you can check for example the "AWS console":https://console.aws.amazon.com/
42 1 Ruben S. Montero
** *Requirements*: Web programming (as part of the project we will decide upon the specific platform, e.g. Ruby on rails...). In this project you'll be interfacing with OpenNebula, and you will have the opportunity to learn the basics of virtualization and cloud computing. Difficulty: medium-low
43 30 Ruben S. Montero
** *Mentor*: Jaime Melis: j.melis@fdi.ucm.es
44 20 Tino Vázquez
45 16 Borja Sotomayor
h3. Improve OpenNebula EC2 interface
46 31 Ruben S. Montero
47 24 Borja Sotomayor
** *Description*: OpenNebula can be used to build a public cloud accessible through EC2 or OCCI interfaces. However, OpenNebula currently implements only a subset of the Amazon EC2 interface. The goal of this project is to refine the existing methods and to implement additional EC2 calls.
48 1 Ruben S. Montero
** *Links*: "OpenNebula EC2 configuration guide":http://www.opennebula.org/documentation:rel1.4:ec2qcg and "user guide":http://www.opennebula.org/documentation:rel1.4:ec2qug
49 24 Borja Sotomayor
** *Requirements*: Familiarity with EC2 interfaces preferred. Difficulty: medium
50 30 Ruben S. Montero
** *Mentor*: Jaime Melis: j.melis@fdi.ucm.es
51 18 Borja Sotomayor
52 35 Tino Vázquez
h3. OCCI Web Interface
53 35 Tino Vázquez
54 35 Tino Vázquez
** *Description*: OCCI is the OGF Interface proposed for Cloud Computing, lightweight yet powerful. A possible problem can be user adoption, since the REST interface with XML representation is not appealing for the general public. This project aims to build a web interface for OCCI to ease the lifecycle management of Virtual Machines using the public cloud interface.
55 35 Tino Vázquez
** *Links*: To get an idea you can check for example the "AWS console":https://console.aws.amazon.com/
56 35 Tino Vázquez
** *Requirements*: Web programming (as part of the project we will decide upon the specific platform, e.g. Ruby on rails...). In this project you'll be interfacing with OpenNebula, and you will have the opportunity to learn the basics of virtualization and cloud computing. Difficulty: medium-low
57 36 Tino Vázquez
** *Mentor*: Constantino Vázquez Blanco: tinova@fdi.ucm.es
58 35 Tino Vázquez
59 24 Borja Sotomayor
60 1 Ruben S. Montero
h3. Improve integration between Haizea and OpenNebula
61 31 Ruben S. Montero
62 24 Borja Sotomayor
** *Description*: The "Haizea":http://haizea.cs.uchicago.edu/ Lease Manager can be used as a drop-in replacement for OpenNebula's scheduling daemon. Although this allows OpenNebula to support more complex scheduling scenarios, such as advance reservations, some Haizea features have not been integrated with OpenNebula yet, and are only available when running Haizea in simulation. The goal of this project would be to improve the integration between Haizea and OpenNebula. Although the most notable features not yet integrated are VM image deployment scheduling and cold migration, there are several other features the student could work on.
63 24 Borja Sotomayor
** *Requirements*: Some knowledge of Python is essential. Some familiarity with Haizea is preferred, but not strictly necessary.
64 1 Ruben S. Montero
** *Mentor*: Borja Sotomayor: borja@cs.uchicago.edu
65 1 Ruben S. Montero
66 20 Tino Vázquez
67 20 Tino Vázquez
h3. Implement new scheduling algorithms in Haizea
68 20 Tino Vázquez
69 24 Borja Sotomayor
** *Description*: The "Haizea":http://haizea.cs.uchicago.edu/ Lease Manager can be used as a drop-in replacement for OpenNebula's scheduling daemon. Haizea's scheduling code currently supports scheduling VMs for best-effort leases, advance reservation leases, deadline leases, and immediate leases (see the Haizea website for more details on what these leases are). However, there are other types of interesting leases that could be supported in Haizea such as lease futures (where a user wants guaranteed resources at some point in a known time interval, but doesn't know exactly when), etc. The scheduling problem becomes more interesting when even more policy-driven constraints are added (Haizea includes a policy engine). The project goals are open-ended, and it is up to the student to propose specific scheduling algorithms or new types of leases he/she wants to implement and experiment with. This project can be an excellent learning experience for students (specially at a graduate or advanced undergraduate level) who are interested in resource management, VM scheduling, etc.
70 16 Borja Sotomayor
** *Requirements*: Some knowledge of Python is essential. Some familiarity with Haizea is preferred, but not strictly necessary. Just to be clear: no knowledge of scheduling algorithms is strictly required; this is a project that will allow you to learn about them.
71 16 Borja Sotomayor
** *Mentor*: Borja Sotomayor: borja@cs.uchicago.edu
72 1 Ruben S. Montero
73 1 Ruben S. Montero
74 24 Borja Sotomayor
h3. Appliance Catalog for OpenNebula
75 24 Borja Sotomayor
76 1 Ruben S. Montero
** *Description*: Current VM descriptions in [[OpenNebula]] are based in low-level image/device mapping pairs. The ability of choosing a VM based on a set of characteristics will ease the deployment of pre-configured applications. For example, a sysadmin could request a "Linux machine with LAMP". In this project we will developing this tag based VM catalog.
77 24 Borja Sotomayor
** *Links*: "OpenNebula VM description file":http://www.opennebula.org/doku.php?id=documentation:rel1.4:ug
78 24 Borja Sotomayor
** *Requirements*: Ruby programming and DataBase. In this project you'll be interfacing with OpenNebula, and you will have the opportunity to learn the basics of virtualization and cloud computing. Difficulty: medium
79 30 Ruben S. Montero
** *Mentor*: Javier Fontan: jfontan@fdi.ucm.es
80 24 Borja Sotomayor
81 24 Borja Sotomayor
82 16 Borja Sotomayor
h3. Haizea Management Console
83 16 Borja Sotomayor
84 16 Borja Sotomayor
** *Description*: [Note that this project can be done in collaboration with the "!OpenNebula Management Console" proposed above]. The "Haizea":http://haizea.cs.uchicago.edu/ Lease Manager can be used as a drop-in replacement for OpenNebula's scheduling daemon. However, when querying OpenNebula through its API and CLI, some information is not available to users (particularly information related to leases). The goal of this project is to develop a web-based interface to Haizea, the centerpiece of which should be an AJAX calendar-like interface showing all the leases currently scheduled by Haizea. This interface should also allow users to create new leases, cancel leases, etc.
85 1 Ruben S. Montero
** *Requirements*: A good knowledge of web programming is essential (the platform to use is left up to the student). Some familiarity with Haizea is preferred, but not strictly necessary.
86 1 Ruben S. Montero
** *Mentor*: Borja Sotomayor: borja@cs.uchicago.edu
87 18 Borja Sotomayor
88 24 Borja Sotomayor
h3. Improve fault-tolerance in Haizea+OpenNebula
89 1 Ruben S. Montero
90 24 Borja Sotomayor
** *Description*: When using OpenNebula and Haizea together, Haizea does not react to unexpected changes in the physical resources or the VMs. OpenNebula's new hook mechanism should be used to make sure that Haizea is aware of when an unexpected change happens. Additionally, Haizea does not react to delays in the schedule. For example, if Haizea estimates that an operation (such as a suspension) is going to require T seconds, but this operation ends up taking T + 10 seconds, Haizea is unaware of this delay and proceeds with its regularly scheduled operations. At the end of an operation, Haizea should query OpenNebula to see if the operation completed and, if not, it should reevaluate its schedule to accomodate this delay.
91 24 Borja Sotomayor
** *Requirements*: Some knowledge of Python is essential. Some familiarity with Haizea is preferred, but not strictly necessary.
92 24 Borja Sotomayor
** *Mentor*: Borja Sotomayor: borja@cs.uchicago.edu
93 21 Jose Luis Vazquez-Poletti
94 26 Jose Luis Vazquez-Poletti
h3. OpenNebula goes Academic!
95 24 Borja Sotomayor
96 21 Jose Luis Vazquez-Poletti
** *Description*: In Computer Science studies there are many practical subjects that demand access to PC's with certain applications installed. These resources are usually limited by means of schedule and occupation, making homework preparation difficult for the students. The objective of this project is to create a frontend over OpenNebula that a student will use for specifying subject to prepare. The system will then provide the user access to a fresh VM, corresponding to the desired subject.    
97 21 Jose Luis Vazquez-Poletti
** *Requirements*: Web programming can be an idea, but the system should provide all possible mechanisms for a "click and use" behavior, so a reasoned proposal for implementation will be considered. In this project you'll be interfacing with OpenNebula, and you will have the opportunity to learn the basics of virtualization and cloud computing. Difficulty: medium-low.
98 21 Jose Luis Vazquez-Poletti
** *Mentor*: Jose Luis Vazquez-Poletti: jlvazquez@fdi.ucm.es
99 21 Jose Luis Vazquez-Poletti
100 25 Tino Vázquez
h3. OpenNebula OCCI Implementation update
101 25 Tino Vázquez
102 25 Tino Vázquez
** *Description*: The OGF Open Cloud Computing Interface has been implemented in OpenNebula at a very early stage. In fact, the specification wasn't complete at the time of the implementation, so voids had to be filled in order to have a fully working prototype. Nowadays, the OCCI spec has matured, and includes new features (collections, metadata in HTTP headers) and new representations, like XHTML 5. as a reference implementation, it is important to catch up with the specification, so an implementation update of the OCCI interface is a must-have.      
103 25 Tino Vázquez
** *Requirements*: Web programming, XHTML5, HTTP. In this project you'll be interfacing with OpenNebula, and you will have the opportunity to learn the basics of virtualization and cloud computing. Difficulty: medium.
104 25 Tino Vázquez
** *Mentor*: Constantino Vázquez Blanco: tinova@fdi.ucm.es
105 25 Tino Vázquez
106 25 Tino Vázquez
h3. OpenNebula Service Management
107 25 Tino Vázquez
108 25 Tino Vázquez
** *Description*: Since its conception, an effort was made to keep OpenNebula agnostic to the service being executed within the VMs. Nevertheless, experience has shown that an extension to OpenNebula to handle services as an entity can be extremely useful. This project involves the (guided) creation of a Service Descriptor Language(to describe the service as a collection of VMs with dependencies) and the development of a new command ('oneservice')  that will understand such language and handle the service execution.   
109 25 Tino Vázquez
** *Requirements*: Ruby, XMLRPC. In this project you'll be interfacing with OpenNebula XMLRPC API, and you will have the opportunity to learn the basics of virtualization and cloud computing. Difficulty: medium.
110 25 Tino Vázquez
** *Mentor*: Constantino Vázquez Blanco: tinova@fdi.ucm.es
111 25 Tino Vázquez
112 29 Ruben S. Montero
h3. Virtual Environment Builder Integration
113 1 Ruben S. Montero
114 29 Ruben S. Montero
** *Description*: A VM builder provides the developer with easy to configure, lightweight, reproducible, and portable virtual machines. "Valgrant is one of this tools":http://vagrantup.com/, and it is based on "Sun's Virtual Box":http://www.virtualbox.org/ to create the VMs and chef to configure/install them. This projects aims to extend the provisioning engine by taking advantage of the "OpenNebula Cloud API":http://opennebula.org/doc/oca/. In this way VMs could be provisioning from a cloud and automatically set for a web development.
115 29 Ruben S. Montero
** *Requirements*: Some knowledge of Ruby is essential. You should be able to understand the basics of Linux administration and networking. Difficulty: medium.
116 29 Ruben S. Montero
** *Mentor*: Ruben S. Montero: rubensm@dacya.ucm.es
117 16 Borja Sotomayor
118 1 Ruben S. Montero
119 29 Ruben S. Montero
h3. Grid Authentication Mechanisms for Cloud Interfaces
120 29 Ruben S. Montero
121 29 Ruben S. Montero
** *Description*: OpenNebula Cloud APIs (OCCI and EC2 Query API) use standard web authentication mechanisms, usually based on HTTP basic plus some sort of cryptographic support. In this project we will extend the OpenNebula Cloud interfaces to include support for Grid authentication mechanisms. Grid security is based on x509 certificates and the concept of Virtual Organizations. By integrating this distributed security schemes, this project will allow us to architect federated clouds.
122 29 Ruben S. Montero
** *Requirements*: Some knowledge of Ruby, Web programming, HTTP and public key security. Difficulty: medium.
123 29 Ruben S. Montero
** *Mentor*: Ruben S. Montero: rubensm@dacya.ucm.es
124 29 Ruben S. Montero
125 29 Ruben S. Montero
h2. Blue-sky Ideas
126 29 Ruben S. Montero
127 6 Ruben S. Montero
These are shorter, more informal, project ideas proposed by mentors. They can be used by students as a starting point to propose a new project:
128 24 Borja Sotomayor
129 16 Borja Sotomayor
** Write additional VMM drivers for OpenNebula (KVM, Xen, and VMWare are supported currently, but the OpenNebula architecture can accommodate drivers for lots of other VMMs).
130 6 Ruben S. Montero
131 24 Borja Sotomayor
132 16 Borja Sotomayor
h2. OpenNebula Mentors
133 16 Borja Sotomayor
134 18 Borja Sotomayor
** Javier Fontan: jfontan@fdi.ucm.es
135 24 Borja Sotomayor
** Ignacio M. Llorente: llorente@dacya.ucm.es
136 24 Borja Sotomayor
** Jaime Melis: j.melis@fdi.ucm.es
137 18 Borja Sotomayor
** Ruben S. Montero: rubensm@dacya.ucm.es
138 18 Borja Sotomayor
** Borja Sotomayor: borja@cs.uchicago.edu
139 21 Jose Luis Vazquez-Poletti
** Tino Vazquez: tinova@fdi.ucm.es
140 1 Ruben S. Montero
** Jose Luis Vazquez-Poletti: jlvazquez@fdi.ucm.es