Miguel Gaiowski

Background: Graduate student in Computer Science at the University of Campinas (Unicamp), Brazil, graduated in 2011 with a major in Computer Engineering. I've been using Django since 2008, I'm fluent in Python, bash script, (also C, C++, and others not relevant here). I've worked for the Tutoo Project (http://librixdev.las.ic.unicamp.br/projeto_librix/ in portuguese, sorry), where we developed a Gentoo based distro customized to fit the needs of the sponsoring computer manufacturer. I'm confident I have what it takes to deliver this project.

Project title: Virtual Image creation web interface

Project details: Create an easy to use web interface that lets the user select packages and other customized settings, delivering their own Debian image, preconfigured to their needs. The backend of the system is gonna be written mainly in bash script and python. These scripts will use chroot+deboostrap to do the core job of creating the image with the settings given by the frontend. I think this backend part should work by itself, so that we don't limit this system to work only with the web interface, allowing people to create their images from a command line interface as well, and maybe in the future having a GUI to aid the process. The frontend will be a web interface, using python with Django. The user will be able to select packages to be installed or removed, set up custom scripts that shall be executed on the first boot or as cron jobs. This will help admins set up the images so that the work left to be done after installing it is minimized. I can foresee some problems like package dependencies, and I'm already thinking of good solutions. An example I can think of is the user explicitly selects a package to be removed and another, dependent on the first, to be installed. The frontend service should be able to identify these and point out to the user that those settings are not compatible.

Synopsis: From my point of view, this project has two parts: the web interface that takes the input from the user and a backend utility that receives the data from the web interface (and could also work by itself, always a plus) and generates the custom image.

Benefits to Debian: Debian users will be able to easily get customized Debian images that fit their needs. Unexperienced users will be able do this just as easily as Debian experts would. This will make the deployment of the distribution in virtualized environments much more accessible. Debian developers will also benefit from this, having easy to make customized environments to test whatever feature they are working on.

Deliverables: A utility that takes the configuration of the image and delivers the custom image. A web interface that lets novice users configure their own images.

Project schedule:

April 23 - May 10: Review documentation of how to create Debian images.

May 11 - May 30: First draft of the unified image creation utility.

June 01 - June 30: First draft of the web interface, working with the backend utility

July 01 - July 30: Fix the rough edges of both system parts, prettify the interface, create pre-defined template configurations, write more tests (which will be done throughout the coding process).

Aug 01 - Aug 10: Documentation and final polishing of the code.

Aug 10 - Aug 24: Spare time to do something we find interesting or necessary during the previous months and have not accounted for.

Exams and other commitments: I will have a couple of exams in June.

Other summer plans: None

Why Debian?: It's the first distro that I used. Always loved it.

Are you applying for other projects in SoC? No. This is the one and only project that really got me interested. I really like the idea behind it, and I know I have the necessary skills.