Name: Genaro Cueva


Background: I'm a student and I work as a freelancer. I'm in last year in university. I'm very organized and responsible, also I enjoy programming and studying, I like to read articles about technology. I like to spend time coding programs. I like to use Debian and I know a lot of Java (it was my first language), also I know bash (a little more than Java), but when I code I prefer to use Python + virtualenv + git. About experience, I was working as a freelancer in some projects (two of them were with Django to do an application about indicators about garbage's collection and the other was about an application to help people to choose a career based in their abilities).

Projects: Well, I'm applying to Debian in two projects, because of that each project have to be read in its own Google Melange Page Implementation of Team Activity Metrics web interface with Django, and following other Debian pages format. and the other is Implement all the infraestructure to make possible to create and manage images with a web interface for Debian images.

Exams and other commitments: About my schedule, from Monday to Saturday I have to go university to take classes. I'm in last year. I'm at university from 6:00 pm to 10:30 pm. I'm considering the time that I'm in library and the time for homework. In the morning, I have free time for GSOC about 4 to 5 hours per day. And in the afternoon I have 2 to 3 hours per day. I will haven't vacations during the year. The exams in the university are one week, but i'm not going to have problems with my schedule.

Other summer plans: Nothing.

Why Debian?: I learned about GNU/Linux in 2007 when I participated in FLISOL. Also when I started to use GNU/Linux the first distro that I knew was Debian, and I like it a lot because I like the way that people work in Debian. Also I'm going to be proud of helping Debian to be better for users.

Improving Debian Team Activity Metrics

Project details: Well, I choose the idea from the ideas project list, also I plan to maintain the interface without JS, and I plan to use Django and its benefits (templates, views, ORM) to write an RestAPI to access data; if it's neccesary I'm going to reorganize everything the information and put it in a clear way. Also I plan to use matplotlib to generate the graphics to see in the page. I know that the Debian Team Metrics collects data and according to the mailing list, they collect data from various sources, and they have methods and functions to collect data, also according to the mailing list I know that they have the data on a database. The web page has to stay according to the Debian guidelines and the appearance in the other Debian web pages. According to my project schedule, I plan to have five periods:

* First period. Requirements. I have to make a list of the functions that we want to have (list of top commiters, list of commits in a team, team with more commits); I need to ask to my mentor about desired functions that we need in the project, and then choose the functions that I'm going to code in the API. Also I have to define the ORM to interact with the API, not to big, I'm thinking in two or three classes to integrate the functions that we are going to create with the part of the graphics. In the ORM I'm going to put what class is going to go with what function of graphic; also I have to define with to my mentor about the architecture of the RestAPI (I plan to make something like the Twitter Rest API) and define all the methods (POST and GET methods) of the functions.

* Second period. Analysis. I'm going to make the prototype of the web page, first I'm going to do mockups to show how is going to be the web page and then ask to my mentor to validate the mockups. I'm going to follow the style of other's Debian pages. I plan to use media-queries to make a web page that can be fitted to other devices (tablets, smartphones). Also I plan to make a cron script that sincronize the graphics with the information of the application, and then the graphic is going to be generated each time that information is modified, and then the client is not going to generate the graphic each time that it's going to access to the web page. It's going to redound in less load and avoid of javascript. I plan to use matplotlib to generate the graphics. I plan to do the prototype of the application using Django and define all the templates.

* Third period. Design. This part is going to be to do a design of the application making some methods of the application and write the API methods. All the work has to be approved for the menthor.

* Fourth period. Hard Code. I have to review the code that I did and if everything it's ok, I'm going to continue coding all the methods that I can do in four weeks, also I have to write some code about the graphics that I did in the second part. With all the information, I'm going to ask to my mentor if it's ok.

* Fifth period. Testing. I have to test everything that I did, also for future metrics that we'll be included in the project I have to read documentation to use the API and include more functions. If I encounter an error and I have to rewrite methods and functions, I plan to do it fast to continue testing everything.

Synopsis: Implementation of Team Activity Metrics web interface with Django, and following other Debian pages format.

Benefits to Debian: Debian Team can use the web interface to see the activity in the teams, also they can use the api to take data about the teams.

Deliverables: Web interface of Team Activity Metrics made with Django, the RestAPI (with the methods), classes to generate graphics, cron scripts, documentation of how to continue adding more metrics.

Project schedule: Well, it's very hard to have an schedule because every functions that we need are not known, I didn't decide how to put here, but a first approach can be put four periods:

* Requirements (three weeks) (21 May - 11 June): Make a list of desired functions, and what functions that we have, and also ask to my mentor if it's ok.

* Analysis (three weeks) (11 June - 2 July): The second part is to make a prototype of the interface (because the users have to feel that the look can be the difference).

* Design (one week) (2 July - 9 July): The third part can be to think how to made everything in a clear way (define classes and methods name), also the architecture for the program (how to connect classes and define how the parts are going to interact), and think about technical resources (for the graphics (maybe matplotlib)

* Hard Code (four weeks) (9 July - 6 August): This part is review the code that I did in part two and three, and if it's necessary return to part two or three.

* Testing (two weeks) (6 August - 20 August): If something is wrong, or I have problems it's time to improve it and test the program (especially functionality).

Virtual Image creation web interface

Project details: Well, this project is from the ideas project list, also I plan to regroup packages according to the use of the user, and generate the script in bash to make the virtual image, I plan to use Django, and I plan to make an small API to test everything and if it's neccesary to change something I'm going to try not to affect other code sections.

* First period. Study. I have to analize all the information that we have for the project, also I have to define some classes and scripts for the application, I plan to make a diagram for the architecture how is being to be generated and how is going to generate the script, and some methods to import and export choices of installations. In this part I have to do it usable for people without knowledge of programming, also I plan to define what packages we can include in the default installation.

* Second period. Code and design. Well, in this part I have to do a list of packages and try to classified them in groups for default installations, also I have to define the ORM for users (I plan to use Django Model User) to access pages and link each user with a file ssh to access the image, maybe the script of the image generated can be used for others users; also I have to define the part of the API that is going to be used in the application. For this part, I have to ask to the mentor about what they want and according to it put the information in a way that we can use the API in the future, with this, the next part it's to define the design, first I plan to do a mockup and ask to the mentor if it's ok. Second, if the mentor says that it's ok I can do the interface with Django Templates, for this part I plan to use media-queries to do it more accessible with tablets and (maybe) smartphones, I have to follow Debian page's format to do it according to the other web page's project (always avoid javascript). If everything it's ok I'm going to code the views, maybe one file view for public access, the other for accesing, and the last file view for manipulation of the images.

* Third part. Testing. I put one week, to test everything and probe a lot, to fix bugs, if I need to rewrite code I have to do it fast. The other time is for continue testing and making more code and functions, I plan to write documentation about that I did to animate people to continue adding more functions, also after the GSOC I plan to continue improving the project based on the comments of people.

Synopsis: Implement all the infraestructure to make possible to create and manage images with a web interface for Debian images.

Benefits to Debian: Debian users can take Debian images and preconfigure it, also with the web interface the process is going to be easy and fast. Also we can gain more people that it's not programming and do debian more used for people.

Deliverables: Web interface (code of the web interface, mockups), small API (to interact with commands) and documentation (to animate people to contribute), some scripts for default installations.

Project schedule: Well, I have defined that I need to work hard in this project to complete everything, for me I need three periods:

* Study (three weeks) (1 May - 11 June): Analize all the information, and propose the structure and the way that everything is going to work.

* Code and design (five weeks) (11 June - 16 July): Make a prototype and code the Rest-API and start to test it and integrate with the other components.

* Testing (one week) (16 July - 23 July): I'm going to review the code, and if it's neccesary to rewrite code to complete the functionality.

Additional Information: You can see my code in and