Blog Article:

GSoC 2021 – Student Project Ideas

Alberto P. Martí

Open Source Community Manager at OpenNebula

Feb 19, 2021



OpenNebula is a powerful, but easy-to-use, open source solution to build and manage private, hybrid and edge clouds. It combines virtualization and container technologies with multi-tenancy, automatic provision and elasticity to offer on-demand applications and services. OpenNebula integrates multiple virtualization technologies, from VMware and KVM for fully virtualized clouds, to LXD and Firecracker for containerized and serverless deployments. It supports containers from Kubernetes or Docker Hub along with virtual machine workloads, and can easily deploy hybrid and edge environments with resources from AWS, Microsoft Azure and Equinix Metal. OpenNebula is an active member of the Linux Foundation, CNCF, LF Edge and GAIA-X.


OpenNebula is also the leader and main developer of the EU-funded ONEedge project. In recent years, companies focusing on the gaming, Internet of Things, social networking and telecommunication industries have flourished. They have been pursuing strategies involving mainly the development and production of new and improved services and capabilities, which have latency as their key factor. Despite this push forward, many of these companies do not have a platform to effectively deploy their applications and they cannot afford to create and maintain one. The ONEedge project aims to develop and provide an innovative software-defined Edge Computing platform that will be able to host and provide resources and help to its users and devices.

Required Skills

To work on any of these projects, you will need to be familiar with the languages and technologies used to write OpenNebula and its drivers with third-party technologies and cloud providers. 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 beforehand).
These are some of the skills you should have:

  • Competent in programming, in the same or similar languages as defined by the specific requirements of each project.
  • Being familiar with Linux platforms, virtualization technologies (e.g. KVM, VMware, LXC/LXD or Firecracker) or application containers (e.g. Docker, Kubernetes, etc.) is not required, but it certainly helps.
  • Working knowledge of Git (i.e. GitHub).
  • Fluent in English and/or Spanish

Please, note that each project idea may have specific requirements.

Project Ideas

Driver for Google Cloud Platform

  • Description: OpenNebula allows cloud bursting to public cloud providers. Currently AWS and Azure are supported. The work will consist of developing a new driver to deploy and manage VMs in GCP.
  • Requirements: Experience with scripting languages (Ruby, Python or similar) and basic knowledge of APIs.
  • Mentor: Alex Huertas

Driver for Rancher

  • Description: Rancher is an open source software stack to run and manage containers and Kubernetes clusters. OpenNebula can be configured as a node driver in Rancher by using the OpenNebula docker-machine driver. The work consists of improving the Rancher UI driver for OpenNebula in order to create node templates.
  • Requirements: Experience with UI frameworks and languages (Javascript, Ember JS framework)
  • Mentor: Marco Mancini

Improvements to FireEdge

  • Description: FireEdge is a web interface that allows high level user interaction with OpenNebula. It’s built using Node.js for the back-end and React.js and Redux for the front-end. The work will include development of new features, testing and documentation of new features.
  • Requirements: HTML5, CSS3 and Javascript knowledge. Basic knowledge of new frameworks is very welcome (e.g. React, Angular, Vue, Svelte …)
  • Mentor: Sergio Betanzos

Create a Rust Binding for the XML-RPC API

  • Description: Currently OpenNebula has bindings for Ruby, Go, Python and Java languages. Taking into account the relevance Rust language has gained in the last few years, we’d like to develop a new Rust binding that facilitated third-party integration with OpenNebula using this language. The work will include development, testing and documentation of the new binding.
  • Requirements: Basic API knowledge, basic understanding of low level programming languages (e.g. C, C++, Rust, …).
  • Mentor: Christian González

Improve Terraform Provider

  • Description: Increase the coverage of the Terraform Provider that is being developed in collaboration with Iguane Solutions by adding support for new OpenNebula resources and features. It will also include testing and documentation of the new features.
  • Requirements: Programming (Terraform providers are written in Go but knowledge of similar languages would be enough).
  • Mentor: Christian González

Add OpenvSwitch support for Firecracker MicroVMs

  • Description: OpenNebula networking drivers support two different technologies, linux bridges and OpenvSwitch. Currently Firecracker MicroVMs only supports linux bridges. This proposal includes the development of the necessary scripts for supporting OpenvSwitch based networking along with Firecracker MicroVMs, documentation and testing.
  • Requirements: Basic networking knowledge and experience in scripting languages (e.g Ruby, Python, Bash, …). No previous experience with Firecracker or OpenvSwitch are required.
  • Mentor: Christian González

gRPC Interface for OpenNebula API

  • Description: gRPC is a high performance remote procedure call (RPC) framework. The idea of this project is to develop a gRPC bridge to OpenNebula core. It will implement OpenNebula API calls (or a subset of them) as gRPC calls. The project also requires to develop the base client side runtime.
  • Requirements: Some knowledge of C++ and Ruby is essential.
  • Mentor: Rubén S. Montero


Submit a Comment

Your email address will not be published. Required fields are marked *

one + nine =