From Fedora Project Wiki

This is a basic template of information you can use for filling out a GSoC application for the Fedora Project.


Contact Information

  • Email Address:
  • Freenode IRC Nick: alackey
  • Code Forges (GitHub, GitLab, BitBucket, etc.):

Questions to answer

Why do you want to work with the Fedora Project?

The thing about all of these forge websites is that each project is heavily owned by one person and categorized as being the owners project. How about project that are heavily open sourced and belong to the open-source community? This is where Pagure comes in. Pagure helps create projects that are based around being owned by the community or group in which open sourced applications should be based around. Pagure has been doing these things, but it needs to be a complete project to be widely excepted which includes some features that GitHub and other forge websites have. I am going to help solve this problem by making Pagure a complete forge website and including major features like private projects, contributors section, and nicer references to lines in files changed.

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

I have also been working on Pagure and have two merged pull requests. One to add the creation date to the repositories Overview tab and the other to display newest closed issues first.

Have you participated in GSoC in the past? If so, what year(s) and which organization(s)?

No I have not.

Do you plan to continue contributing to the Fedora Project after GSoC? If yes, what sub-project(s) are you interested with?

Yes do plan on continuing to contribute to Pagure because I think it is a great forge with focusing a community project and is simple to use.

Why should we choose you over other applicants?

I have two projects that are written in python, specifically Flask and Django. One of them is finished and online while I am working on the other. I have also been working on Pagure and have two merged pull requests. One to add the creation date to the repositories Overview tab and the other to display newest closed issues first.

Have you contributed to any other open source organizations or projects? If so, do you have artifacts you can show so we can see your skill set(s)?

I have contributed to a somewhat small python tool that is on GitHub, but nothing very large.

Do you have any other open source experience (even if not coding-related)?

I like to use open source programs whenever I can, especially since a lot of open source software is built for Linux which I love use. Open source usually comes to all platforms faster, is light, fast, and has a community who love to improve the product as a user.

Proposal Description

Overview and The Need

Any relevant experience you have

I have hands on experience in most of the things that you ask to implement the project.

  • Python
    • I have 2 web projects that are written in python, and will be working on a python based website in for the next couple weeks in a group of four.
  • HTML/Javascript/CSS
    • I have been using these on and off for the the past 1-2 years with most of my experience being with bootstrap.
  • Jinja2 and Flask
    • I have used these in one of my projects where I use Flask with SQLAlchemy, but I have also used Django which gives me a good base of python web development.

How do you intend to implement your proposal

  • Phase 1:
    • I will implement private repositories. I would add an attribute to the repositories for if the project is private or not, which will be a filter when browsing projects. The attribute and the usernames will be a conditional on whether the user can view the project when a direct URL is used. If a project owner wants to only have public issues we can not display all tabs other than Issues, and maybe implement extra private issues with just a private attribute.
  • Phase 2:
    • I will have commits and files changed to have the same line numbers as the actual file. Pagure already displays the lines at which the code starts at in the Files Changed tab, so I will go from there. I will check whether the line was added or removed if it was added or not changed I’ll increment the line number, or if it was removed I’ll not display a line number.
  • Phase 3:
    • I will add a contributors section. I can use the commit “git shortlog –s –n –e” in some way to generate a nice list of the contributors then add a section in each project for it.

A rough timeline for your progress

  • May 23 - June 10 (3 weeks)

School and Final Exams so 4-6 hours a day

    • I will implement a way to make a project private.
    • I will make sure people with a direct link to a project are unable to view the project.
  • June 11 - July 1 (3 weeks)
    • Private/Public issues
    • Invited contributors
    • Any feature that comes up.
  • July 2 - July 15 (3 weeks)
    • Same line numbers for commits and files changed.
  • July 16 - July 29 (2 weeks)
    • I will look for the best way to run “git shortlog –s –n –e” for each repository.
    • work with ryanlerch to create and decide on the best UI for contributors.
  • July 25- July 31 (1 week)
    • Mid Semester Examination
  • Aug 08 - Aug 14 (2 weeks)
    • Implement the contributors section.
    • Make sure existing projects are have this implemented.
  • Aug 15 - Aug 21 (1 week)
    • Fix bugs.
    • Document unfinished or in progress work.

Final deliverable

Features that I implemented to make Pagure a competitive forge website.

Any other details you feel we should consider

I have been working with Pagure as a large open source website and I find it great that all of the people there are helpful and knowledgeable. It be great to work with even more and work with python even more. I already have a couple websites that use python as the back end, including Flask, and have been using a forge (GitHub) for about 2 years now so I have an understanding of what kind of website Pagure is.