From Fedora Project Wiki

GSoC proposal for 'Setup Gitlab as a front end for Fedora Hosted git repositories' [as submitted]

Contact Information

Name: Harish Ved

Email Address: ved.harish3@gmail.com

Telephone: +91 7275799969

Blog URL: http://vedharish3.blogspot.in/

Freenode IRC Nick: something on freenode. You can find me on #fedora-admin or #fedora-ruby


Why do you want to work with the Fedora Project?

I have been using various linux distros since I started using linux around 4 years ago. I found Fedora as one of the most well-documented, systematic and rapidly updating distro and I kept using it. I am currently using Fedora 19. As I have been a long-time user, I would like to start contributing to the Fedora community.

Moreover, the Fedora project is very large and diverse. The experience that I will gain from contributing to Fedora is not something every organization can provide. I definitely have the interest and curiosity to become a part of the Fedora project.


Do you have any past involvement with the Fedora project or another open source project as a contributor?

I have not been involved with the fedora community as a contributor since long but I have recently started contributing as a Fedora Package maintainer with uploading a barista-package as a bug-fix. I find GSoC as a very good opportunity to start moving in the direction of being a long-term contributor to the fedora community.


Did you participate with the past GSoC programs, if so which years, which organizations?

No, I have not participated in the past GSOC programs.


Will you continue contributing/ supporting the Fedora project after the GSoC 2013 program, if yes, which team(s), you are interested with?

I will definitely be willing to continue contributing to the Fedora project and invest much more of my time in giving back to the community.

I would like to start off as a package maintainer for fedora. I have recently learnt ruby and I am very interested in the Ruby_SIG group of the fedora project. This project, itself, would require long-term package maintainers which I would be very much glad to be. I am open to any other opportunities which may co-exist with my interests and my skills.


Why should we choose you over other applicants?

I think I have the following advantages to offer:

1. I am acquainted with how I need to proceed for the project of 'Setup Gitlab as a front end for Fedora Hosted git repositories'. I have actually gone through the packaging process for one of the ruby packages, I have run and used Gitlab on Ubuntu and I know the procedure to deploy gitlab for fedora-hosted.

2. I am planning for long-term involvement with the Fedora Project, which may be very beneficial for this project.

3. I have worked with languages like C, C++, Java, Ruby, Python, web frameworks like PHP, Django, CSS, and database languages like Oracle, Mysql, javascript.

4. I have worked as an intern with a reputed startup changerepublic.com which has given me a lot of experience in how to get things started and working along with a lot of industry exposure and knowledge of development in the real world.

5. I have very strong foundation in CS fundamentals and I study at one of the very renowned IITs.

6. I tend to get very well with my team-mates as most of my academic projects involve working in a teams.

7. I pick up new languages and technologies really fast and know how to use documentations effectively. I need a very minimal ramp-up time before I can get started with a project.

8. I effectively use the mailing-lists and irc communication channels to resolve any queries or issues I may have. I am also very comfortable using source repository and version control tools like git and svn.


Proposal Description

Project Title - Setup Gitlab as a front end for Fedora Hosted git repositories.


Gitlab is a self-hosted git management software based on ruby-on-rails. It already supports Ubuntu and other Debian/GNU linux but it is not packaged for Fedora. The aim of this project is to package and build gitlab and its dependencies for Fedora.


The need you believe it fulfills

While Fedora has its own git managed repository at fedorahosted.org, it is not the preferred method for the maintainers to use fedorahosted and some of the packages have shifted to github.com. To increase the code-base and the usage of fedorahosted.org, it would be useful to implement gitlab as a frontend for fedorahosted.org.


Any relevant experience you have

This project will require the basic knowledge of ruby and of packaging ruby gems. Knowledge of git and of systems administration especially that of web servers and authentication are required.

The experience I have in these fields is-

1. Systems administration-

At my previous intern at changerepublic.com, a startup, one of my project aim was to deploy memcache on the webserver. Hence, I have some experience in accessing web servers and authentication.

Also at that intern, we used OAuth protocol for authenticating through facebook, google plus or twitter. So, I have some basic knowledge of systems administration.

2. Packaging-

I have familiarised myself with the packaging and naming guidelines for fedora rpm packages.

For the past two weeks I have been trying to get accustomed to packaging ruby packages and have packaged a rubygem coffee script barista package for fedora 19.


3. Ruby and git-

I went through two tutorials: Ruby in 20 minutes and Ruby User Guide, to get comfortable with programming in Ruby and also successfully completed the Ruby course at CodeSchool.com

I have had experience in using version control tools such as git, gerrit and svn which may be evident from my Github profile.


How you intend to implement your proposal

The first steps for proceeding with this project includes figuring out the gems that gitlab depends on (and also their dependencies) from its Gemfile. Many will require packaging for fedora and EPEL. After all the dependencies have been resolved and tested, they would need to get past the fedora review process where the gems are reviewed to check whether the packages follow the fedora packaging guidelines. All the packages need to be successfully reviewed and added to the fedora repository. Then, Gitlab itself can be packaged for fedora and then reviewed.


The Gitlabhq project depends on around 200 gems from which around 100 are already packaged for fedora and 100 still needs to be packaged. So, the major part of the project includes packaging these gems along with their respective dependencies. Finally, a proof-of-concept is to be provided. In the final step included in the GSoC project, I will ensure that an RFR ticket is issued for the gitlabhq project. A Request For Resources (RFR) ticket means that the issuer will have to build a team around the project and continue maintaining the project for long term to keep this project from dying. Further steps would be to run it on fedora infrastructure, configure the server for $projectname.fedorahosted.org, build a community to maintain it long term. This last step would not be included in this fedora project.


Steps for this proposal

1. Compiling a list of gems Gitlab depends on. (required for GSoC)

2. Packaging the dependencies for Fedora. (required for GSoC)

3. Packaging gitlab for fedora. (required for GSoC)

4. Showing a proof-of-concept. (required for GSoC)

5. Issuing a RFR ticket for this project. (required for GSoC)

6. Deploying, Running and maintaining this project on fedora infrastructure.


A rough timeline for your progress

To proceed with this project, as suggested by Vit Ondruch, it would be best to start with a ‘testing’ instance of gitlab on fedora with the bundled gems. The initial step would be to replace the existing used gems by the ones already available for fedora. Then, to proceed, the rest of the gems will be replaced gradually, after packaging them for fedora.

Also, the Gemfile also consists of some files which are only used for development and building such as some testing frameworks and database adapters. It would be required to remove these unnecessary dependencies during packaging. So, in the test instance, a pure gitlab application will be first used with an empty Gemfile and then the gems which are strictly required will be added to it on a trial and error basis.

Also, for packaging, the easily available gems would be packaged first and hence, a larger number of packages will be created earlier on.

The project timeline roughly would be as follows.

May 27th to June 16th (Community bonding period): Interact with the Fedora project community, learn about its processes, code of conduct, etc., and interact closely with the project mentor to get into the specific details of the project.

June 17th to June 23th (1 week): Compiling a list of dependencies which gitlab depends on and creating a test instance of pure gitlab application and adding to the gemfile the dependencies which are already available for fedora.

June 24th to June 30th (1 week): Packaging gem 1-20 of the gitlab dependencies.

July 1st to July 7th (1 week): Packaging gem 21-40 of the gitlab dependencies.

July 8th to July 14th (1 week): Packaging gem 41-55 of the gitlab dependencies.

July 15th to July 21st (1 week): Packaging gem 56-65 of the gitlab dependencies.

July 22nd to July 28th (1 week): Packaging gem 66-75 of the gitlab dependencies.

July 29th to August 4th (1 week): Code cleanup for the gitlab dependencies and mid-term evaluations.

August 5th to August 11th (1 week): Packaging gem 76-85 of the gitlab dependencies.

August 12th to August 18th (1 week): Packaging gem 86-95 of the gitlab dependencies.

August 19th to August 25th (1 week): Packaging gem 96-100 of the gitlab dependencies.

August 26th to September 1st (1 week): Packaging gem 100-last of the gitlab dependencies.

September 2nd to September 15th (2 weeks): Cleanup of code, figuring out and resolving pending packages and packaging rest of the dependencies and packaging Gitlab itself for fedora.

September 16th to September 27th (2 weeks) : Providing a Fedora ISO of a remote machine running Gitlab as a proof of concept and ensuring that a RFR ticket is issued to the infrastructure team (by myself if anyone else is not up for it).

The next steps for this project will be to collaborate with the infrastructure team to host repositories using Gitlab as frontend and to maintain the packages for their updates.


Any other details you feel we should consider

I have been opting for this project for about a month before the start of student application period for gsoc and am very interested for this project.


Have you communicated with a potential mentor? If so, who?

I have been in touch with Vit Ondruch for some time now. He is a mentor for this project.