A team of two friends each located on the other side of the planet trying to make open source more welcoming, one hackathon at a time.

Ishaan Malhi - Graduate Student @ucberkeley, Previously @insider.in Zarana Bhadricha - Ex QA Analyst @Accenture

Team Members

Launch Site

CommunityScoreApp

View and analyze GitHub community sentiment and health scores. Make open source more welcoming to newcomers and help maintainers monitor community health.

V800 team 3dcfde94b8143aa3fb552797c89d25fe 1569801130

Description

Open Source can get quite overwhelming if one is just starting out, especially choosing where to begin since the list of projects and technology are endless. An uncomfortable first experience could discourage one from contributing again. It would make it easier to choose once you know you are welcome at the community.

Our app helps developers and open source maintainers understand the quality of interactions on their project and community by a “community score”. This score is assigned based on the sentiment analysis of various documents like the Code of Conduct, GitHub Templates, Readme as well as Pull Request and Issue conversations. We hope this encourages everyone in open source to maintain a high standard of community health and help maintainers ensure their project is welcoming as it starts to grow.

CommunityScoreApp scrapes data from GitHub’s community APIs (experimental) as well as Pull request and Issue comments RESTful apis to fetch text data of the code of conduct, readme, pull request and issue comments. This text is then sent to a pre-trained Tensorflow.js Sentiment Analyzer and Toxicity Model built on an LSTM and Universal Sentence Encoder, to obtain sentiment scores on a scale of 1 to 10. The models are fetched from Google Cloud Storage and cached in IndexedDb for better load performance.

The sentiment scoring happens entirely in the browser and does not use a backend. These scores are then computed in a weighted average, with a higher weight given to GitHub health percentage. All this data, including “sentiment labels” such as “beginner friendly”, is stored in a Hasura.io backend service. Hasura provides the GraphQL service on top of PostgreSQL that stores the repository analysis data.

We then use Shields.io to generate repository badges that maintainers can add to their repository.

The main app uses Next.js by Zeit and is deployed on Zeit Now using Serverless SSR. The Hasura backend service is hosted on Heroku.

Instructions

Prerequisite

  • Tested only in chrome v77
  • Needs stable internet connection to download 20Mb Machine Learning models in the browser.
  • Disable ad blockers and any script blockers

Functionality

  1. Search for your favorite GitHub based repository on the platform.
  2. If you cannot find it, enter the repository GitHub url into the Add Repo input.
  3. Our Machine Learning models will run an analysis on the data scraped from the repository. This might take a while depending on your computer’s hardware capability.
  4. Once the analysis is done, you can see the sentiment score, community badge, sentiment labels in the list.
  5. Click on “Show Details” to see the aspect wise breakdown of the sentiment. This includes the individual sentiment scores for each aspect such as readme, issue comments, pull request comments etc.
  6. Vote for us if you like the app!

View the screencast:
https://www.loom.com/share/cc0579cc3599433096eaa2f5b6b8556a

Built With

  1. Hasura - backend storage and graphql
  2. Zeit Now - deploying React and Next.js
  3. Next.js
  4. Hasura zeit starter template: https://github.com/hasura/graphql-engine/tree/master/community/sample-apps/nextjs-8-serverless/with-apollo
  5. Tensorflow.js
    1. Toxicity Classifier: https://github.com/tensorflow/tfjs-models/tree/master/toxicity
    2. Sentiment Analysis Model: https://github.com/tensorflow/tfjs-examples/tree/master/sentiment
  6. Semantic React https://react.semantic-ui.com
  7. Glitch - for code collaboration and rapid prototyping
  8. React.js
  9. Lodash
  10. Shields.io for badges
  11. Loom for screencast

Feedback / Ratings (7)

All Feedback