Skip to content

Instantly share code, notes, and snippets.

@huzaifafaruqui
Last active April 3, 2017 14:32
Show Gist options
  • Save huzaifafaruqui/6546ab2a9e90dc5b3210d4bffd52012b to your computer and use it in GitHub Desktop.
Save huzaifafaruqui/6546ab2a9e90dc5b3210d4bffd52012b to your computer and use it in GitHub Desktop.
proposal

GSOC Proposal


Allura - personal dashboard

Background

Allura is an open source implementation of a software forge, a site that manages source code repositories, bug reports, discussions, and more for projects. It is the default platform for new projects on SourceForge. It is written in Python. Allura code is self hosted on Allura. The project proposes to implement a user dashboard which will become the landing page. Rohan verma(irc - rhnvrm ) worked on the landing page as part of GSOC 2016. Landing page now lists all the neighborhoods in a block showing its logo along with the name and number of projects it contains. Another part of project is to develop a skill based filter for user/ project search. Implementing a user search itself was a GSOC 2013 idea. Discussion on [#6091] revealed that user search has been implemented since then.

Description

The project requires development of personal dashboard system in Forge Allura. Most of the project management softwares like Github, Gitlab etc. have a personal dashboard. It will be the first page user comes to after log in. It would provide quick access to the projects user is a part of, tickets user has created, tickets assigned to the user, pull requests, activity stream of people user follows, etc. Ticket[#7171] requests a feature where the user can see progress of all the tickets he/ she has voted(or followed) in one place.

An additional project [#5419] idea is to implement a feature to allow developers to search projects based on skill sets. Projects should be able to find users that are skilled in some area/ language. Similarly, users should also be able to search for projects that need a specific skill or a set of skills. Related ticket [#4218] talks about the above feature in detail.

Deliverables

  1. A new dashboard for Forge Allura
  2. Advanced search feature - skill based search
  3. Testing - Writing tests for Allura. The guide on https://forge-allura.apache.org/docs/development/testing.html will be followed.
  4. Documentation - Neccessary Documentation for the project will be written.

Implementation

Personal Dashboard

  1. It will be the first page displayed when the user logs in. Only the user will be able to view it. It is different from the profile page which is visible to all. Currently, the front page is the "Neighborhoods" page with all projects/ users. Backend code for the front page is in Allura/allura/controllers/root.py . Some changes will be done there. Neighborhoods page will still be kept.

  2. UI design for the dashboard - Github, Gitlab are some of the inspirations. Allura uses font-awesome for specific icons. Design will be kept consistent with other allura pages like profile page, tickets, project activity etc. Instead of having seperate tabs for activity, merge requests and tickets , we can have all of them at one page. Important thing is to keep the front page clean and not overcrowded. Only 2-3 items for each of the component may be displayed. For more, a "view more" option will be provided. Mockup (Mockup)

  3. Activity Stream - Activity stream for a project is handled by Activity tool. User activity can be seen on profile page. Both these things are implemented in ForgeActivity. Changes will be made there.

  4. User profile has user activity and list of projects user is part of. This information will be used in dashboard too. Relevant code can be found in /ext/user_profile .

  5. Tickets created by or assigned to user will also be displayed on the dashboard. Tickets are artifacts and work will be done to retrieve them and use them in the dashboard. ForgeTracker has the code for tickets.

  6. Other work will be done on activity stream. Work will be done on open tickets with "activitystreams" label. Especially, [#6997], [#6998]

Skill based search

  1. Users can list their skills in their profile page. They can add new skills which are divided into six categories and subcategories. Then they can specify their level of knowledge and add a comment for that particular skill. There is a scope for improving the "add a skill" feature. I think a better approach would be to have only one list from which the user can select a skill(ex How LinkedIn does it).

  2. Searching a user . Ticket [#6091] for the search has been implemented & the users are searchable via URL /nf/admin/search_users. Users can be searched by username, display name or custom query(lucene solr syntax). However, to access this page admin permission is required. The implementation is the method search_users in allura/controllers/site_admin.py. Work would be done to simplify skill based search. Search would be available at dashboard and admin restrictions would be removed.

  3. Searching a project - Projects can be searched similarly to users, in the URL nf/admin/search_projects . To implement [#5419] a new filter for search will have be developed "Find project suitable to you" which will list all projects that require user's skill sets exactly or partially. solr searching will be done to fetch the results

  4. A new page will also be created that will display the result. In that filters options will be given. It will be modeled after the Ticket search page.

  5. Tickets can be marked with "help wanted" label.ex -[#5422],[#5420] . The latter ticket talks about the feature where the project can indicate that they need help. We can also add labels to projects using "Categorization". Work will be done to add links to "help wanted" tickets in the label of project so that clicking on the label will redirect to that ticket.


Timeline

Other Commitments

My current semester exams will end around 15 May and then I will have official holidays till mid July. After the holidays I may get less time due to college( 5 hours a day, 5 day a week) so I plan to do most of the work during the holidays only. I am not planning to do any other job/ internship during the GSOC period. So, I will be able to devote 36+ hours a week to this project.

Community Bonding Period (Full month of April ) Read Allura code and try to solve some open bugs. I would also try to familiarize myself with Turbogears, Mongod, Solr during this period.

May 4 - GSOC result announced

  1. Week 1 (May 16 - May 23) Implement the dashboard with the list of projects the user is part of. Dashboard will be made the default landing page

  2. Week 2 ( May 24 - May 31) - Add merge requests component to the dashboard. This page will list all the merge requests user is part of across all projects with their status

  3. Week 3 & 4 (1 Jun - 14 Jun) Activity stream. This has two parts - Activity of users and activity of projects . Both these may be shown in a single window seperated by a tab

  4. Week 5 ( 15 Jun - 22 Jun) Implement pull request component & add it to dashboard.

  5. Week 6 ( 23 Jun - 30 Jun ) Submit code for Phase 1 evaluations

  6. Week 7 & 8( 1 Jul - 14 Jul) Implement user/project search page for allura and add a search bar to the dashboard.

  7. Week 9 (15 Jul - 22 Jul) Implement skill based filter for user/project search

  8. Week 10 (23 Jul - 30 Jul) Submit code for Phase 2 evaluations

  9. Week 11 ( 31 Jul - 6 Aug) Code cleanup + bug fixing. If nothing else is there, I would like to work on [#6090] to improve merge requests.


Community engagement

  1. Developers mailing list of allura will be used for questions and discussions related to the development.
  2. #allura on irc is another place that I will be available during the GSOC period.
  3. Ofcourse, Forge Allura will be used for bug reports, merge requests etc.
  4. I will also keep making merge requests regularly with small code.
  5. My blog will be updated with information related to the work I will be doing.
  6. I plan to keep contributing to Allura after the GSOC.

About Me

Name Mohd Huzaifa Faruqui
Date of Birth 22 August 1996
Contact no +91 9718668026
Email ID huzaifafaruqui@gmail.com huzaifafaruqui@outlook.com
irc Nick huzaifafaruqui
Github https://github.com/huzaifafaruqui
Blog http://huzaifafaruqui.blogspot.in/
Forge-allura https://forge-allura.apache.org/u/huzaifafaruqui/
Location New Delhi, India

Introduction

I am a third year undergraduate student pursuing Bachelor of Technology in Computer Engineering at Jamia Millia Islamia, New Delhi. I have been programming since my school days. I am proficient in C++ & Python. I also know HTML, CSS, JQuery and Javascript. I like to solve algorithmic problems on websites like Codeforces, Codechef. I qualified for the ACM ICPC regionals 2016. I also like to develop machine learning models. I have contributed to many open source projects. I have never participated in GSOC before.

Hobbies & interests

I like to watch movies. My favorites are 'The Dark Knight' and 'The Lord Of The Rings'. I also like soccer and follow 'FC Barcelona'.


Contributions to Allura

Submitted merge requests for [#8073], [#7814],[#7811],[#7958],[#8059]. Some of them were accepted. I also found few bugs. I have also been discussing the project on irc channel #allura.


Relevant Programming Experience

  • Django + HTML + CSS

    • I made a movie review website that used Django as its backend web-framework. It had features like giving star rating or a review on a movie, advanced searching a movie based on genre, cast, rating etc.
  • Lucene (ElasticSearch)

    • To further enhance my website I added another feature - to search a movie based on keywords found in plot/reviews. Search queries can be like “a movie where the hero dies”, “sad ending movies”, “put me to sleep”, etc. This was done with the help of ElasticSearch where the reviews and plot summary were indexed and ES wrapper for python was used for search.
  • Git & Github

    • I have been using Github for more than a year. I also used Github API to write a script to directly commit changes in a Jupyter IPython notebook to a remote repository.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment