Student Application Template

To fill this in, copy the source text. Please don't rename the template.

This is a suggestion for the kind of information we'll find useful from students in their submissions. Remember -- you're going to be committing to several months' work. The more information and planning you can provide up-front, the more we (and Google!) will have to go on when we're ranking your application. Do not forget adding your submission at SummerOfCode2014/StudentApplications

From December 2011 till March 2012 I participated in Gnome Women Outreach Program and I was working on Empathy. The work during my internship was basically about design, implementing some new features and fixing bugs mostly about IRC. I also did a lot of refactoring of the code since the change from GTK2 to GTK3. II participated in Google Summer of Code 2012 and I was working on Gnome-Boxes. My project’s intention was to implement Save/Load (Import/Export) of Virtual Machines. Initially, I was working on implementing bindings for libvirt in libvirt-glib package and implementing the functionality in Boxes. Libvirt-glib package comprises of 3 libraries: libvirt-glib, libvirt-gobject and libvirt-gconfig. Since at that time Boxes was a new project, most of the bindings that were needed were not implemented. So I learned a lot about libvirt, libvirts API, QEMU, KVM, and the lifecycle of a Virtual Machine. During the export of VM, Boxes downloads the disk image and the domain configuration The disk image and the domain configuration are joined together in tarball. The approach that was used included streams. Parameters from the domain configuration and disk image are then used for importing the VM in Boxes. Last year I was accepted to work on CernVM Online. My project was creating a marketplace for contextualization artifacts for CernVM. The marketplace displays a list of contexts that are publicly available for all users. Instead of engaging into repetitive tasks of creating new contexts, users can make use of the readily available contexts and add them to their list of available contexts, as well as pair them with the desired CernVM. My latest project is hotline for medical assistance for people who travel. The project is in Flask and PostgreSQL. Other project that I worked on involved working with: Wordpress, CSS, HTML, JS, Django and Python. As far as univeristy projects I’ve been working on projects in C, C++, MySQL, Android, Embedded C, Python, code optimization etc.

Since 2011 I have been a member of Free Software Macedonia Organization and I’ve been helping with spreading the awareness for Free and Open Software.

The main idea of the project is adding Docker provider to Bootstrap-vz. Docker provides portable deployment across machines. It defines a format for bundling an application and all its dependencies into a single object which can be transferred to any docker-enabled machine, and executed there with the guarantee that the execution environment exposed to the application will be the same. Docker is optimized for the deployment of applications, as opposed to machines. Docker includes a tool for developers to automatically assemble a container from their source code, with full control over application dependencies, build tools, packaging etc. Debian was added to the list of Dockers available official repositories. Since Docker gives you the ability to choose a base image or create and use your own, building a Debian VM for this environment, will help users that want to use their own image as base image for Docker. Also this will also help users when creating an image in Docker, from the base image. With the appropriate plugins included in the Debian image, the usage of Dockerfile (generates the image) gets even more simple. Instead of running commands for example for updating, we can add the unattended upgrades plugin to the image and just simply create a new image. After creating the image for Docker. the image can be added (pushed) to the registry of Docker images. So sharing, a ready-to-boot and clean image with others, will enable other users to get it and use the image with Docker. Adding new plugins to Bootstrap-vz is an important part of this project. Plugins are the key feature that make creation and deployment of the system even more easier. They can be very useful in configuration of the image. The initial plan is to add Salt and Chef to the list of available plugins. Salt plugin will make system management and configuration as simple, and as flexible as possible. Salt plugin configuration files will be installed to /etc/salt and are named after the respective components, /etc/salt/master and /etc/salt/minion. We can also add as setting the configuration of master and minion. Chef plugin will help with configuring & maintaining a servers, especially for images that are created for EC2, to automatically configure new machines. With this plugin users will get help with writing the recipes for how Chef will manage server applications, get the list of resources like, installing packages, running services ...

Development of more providers will be discussed with mentors.

The main goal of the project is adding a Docker provider and work on adding various plugins that affect and increase the efficiency of a Debian image. Adding Docker to the list of providers that Bootstrap-vz has to offer, makes it easier for users to get their favorite distro and use it with Docker. Because of the features that Docker is offering to the users, such as running applications regardless of the host distro, eliminating the inconsistencies between development and test or production environments etc. having a ready-to-boot image will allow the developers to concentrate on developing the application not fixing the problems of the environment itself. Plugins are a great feature of Bootstrap-vz. By adding more plugins to the list, the image will become easier to use, increasing its flexibility and achieve even greater behaviour of the bootstrapped system.

Since Docker is getting more and more popular each day, adding Docker as provider to Bootstrap-vz and adding the ability to build and generate a ready-to-boot Debian image for it will provide easier deployment for users that want to user Docker with Debian. Adding more plugins to the list will require even less user intervention when the image is used.

- add Docker provider - write articles about Bootstrap-vz usage - work on testing and refactoring the code for Google Computer Engine - add various plugins for greater modification of the bootstrapped system - adding examples for usage in documentation - add various plugins

I can start to work when the bounding period begins.

before 19 May: - continuous communication with mentors - discussions about needed functionality - getting more familiar with the code, by implementing a plugin - help testing and refactoring Google Computer Engine provider

19 May - 1 June: - start to work on implementation of Docker provider - meanwhile start to work on plugin implementation (Salt)

2 June - 15 June: - continue to work on Docker provider - testing the implemented code - add examples of usage of current plugins and providers to Documentation

16 June - 29 June: - testing plugin and Docker - discuss what Docker needs for further implementation - midterm evaluation

30 June - 13 July: - finishing work on Docker - start to work on Chef plugin - discuss further development of adding new providers

14 July - 27 July: - start to work on implementation of new provider - write documentation for Docker

28 July - 10 August: - fixing bugs - work on adding another plugin - document changes that are made

Till 18 August: - fixing bugs - making final changes

*** Implementation of every functionality and development of other plugins will be first discussed with the mentor and if needed there will be changes to the timeline, so that wanted functionality is accomplished.

No. My presentation of the final paper is around middle of September.

No plans

Throughout my experience I had the chance to work and develop on various distros and on various Open Source projects yet I never really got the chance to contribute to Debian. I choose this project because I believe that contributing to a project that would make a distro such as Debian, even more accessible, usable and easier to deploy helps users in getting what they want the easy way. Since I already have experience with virtualization and building and deploying images that require as little user input as possible, I think that this is the right project and the right choice for me.

Yes, Fedora College