From Fedora Project Wiki

Project Title : Make pagure adaptable for pkgs.fedoraproject.org

Contact Information

    * Pagure: vivekanand1101
    * GitHub: vivekanand1101

About Me

  • I’m a Junior student at Indian Institute of Information Technology, Allahabad majoring in Information Technology.
  • I have been working in Python for about 2 years now. I also have experience in flask, Django, have worked with SQLAlchemy and Scrapy.
  • I started using open source softwares about one and half years ago when i first used Scrapy for one of my projects. Ever since then, i have found interest in open source. Anitya was my first project to which i contributed for fedora, which was about in Aug-Sept 2015. Then i moved to Pagure, for which i have been contributing since then.


Why do you want to work with the Fedora Project?

Fedora is my favorite operating system as i find it simple, easy to use and best suited for my web application development environment. Also, as i have been contributing to fedora projects, i have felt a lot of improvement in myself which encourages me to keep on contributing to this project.

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

Yes, I have contributed to Anitya project and Pagure and i am presently working on Pagure Importer


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

No, I am applying to GSoC for the first time.


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

Yes. Simple reason behind it is that projects are cool and cooler are the people who are maintaining them. There is just too much knowledge and experience in the fedora-infra team for me to stop contributing. The projects under fedora-infra team that i am most interested in will be Pagure itself. I think it is cool and with the growth rate it is having, i see it will be a lot popular in coming years. I also find Fedora-Hubs a very cool project. I will like to contribute to it too, in future.


Why should we choose you over other applicants?

  • I have 2 years experience of coding in Python language which is basic required skill of the project.
  • The project is about adding features to Pagure so that we can host pkgs.fedoraproject.org on a Pagure instance. I am already contributing to Pagure.
  • The technical knowledge required for this project are (mostly): Flask, SQLAlchemy, Postgresql. I have experience in each of them.


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)?

No, My open source journey began with fedora. Although, i do open source the projects i work on whether alone or with my friends. In fedora, i have contributed to Anitya and Pagure and currently working on Pagure Importer.


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

No, i don’t have any other experience.

Will you have any other time commitments, such as school work, another job, planned vacation, etc., during the duration of the program?

In mid May, our summer vacation of college will start and ends by late of July; I can give my full time commitment to this project,. I assure dedication of at least 40 hours per week to the work and that I do not have any other obligations from May till August.

Proposal Description

Overview and The Need

pkgs.fedoraproject.org is a place which hosts about 17k git repos for rpms. Presently, it uses cgit. But, we do have Pagure for hosting git repos. After addition of few more features, we will be able to host pkgs.fedoraproject.org on a pagure instance. It will make pagure even more flexible software for hosting git repos and sharing code. I am sure project maintainers of pkgs.fedoraproject.org will like the change.

Any relevant experience you have

Have been contributing to pagure, thus have a good understanding of the codebase. The technical requirements of the project mostly involves - Flask, SQLAlchemy. I have experience in both. While syncing the ACLs from pkgdb2, we might have to work with the pkgdb2 API. I have experience in working with API. Here are a few of my previous pull requests:


How do you intend to implement your proposal

There are two parts of this project:

Understanding the requirements of pkgs.fedoraproject.org

  • Features the cgit instance provides.
  • How the acls, whose data is present in pkgdb, works currently and how can we implement such a

functionality on pagure, keeping in mind that pagure doesn’t have concept of namespaces but pkgdb2 have.

  • What more features can we give in pagure to make life easier for the maintainers of the rpms.

This step might require guidance on how to implement the flow.

Some of the features:

  • Stats:

Filter contributors and number of contributions according to period and author. We can have a contributors page for this.

  • Enable/Disable Issue tracer / Docs during setup:

Projects on pkgs.fedoraproject.org don’t need issue tracer and docs, so we need a feature on pagure so that we can enable/disable issue tracer and docs at the time of settting up of the instance. There should be no option for issue tracer / Docs enable for the project maintainers if it has been disabled during installation.

  • Summary page:

Presently, the home page for any project on pkgs.fedoraproject.org is a summary page. It provides the contents of Refs and Logs. The overview page of pagure gives the Readme, the owners, branches, and latest commits on the selected branch. Since, this is ideal for any other project, we might want to have a summary page containing the Refs and Logs, with an option to enable / disable during setup of the instance. This needs discussion with the project maintainer.

  • A way to sync pkgdb to pagure:

Since, the ACLs of the packages are in pkgdb, we will require to sync pkgdb to pagure. We might want to use pkgdb2 api for this. Also, pkgdb now have namespaces which pagure doesn’t.

  • Provide different access levels based on ACLs from pkgdb:

Since, users will have different access levels, we need a way to give different levels of access in a project from ACLs received from pkgdb or may be we can have a source defined during the setup from where we can fetch the acls, in general.


Implementation Step : Implement the features from step 1. Since, i have been working on pagure, this step shouldn’t be a big problem. Also, it may involve some minor work on pkgdb2 side (API endpoints, maybe), which is also written in flask and i am roughly familiar with the codebase. On implementation of private repo, we will need some changes in db for sure. A lot of other changes throughout the project would be required. Creating a list of required changes seems a nice idea before starting to make the changes.

== List of issues (as secondary goal) ==:

  • #15: Pull request / Email Integration
  • #648: Have some way to link an PR with one or more issues
  • #732: Send notification emails few days before the API key is going to expire
  • #773: List of closed issues should show date closed
  • #792: Add different user access levels
  • #839: Reply buttons shown on issues when not logged in

A rough timeline for your progress

Before April 15:

  • Continue my work on Pagure Importer. Complete imports from Github and Trac.

April 16 – May 10:

  • Familiarize myself completely with pkgdb2 and pkgs.fedoraproject.org functionality.
  • Fully understand what the flow would be and what all functionalities needs to be implemented.
  • Understand requirements for private repo.
  • Continue my work on pagure importer, if required.

May 11 - May 20:

  • End Semester Examination in College. But, I will be in constant touch via IRC.

May 23 – June 20 (Official coding period to mid term eval):

  • Work on syncing pkgdb2 and Pagure for ACLs.
  • Enable / Disable Docs and Issue Tracker
  • Solve Issues from the listed ones or assigned by mentor.

June 21 – July 15:

  • Make contributors page with the functionality of filtering commits according to period and author.
  • Functionality to provide summary, similar to what pkgs.fp.org have currently: providing summary for Refs and logs
  • List the required changes in db and other places to implement private repo.
  • Solve Issues from the listed ones or assigned by mentor.

July 16 – August 9:

  • Implement private repo.
  • If we have time left, Solve more smaller issues assigned by mentors or the listed ones.

August 10 - August 15:

  • Documenting the whole work, if required.

August 16 – August 23 (Final Week):

  • Buffer period, if in case something takes more time than expected. Otherwise, Solve Issues from the listed ones or assigned by mentor.




Final deliverables

Primary goals:

  • Private Repo on pagure
  • Contributors page on pagure.
  • Functionality for Enable/Disable Docs and Issue Tracker
  • Syncing between pkgdb2 and pagure for ACLs
  • pkgs.fedoraproject.org will be running on a pagure instance.

Secondary goals:

  • Solved the listed issues + issues assigned by mentors, if in case time permits.

Any other details you feel we should consider

I possess good knowledge of the project's codebase and I have been in touch with fedora infra team since past 6 - 7 months.