GSOC 2012/Student Application babakb/GitlabSetup

=Setup Gitlab as a front end for Fedora Hosted git repositories=

Proposal Description
Please describe your proposal in detail. Include:

An overview of your proposal

 * Packaging Gitlab for Fedora
 * Setting up Gitlab as a frontend for Fedorahosted.org

The need you believe it fulfills

 * Packaging Gitlab will give users the ability to easily setup the web application both locally and on a remote server with any installation of the latest release of Fedora.
 * Updating fedorahosted.org to use Gitlab will help improve user experience. I hope to attract new users and continue pleasing current ones with the many functionalities provided by Gitlab.

Any relevant experience you have

 * While working on small projects with teams, I have gained experience working and setting up different project management and code hosting applications, such as Redmine, trac, and Drproject.
 * I have experience setting up servers running git for which I have used on many different projects, both for school, and as small group projects.
 * My primary operating system is linux based so I am very familiar with the inner workings. I am also well-versed in using a terminal for all of my work.
 * I have created a multi platform installer for Review Board, which has given me excellent experience dealing with dependencies handling.
 * Many of my web development projects have used Ruby on Rails so I am very experienced in setting up projects similar to Gitlab, including gem dependencies and multiple versions of Rails. My past experience with Rails will help if I need to identify bugs in Gitlab. From my encounters with common bugs as well as the ability to skim through the source code quickly, I will easily be able to determine if the issue is in our setup or in Gitlab.
 * I have worked with Fedora and other linux based servers remotely, including using Amazon AWS servers, for different projects. Remote setup and debugging is second nature to me now.

How do you intend to implement your proposal

 * First, I will go through all of Gitlab’s dependencies and check for currently available packages. I will use Gitlab’s install guide as a reference: https://github.com/gitlabhq/gitlabhq/blob/stable/doc/installation.md
 * Then I will create a spec file following the guidelines for ruby packages. If any of the dependencies are not yet packaged, I will have to create packages for them myself. The major two, gitolite and ruby, are already packaged so I do not see too many roadblocks here.
 * After finalizing the packages and pushing them upstream, I will begin working on setting up Gitlab as web-frontend for Fedora projects.
 * I will go through the steps in the detailed install guide that I did not cover during packaging. These will be configuration and customization to suit what fedorahosted.org requires.

Final deliverable of the proposal at the end of the period

 * Fedora packages for Gitlab (With all its unpackaged dependencies)
 * Gitlab working on fedorahosted.org (or subdomain depending on mentors desire)

A rough timeline for your progress

 * 2 weeks to become comfortable with the procedure of creating and submitting packages to be reviewd before pushing them to Fedora upstream. This includes learning about spec file syntax and rpm deployment.
 * 4 weeks to create packages of Gitlab and all of its dependencies that are unpackaged. This includes going through review and pushing to Fedora upstream.
 * 1 week backporting Fedora rawhide packages to the Fedora 18 future release.
 * 1 week testing Fedora rawhide and Fedora 18 packages.
 * 3 weeks to set Gitlab up on the server as the new web-frontend, including administration and configuration.
 * 1 week testing functionality using test projects, creating documentation for the steps carried out during setup to enhance the installation. This will be useful for any further deployment in the future.
 * Future: Discuss potential migration of currently hosted projects to Gitlab.

Any other details you feel we should consider
I do not have any other commitments this summer, and am willing to start early. I am very excited to work with the Fedora community and will continue expanding and maintaining the project after the GSOC period. My goal is to be enthusiastic and passionate enough to make others interested in helping with this project to keep it maintained. Here are some of my past experiences:
 * (Sept. 2011 - Dec. 2011) Developed a room booking application for instructors at A. Y. Jackson High School, Toronto, ON as part of course work for a Software Engineering course offered by the U of T using PHP
 * (Summer 2011) Created native installers for different platforms for Review Board using Python and Django to help automate installation for Review Board as a GSOC project
 * (May 2011 - Dec 2011) Worked on an online learning management system in summer 2011. Developed a timetable scheduler in Ruby on Rails and redesigned the UI using HTML5, CSS and Javascript
 * (Dec 2009 - August 2010) Developed a study group application using PHP and Yii framework which provided users with the ability to connect to other students in the university to form study groups

Have you communicated with a potential mentor? If so, who?
I have had the chance to speak with Dan Allen to clear up some questions and obtain a good understanding of the direction in which the project is headed.