All Projects → TooAngel → worlddriven

TooAngel / worlddriven

Licence: AGPL-3.0 License
Automatic and well-defined pull request merged based on contribution-based weighted voting

Programming Languages

python
139335 projects - #7 most used programming language
javascript
184084 projects - #8 most used programming language
HTML
75241 projects
CSS
56736 projects
shell
77523 projects
Mako
254 projects

Projects that are alternatives of or similar to worlddriven

roataway-web
Roataway web site
Stars: ✭ 15 (+7.14%)
Mutual labels:  showdev, contributorswanted
SimpleTypes
The universal PHP library to convert any values and measures (money, weight, currency converter, length, etc.).
Stars: ✭ 56 (+300%)
Mutual labels:  weight
Sprat-type
Display typeface
Stars: ✭ 58 (+314.29%)
Mutual labels:  weight
vote-schulze
Vote calculation with Schulze method (Condorcet voting)
Stars: ✭ 23 (+64.29%)
Mutual labels:  vote
MachineLearning
An easy neural network for Java!
Stars: ✭ 125 (+792.86%)
Mutual labels:  weight
Votes
LarkVote投票系统是一套基于规则的企业内部投票系统,由投票管理和投票端两部分组成,投票管理端包括投票创建、投票编辑、规则编辑、投票发起、投票项管理、邀请码生成、结束投票、投票结果统计等功能;投票端包括投票规则展示、投票操作、提交结果等功能。目前该项目还处于初级阶段,欢迎各位大神创建pull request。
Stars: ✭ 60 (+328.57%)
Mutual labels:  vote
RoundWidget
Java 实现的 Android 原生圆角矩形控件,圆角 FrameLayout 和圆角 ImageView
Stars: ✭ 86 (+514.29%)
Mutual labels:  weight
laravel-vote
⬆️ ⬇️ User vote system for Laravel Application.
Stars: ✭ 53 (+278.57%)
Mutual labels:  vote
git-reviewers
Intelligently find code reviewers
Stars: ✭ 14 (+0%)
Mutual labels:  reviewer
freedomvote
A tool to represent the views of politicians and parties as a help to the voters.
Stars: ✭ 15 (+7.14%)
Mutual labels:  vote
st package reviewer
A tool to review packages for Sublime Text
Stars: ✭ 13 (-7.14%)
Mutual labels:  reviewer
ballotnav
A repository for HackforLA's BallotNav project
Stars: ✭ 21 (+50%)
Mutual labels:  vote
pg-search-sequelize
Postgres full-text search in Node.js and Sequelize.
Stars: ✭ 31 (+121.43%)
Mutual labels:  weight
rater-js
Star rating widget for the browser. Unlimited number of stars. No dependencies. No Jquery required.
Stars: ✭ 66 (+371.43%)
Mutual labels:  vote
mixed-precision-pytorch
Training with FP16 weights in PyTorch
Stars: ✭ 72 (+414.29%)
Mutual labels:  weight
Laravel-rating
Laravel package that allows you to rate, like & dislike and vote(+1,-1) your models with a simple and clear ways
Stars: ✭ 204 (+1357.14%)
Mutual labels:  vote
PollDaddyHack
Exploit PollDaddy polls
Stars: ✭ 33 (+135.71%)
Mutual labels:  vote
yii2-vote
Provides voting for any model 👍 👎
Stars: ✭ 70 (+400%)
Mutual labels:  vote
Room-Meter
Room Meter is a hotel review site where users can create reviews in form of articles and vote on other reviews. It's built with the Ruby on Rails framework by following the MVP pattern
Stars: ✭ 12 (-14.29%)
Mutual labels:  vote
rating
⭐ A true Bayesian rating system with scope and cache enabled
Stars: ✭ 49 (+250%)
Mutual labels:  vote

world driven

CircleCI discord Code climate

World driven introduces a contribution based weighted voting system for time-based auto-merges. It defines a process and automates the process of merging Pull Requests based on Reviews.

World driven automatically merges Pull Requests after a certain amount of time, this gives interested people time to review and approve or request changes (in world driven speech: vote). Positive votes reduce the time to merge to speed up the release. Previous contributions are the factor of this merge boost (think of number of commits). Voting against the Pull Request increases the time to merge. Reaching a certain threshold blocks the merge.

The configuration for the repository is:

  • Merge duration for a pull request: 10 days
  • Per commit time: 0 days
  • Merge method: squash

Read more on https://www.worlddriven.org

Setup

Run with docker compose

Copy .env-example to .env and add your environment variables.

docker-compose up

Manual

The application uses MongoDB as back end, the default configuration is localhost:27017 This can be overwritten with the environment variable: MONGODB_URI

Gunicorn serves as the server, checkout the Procfile or use gunicorn --workers=1 --worker-class=flask_sockets.worker server:app --chdir src.

The authentication and authorization uses GitHub OAuth and API.

For OAuth and merging of pull requests create an GitHub OAuth App (https://docs.github.com/en/free-pro-team@latest/developers/apps/creating-an-oauth-app) and set GITHUB_CLIENT_ID and GITHUB_CLIENT_SECRET as environment variable. The GitHub callback path is: /github-callback.

For commenting create and set a personal token (https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/creating-a-personal-access-token) as: GITHUB_USER_TOKEN

Set Session secret as SESSION_SECRET initial a random string.

To disable https in a local environment set DEBUG=true as environment variable.

Prepare PostgreSQL server

sudo -u postgres psql
postgres=# create database mydb;
postgres=# create user myuser with encrypted password 'mypass';
postgres=# grant all privileges on database mydb to myuser;

Testing

Run JavaScript tests with: npm run test Run python tests with: pytest

Configuration

To allow different configurations on different repositories you can place a .worlddriven.ini (see .worlddriven.ini-example) in the root of your repository and adapt the values. When World Driven checks new Pull Requests it fetches the .worlddriven.ini from your default branch (fetching from the Pull Request could be a security issue) and applies the configuration.

Front end

The Front end has three views:

  • / the front page
  • /dashboard a dashboard with an overview of the repositories and a button to enable World Driven for the repository
  • /:org/:repo/pull/:pull_number A detailed calculation breakdown for the pull request

Use the following endpoints to more easily work on the dashboard with mock data:

  • /test/dashboard - for the dashboard
  • /test/:org/:repo/pull/:pull_number - for the pull request view

Production environment

The World Driven auto-merge service is:

  • hosted on Heroku
  • tested via CircleCI,
  • merged via World Driven and automatically deployed.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].