(26 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== | == '''Make pagure adaptable for pkgs.fedoraproject.org''' == | ||
== Contact Information == | |||
* '''Name''': Vivek Anand | * '''Name''': Vivek Anand | ||
* '''E-mail''': [mailto:vivekanand1101@gmail.com vivekanand1101@gmail.com] | * '''E-mail''': [mailto:vivekanand1101@gmail.com vivekanand1101@gmail.com] | ||
Line 18: | Line 13: | ||
* '''Blog url''': https://vivekanandxyz.wordpress.com | * '''Blog url''': https://vivekanandxyz.wordpress.com | ||
* '''Location''': Allahabad, India, UTC +5:30 | * '''Location''': Allahabad, India, UTC +5:30 | ||
== About Me == | |||
* I’m a Junior student at Indian Institute of Information Technology, Allahabad majoring in Information Technology. | * 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 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. | * 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. | ||
== Questions == | |||
==== Why do you want to work with the Fedora Project? ==== | ==== 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. | Fedora is my favorite operating system as i find it simple, easy to use and best suited for my web application development environment. | ||
Line 40: | Line 29: | ||
==== Do you have any past involvement with the Fedora Project or another open-source project as a contributor? ==== | ==== Do you have any past involvement with the Fedora Project or another open-source project as a contributor? ==== | ||
Yes, I have contributed to [https://github.com/fedora-infra/anitya/ Anitya] project and [https://pagure.io/pagure Pagure] and i am presently working on [https://pagure.io/pagure-importer Pagure Importer] | Yes, I have contributed to [https://github.com/fedora-infra/anitya/ Anitya] project and [https://pagure.io/pagure Pagure] and i am presently working on [https://pagure.io/pagure-importer Pagure Importer] | ||
==== Have you participated in GSoC in the past? If so, what year(s) and which organization(s)? ==== | ==== 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. | 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? ==== | ==== 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. | 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. | 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? ==== | ==== Why should we choose you over other applicants? ==== | ||
Line 55: | Line 41: | ||
* 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 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. | * 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)? ==== | ==== 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 | 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 [https://github.com/fedora-infra/anitya Anitya] and [https://pagure.io/pagure Pagure] and currently working on [https://pagure.io/pagure-importer Pagure Importer]. | on whether alone or with my friends. In fedora, i have contributed to [https://github.com/fedora-infra/anitya Anitya] and [https://pagure.io/pagure Pagure] and currently working on [https://pagure.io/pagure-importer Pagure Importer]. | ||
==== Do you have any other open source experience (even if not coding-related)? ==== | ==== Do you have any other open source experience (even if not coding-related)? ==== | ||
Line 68: | Line 52: | ||
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. | 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 == | |||
Line 79: | Line 58: | ||
[http://pkgs.fedoraproject.org pkgs.fedoraproject.org] is a place which hosts about 17k git repos for rpms. Presently, it uses cgit. But, we do have [https://pagure.io 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. | [http://pkgs.fedoraproject.org pkgs.fedoraproject.org] is a place which hosts about 17k git repos for rpms. Presently, it uses cgit. But, we do have [https://pagure.io 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. | 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. | The technical requirements of the project mostly involves - Flask, SQLAlchemy. I have experience in both. | ||
Line 87: | Line 66: | ||
* [https://github.com/fedora-infra/anitya/commits?author=vivekanand1101 Anitya] | * [https://github.com/fedora-infra/anitya/commits?author=vivekanand1101 Anitya] | ||
=== 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. | 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. | * What more features can we give in pagure to make life easier for the maintainers of the rpms. | ||
Line 100: | Line 80: | ||
''' Some of the features''': | ''' Some of the features''': | ||
Stats: | * Stats: | ||
Filter contributors and number of contributions according to period and author. We can have a contributors page for this. | 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: | * 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. | 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: | * 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, | 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. | 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: | * 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. | 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: | * 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. | 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 ==== | |||
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. | 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. | 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) ''': | |||
[https://pagure.io/pagure/issue/15 #15]: Pull request / Email Integration | * [https://pagure.io/pagure/issue/15 #15]: Pull request / Email Integration | ||
[https://pagure.io/pagure/issue/648 #648]: Have some way to link an PR with one or more issues | * [https://pagure.io/pagure/issue/648 #648]: Have some way to link an PR with one or more issues | ||
[https://pagure.io/pagure/issue/732 #732]: Send notification emails few days before the API key is going to expire | * [https://pagure.io/pagure/issue/732 #732]: Send notification emails few days before the API key is going to expire | ||
[https://pagure.io/pagure/issue/773 #773]: List of closed issues should show date closed | * [https://pagure.io/pagure/issue/773 #773]: List of closed issues should show date closed | ||
[https://pagure.io/pagure/issue/792 #792]: Add different user access levels | * [https://pagure.io/pagure/issue/792 #792]: Add different user access levels | ||
[https://pagure.io/pagure/issue/839 #839]: Reply buttons shown on issues when not logged in | * [https://pagure.io/pagure/issue/839 #839]: Reply buttons shown on issues when not logged in | ||
== A rough timeline for your progress == | === A rough timeline for your progress === | ||
'''Before April 15''': | '''Before April 15''': | ||
Continue my work on Pagure Importer. Complete imports from Github and Trac. | * Continue my work on Pagure Importer. Complete imports from Github and Trac. | ||
'''April 16 – May 10''': | '''April 16 – May 10''': | ||
Familiarize myself completely with pkgdb2 and pkgs.fedoraproject.org functionality. | * 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. | * Fully understand what the flow would be and what all functionalities needs to be implemented. | ||
Understand requirements for private repo. | * Understand requirements for private repo. | ||
Continue my work on pagure importer, if required. | * Continue my work on pagure importer, if required. | ||
'''May 11 - May 20''': | '''May 11 - May 20''': | ||
End Semester Examination in College. But, I will be in constant touch via IRC. | * 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)''': | '''May 23 – June 20 (Official coding period to mid term eval)''': | ||
Work on syncing pkgdb2 and Pagure for ACLs. | * Work on syncing pkgdb2 and Pagure for ACLs. | ||
Enable / Disable Docs and Issue Tracker | * Enable / Disable Docs and Issue Tracker | ||
Solve Issues from the listed ones or assigned by mentor. | * Solve Issues from the listed ones or assigned by mentor. | ||
'''June 21 – July 15''': | '''June 21 – July 15''': | ||
Make contributors page with the functionality of filtering commits according to period and author. | * 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 | * 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. | * List the required changes in db and other places to implement private repo. | ||
Solve Issues from the listed ones or assigned by mentor. | * Solve Issues from the listed ones or assigned by mentor. | ||
'''July 16 – August 9''': | '''July 16 – August 9''': | ||
Implement private repo. | * Implement private repo. | ||
If we have time left, Solve more smaller issues assigned by mentors or the listed ones. | * If we have time left, Solve more smaller issues assigned by mentors or the listed ones. | ||
'''August 10 - August 15''': | '''August 10 - August 15''': | ||
Documenting the whole work, if required. | * Documenting the whole work, if required. | ||
'''August 16 – August 23 (Final Week)''': | '''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. | * Buffer period, if in case something takes more time than expected. Otherwise, Solve Issues from the listed ones or assigned by mentor. | ||
=== Final deliverables === | === Final deliverables === | ||
Line 179: | Line 154: | ||
'''Secondary goals''': | '''Secondary goals''': | ||
Solved the listed issues + issues assigned by mentors, if in case time permits. | * Solved the listed issues + issues assigned by mentors, if in case time permits. | ||
=== Any other details you feel we should consider === | === 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 | I possess good knowledge of the project's codebase and I have been in touch with fedora infra team since past | ||
6 - 7 months. | 6 - 7 months. | ||
[[category:Summer coding 2016]] |
Latest revision as of 19:02, 24 March 2016
Make pagure adaptable for pkgs.fedoraproject.org
Contact Information
- Name: Vivek Anand
- E-mail: vivekanand1101@gmail.com
- Freenode IRC nick: vivek_
- Phone: 91-8084627231
- Code forges:
* Pagure: vivekanand1101 * GitHub: vivekanand1101
- Blog url: https://vivekanandxyz.wordpress.com
- Location: Allahabad, India, UTC +5:30
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.
Questions
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.
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
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.