Google Summer of Code 2017 Work Product Submission



coala

Hemang Kumar

I’m a final year student of Computer Science & Engineering at University School of Information, Communication & Technology, GGS IP University. I participated in GSoC and worked with coala to facilitate users to use coala online and functionality for one click Git Repository linting. I also worked on a bot to generate coafile, worked on improving UI of coala-html and configurability of coala-projects. I also worked on adding Notification and Thread support in the IGitt library.


Patches Tarball


SHA-256:

8ecf7e3155a764db16c21652943bdcde70a40865fcc7dc5f20f5e56dee48de09

Bonding

Phase 1

Phase 2

Phase 3


Links to commits and repositories I've worked on:

Repository Link to Commit/s Description
c  coala-quickstart View

Add –allow-incomplete-sections mode and bump coala version.

c  coalaCSS View

Create a CSS library to have consistency throughout coala web projects.

c  coala Projects View

Commits f26ae52 through 6497def were part of GSoC.

I  IGitt View

Add put method

I  IGitt View

Add eliminate_none method

I  IGitt View

Add create_mr, create_file, delete and fork

I  IGitt View

Add content support

I  IGitt View

Add notification and threads support

G  GitMate-2 View

Add coala_online endpoint

G  GitMate-2 View

Register coala_online endpoint

G  GitMate-2 View

Add coala_online in INSTALLED_APPS

G  GitMate-2 View

Use celery task to spawn Docker container

G  GitMate-2 View

Add coala.io in ALLOWED_HOSTS

G  GitMate-2 View

Use gitmate celery task

G  GitMate-2 View

Set FORCE_CELERY to True

G  GitMate-2 View

Set CELERY_RESULT_BACKEND to amqp

G  GitMate-2 View

Add Rate Limiting and DRF

G  GitMate-2 View

Set FORCE_CELERY to True

G  GitMate-2 View

Set CELERY_RESULT_BACKEND to amqp

G  GitMate-2 View

Bump IGitt to latest dev version

G  GitMate-2 View

Add coafile_bot

G  GitMate-2 View

Add GITHUB_BOT_USER

G  GitMate-2 View

Rename tokens and add default value

G  GitMate-2 View

Return pull request object on retries

c  coala-html View

Commits bb9d9d6 through 6f67174 were part of GSoC

l  landing View

Commits 095f1561 through a206ef6d were part of GSoC

c  coala-online-docker View

Install shallow clone of quickstart

c  coala-online-docker View

Add script to run analysis and quickstart

c  coala-online-docker View

Add utility functions

c  coala-online-docker View

Create README

c  coala-online-docker View

Add temp directory for file permissions

c  coala-online-docker View

Run coala

c  coala-online-docker View

Add read_coafile function

c  coala-online-docker View

Keep newline characters in coafile string

c  coala-online-docker View

Add coafile in bear mode response

l  landing-frontend View

Commits 7e2efb3 through a48a08a were part of GSoC.


Improve coala Website and Supporting Tools

Work Done

The coala Online module now has support for all the bears, bears with optional as well as non optional settings, everything can be configured. Users can perform code analysis online with any given bear. The project enhanced coala-html by introducing results and bear search and filtering on basis of parameters. A coafile_bot is created which can be used to generate coala configuration file for any given GitHub repository. One click git repository linting is possible online. A CSS framework was built upon MaterializeCSS for coala web projects coalaCSS and its being used via CDN at webservices.coala.io, projects.coala.io, coala.io, school.coala.io and other coala web projects.


coala-quickstart has got a new running mode, allow-incomplete-sections which helps users to create a coafile without omitting bears with non optional settings.


IGitt now supports Notifications and Threads for GitHub and partially for GitLab (Notifications API is not available on GitLab as of now).


projects.coala.io is now Jekyll based and configurable via a YAML file. It also has a more conflict free approach while simultaneously adding projects.


coala Online module is live and running here.


coala-html is more powerful with omni search bar and UI enhancements.

Challenges

It was a great learning experience overall, but a few challenges which proved to be a great enriching experience was working with VCRpy for IGitt tests, Working docker images which can be spawned inside a docker container itself, Visualizing the bear selection user interface on the coala Online module. These were pretty tough challenges and I was able to complete it with research, consistency but most importantly with guidance of my mentors, who were always there for me throughout the GSoC period for which I am really greatful. I learnt a lot from them, and it was an extremely great experience to work under their mentorship.

Work to be done

The first task, is to get all the supporting tools like coala Online, coala-html and projects.coala.io need to incooperate user feedback on the changes user experience.


coafile_bot will be able to do wonders on GitLab as well once GitLab introduces Notification API. Initally I want to promote it as much as I can so that developers can have general awareness about linting, the tools available and how coala comes into the picture, and from there they can use coafile bot and then ultimately improve their git workflow.


Essentially the projects.coala.io page can be used for a particular program like GSoC, GCI and also for general project management of an organization. Now some organization may want more flexibility on a particular feature. Depending on what more coala needs for project management, and depending upon consensus of other organization voting on a new feature, there is a great room for improvement in projects.coala.io