Google Summer of Code 2019 Work Product Submission



coala

Keshav Garg

I am a final year student (expected graduation month - June 2020) studying Computer Science and Engineering at Chandigarh College of Engineering and Technology, Chandigarh. I participated in GSoC’19 with coala open-source organization. My project aimed to increase the usability and easiness for all the open-source enthusiasts by enhancing and improving the coala Community website as well as coala Projects website for newcomers, developers as well as for the other communities. The major focus of this project was to enhance the website’s architecture, with the addition of new API endpoints in coala Webservices. CRON Jobs have been defined in coala Webservices which will make sure that the data related to the organization is up-to-date, which will be used in coala websites.


Patches Tarball


SHA-256:

23ef573e8e6fa3522c616ffc974673abf59989503d7cd15494eaef0d32f1f606

Bonding

Phase 1

Phase 2

Phase 3


Links to commits and repositories I've worked on:

Repository Link to Commit/s Description
c  cEPs View

cEP-0032: Enhance Websites Architecture

g  gsoc-2019 View

Create a re-usable logo for any open-source community

g  gsoc-2019 View

Create a mockup design for coala Community homepage

g  gsoc-2019 View

Create a mockup design for contributors web-page

g  gsoc-2019 View

Create a mockup design for build logs information web-page

g  gsoc-2019 View

Create a mockup design for web-page displaying contributors meta -reviews

g  gsoc-2019 View

Create a mockup design for web-page displaying gamification leaderboard

a  artwork View

Add coala community related new artwork

l  landing View

Fix existing cron jobs

l  landing View

org/: Add Feedback data model

l  landing View

Simplify ‘org’ app

l  landing View

osforms/: Add open source forms database model

l  landing View

org/: Add Calendar db model

l  landing View

org/: Store some extra user related data

l  landing View

org/: Add geolocation to contributor model

l  landing View

org/: Update Teams model

l  landing View

org/: Add a cron for scraping inactive issues

l  landing View

org/: Add a cron for filtering unassigned issues

l  landing View

git.py: Add functions to fetch git related details

l  landing View

meta_review/: Migrate from community repo

l  landing View

org/: Add org activity scraper

l  landing View

gamification/: Migrate app from community repo

l  landing View

gitlab-ci.yml: Add Continuous Deployment

l  landing View

org/: Add GSoC Student model with endpoint

l  landing View

org/: Add access_token validator

l  landing View

org/: Fetch and Save contributor activities data

l  landing View

org/: Add data model for organization mentors

l  landing View

org/: Add join community cron job

l  landing View

org/: Process getting assigned on issues requests

l  landing View

org/: Add newcomer promotion cron job

l  landing View

home.html: Omit unwanted spaces and indents

l  landing View

home.html: Add information about new endpoints

l  landing View

coala_web/: Add an endpoint to get a single issue

c  community View

Sync Moban

c  community View

travis.yml: Install Python v3.6.3

c  community View

tests/: Remove dependency of testusers’

c  community View

.coafile: Ignore openhub module

c  community View

data/: Update Contributor model

c  community View

git.py: Make CI build pass

c  community View

README.md: Update header image

c  community View

Enhance the community website homepage

c  community View

ci_build/: Re-design build-logs webpage

c  community View

gci/: Redesign gci students web-page

c  community View

data/: Re-design the contributors web-page

c  community View

meta-review/: Redesign the webpage

c  community View

gamification/: Redesign the webpage

c  community View

Add netlify-OAuth

c  community View

community/: Add a joining netlify form

c  community View

community/: Display contributor statistics

c  community View

community/: Add a form for uploading google forms

c  community View

community/: Add a form for adding calendar events

c  community View

community/: Add a form for applying as a mentor

c  community View

community/: Add a form for adding a gsoc student

c  community View

community/: Add a request form to assign issue

c  community View

community/: Add a newcomer promotion request form

c  community View

community/: Add a feedback form

o  openhub-django View

README.rst: Add necessary details regarding usage

o  openhub-django View

setup.py: Install requirements and test-requirements

o  openhub-django View

settings.py: Configure project for running it locally

o  openhub-django View

templates/: Add a nice UI/UX design

o  openhub-django View

templates/: Add card display to the details webpage

c  community View

Remove openhub and model apps

c  community View

openhub/: Use openhub_django pypi package

c  community View

community/: Display org teams

c  community View

community/: Add a webpage for Listing Issues

c  community View

Display more info. about unassigned issues

c  community View

community/: Add web-page displaying mentors

c  community View

README.md: Update to add new setup instructions

p  projects View

app.js: Get mentors from Webservices

p  projects View

tabs: Fetch and Display forms from webservices

p  projects View

projects.html: Add filters for searching projects

p  projects View

events.html: Get & Show events from webservices

p  projects View

projects.html: Get issues detail from webservices

p  projects View

report.md: Improve layout for all screens

p  projects View

students.html: Add a tab displaying GSoC Students

p  projects View

index.html: Add a navbar

c  coala View

Newcomers_Guide.rst: Mention about available forms


Enhance Websites Architecture

Work Done

  1. Back-end Enhancements (in coala Webservices):
    1. Fix the existing issues with the runnable cron jobs
    2. Added cron jobs for fetching
      1. users feedback,
      2. open-source google form available to all developers,
      3. calendar events,
      4. requests of contributors who participated in GSoC with the organization and wanted to add their project details to the database, and
      5. requests of developers who wanted to participate as a mentor in the upcoming Google Summer of Code,

      from coala Community website and store them.

    3. Added a cron job for -
      1. fetching contributors geolocation;
      2. validating the access token, used for logging-in onto the coala Community website;
      3. fetching the contributor’s activities data like the issue, merge requests, commits related activities;
      4. users who want to join the organization;
      5. processing the contributor’s request who want to get assigned on an issue; and
      6. processing the newcomer’s request who wanted to get promoted to the developer role;
    4. Update the organization teams information weekly
    5. Migrated following apps from coala Community repository -
      1. inactive issues scrapper,
      2. filtering the issues to get all unassigned issues activity,
      3. meta-review system,
      4. gamification system, and
      5. activity scrapper

      as there should only one database which stores all the information related to the organization.

    6. Added continuous deployment to the repository
    7. Added an endpoint to fetch a single GitHub/GitLab issue
    8. Updated the homepage of coala Webservices, to add information about new enhancements added to the webservices.
  2. Enhancements made in coala Community Website:
    1. Created a project-specific logo, which can be re-used by any open-source community
    2. Re-designed the homepage, by adding a new UI/UX design to it.
    3. Merged up the build information and build logs web-pages, to one web-page with a nice UI/UX design added to that web-page.
    4. Re-designed the Google Code-In students web-page, by adding a new UI/UX design to it.
    5. Re-designed the contributor’s web-page, by adding a new UI/UX design to it and with a search bar to search for a contributor among thousands of contributors.
    6. Re-designed the meta-review web-page, by adding a new UI/UX design to it and with a search-bar to search for a single contributor.
    7. Re-designed the gamification leaderboard web-page, by adding a new UI/UX design to it and with a search bar as well as some filters.
    8. Added Netlify OAuth for getting access to the community forms like promotion request form, getting assigned to an issue, etc.
    9. Added following netlify forms to the website -
      1. organization join form,
      2. calendar event uploader form,
      3. uploading information about open source organizations forms like any conference, workshop, etc.
      4. participate as a mentor in the upcoming Google Summer of Code,
      5. add your GSoC project related details
      6. “want to get assigned on an issue?” form
      7. promotion to developer role form, and
      8. a feedback form
    10. Added a pop-up, to display all the contributor activities (or say all the contributions details) in the form of charts.
    11. Remove the usage of implemented OpenHub models in the repository and use the OpenHub-Django pypi package instead.
    12. Added a web-page for displaying the organization teams to the logged-in users.
    13. Re-designed the web-page that lists-out all the inactive issues across the organization, by adding a new UI/UX design to it and showing the issue related details.
    14. Re-designed the web-page that lists-out all the unassigned issues activity across the organization, by adding a new UI/UX design to it and showing the issue related details.
    15. Added a web-page for displaying the organization mentors for the upcoming summer/winter programs like GSoC, GCI, etc.
    16. Updated the repository README.md to mention about the new enhancements made and how to use them?
  3. Enhancements ‘n’ Improvements made in coala Projects Website:
    1. Fetch the GSoC mentors from coala Webservices too.
    2. Added a tab for displaying all the Open-Source forms by fetching it from coala Webservices.
    3. Added filters for searching GSoC projects.
    4. Added a tab for displaying all the calendar events by fetching it from coala Webservices.
    5. Fetch the related issues state from coala Webservices for a chosen project and change the CSS class based on that state.
    6. Re-named the projects report web-page to a web-page which displays all the past years GSoC students. The students who’ve participated with coala in GSoC in previous years. This new web-page now has a respective tab in navbar instead of an inline-link.
    7. Changed the tabs display to a navbar i.e. added a navbar to the website for navigating around the web-pages.

Apart from this, I’ve contributed to the openhub-django repository, so that it can get ready to be used in the coala Community repository, to get the details about the organization from the OpenHub. And, added necessary documentation(or say information) for contributors in the Newcomers’ Guide mentioning about the forms available on the coala Community website.

Challenges

Most things went smoothly. The biggest challenge for me was to design the web-pages mockup designs and the logo for the coala community website because the community repository is a re-usable repository i.e. any organization can fork this repo and use it without making any major changes in the code. So, the logo must symbolize all the open-source communities. And, another challenge was to decide the validation checks which will be implemented to check whether the form entry (the form submitted by a user on coala Community website) is valid or not. But I am grateful to my helpful mentors for supporting me and making the tasks easier.

Work to be done

Just left with to make usage of coala Webservices with coala Community website. Currently, the data is being fetched from a repository which contains the static data about the organization. And, to use coala Webservices with Community website, all the created merge requests in the repositories should get merged so that we can fetch the realtime-data of the organization and display it on the website.