All Projects → openpolitics → Groupthink

openpolitics / Groupthink

Licence: mit
A collaborative democratic platform built atop GitHub, designed for open policymaking and manifesto writing.

Programming Languages

ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to Groupthink

Tikv
Distributed transactional key-value database, originally created to complement TiDB
Stars: ✭ 10,403 (+37053.57%)
Mutual labels:  hacktoberfest, consensus
Consul
Consul - Open Government and E-Participation Web Software
Stars: ✭ 1,088 (+3785.71%)
Mutual labels:  hacktoberfest, democracy
Democracy Client
DEMOCRACY App Client
Stars: ✭ 98 (+250%)
Mutual labels:  voting, democracy
voting
A simulator for voting systems.
Stars: ✭ 24 (-14.29%)
Mutual labels:  voting, democracy
Mat-O-Wahl
🇩🇪 Mat-O-Wahl - Ein einfach zu bedienender, freier Open Source Wahl-O-Mat Klon fuer jedermann ### 🇬🇧 🇺🇸 A simple to handle, free "Voting Advice Application" / "Electoral Compass" alternative
Stars: ✭ 27 (-3.57%)
Mutual labels:  voting, democracy
Zookeeper
Apache ZooKeeper
Stars: ✭ 10,061 (+35832.14%)
Mutual labels:  hacktoberfest, consensus
Democracyos
Democracia en Red is focusing on specific implementations of DemocracyOS. We are working now working with governments and activists all over Latin America. If you are interested in our online participation tools you can check them out on our site.
Stars: ✭ 1,753 (+6160.71%)
Mutual labels:  voting, democracy
Devforthaifreedom
The hackathon to build technologies for Thailand's journey to democracy and freedom. #devปลดแอก
Stars: ✭ 175 (+525%)
Mutual labels:  hacktoberfest, democracy
quadratic-voting
Real-time Quadratic Voting dashboard to encourage mathematically optimal voting in democratic communities.
Stars: ✭ 74 (+164.29%)
Mutual labels:  voting, democracy
Paper
On self sovereign human identity.
Stars: ✭ 537 (+1817.86%)
Mutual labels:  voting, democracy
Fastlane
🚀 The easiest way to automate building and releasing your iOS and Android apps
Stars: ✭ 33,382 (+119121.43%)
Mutual labels:  hacktoberfest
Hackathon Starter
A boilerplate for Node.js web applications
Stars: ✭ 32,485 (+115917.86%)
Mutual labels:  hacktoberfest
Shared Memory Dict
A very simple shared memory dict implementation
Stars: ✭ 28 (+0%)
Mutual labels:  hacktoberfest
Tiktok Api
The Unofficial TikTok API Wrapper In Python
Stars: ✭ 940 (+3257.14%)
Mutual labels:  hacktoberfest
Tldr
📚 Collaborative cheatsheets for console commands
Stars: ✭ 36,408 (+129928.57%)
Mutual labels:  hacktoberfest
Markdown
A super fast, highly extensible markdown parser for PHP
Stars: ✭ 945 (+3275%)
Mutual labels:  hacktoberfest
Pi Hole
A black hole for Internet advertisements
Stars: ✭ 34,076 (+121600%)
Mutual labels:  hacktoberfest
Vuetify
🐉 Material Component Framework for Vue
Stars: ✭ 33,085 (+118060.71%)
Mutual labels:  hacktoberfest
Rocket.chat
The communications platform that puts data protection first.
Stars: ✭ 31,251 (+111510.71%)
Mutual labels:  hacktoberfest
Ds Algo Point
This repository contains codes for various data structures and algorithms in C, C++, Java, Python, C#, Go, JavaScript, PHP, Kotlin and Scala
Stars: ✭ 949 (+3289.29%)
Mutual labels:  hacktoberfest

Build status Test Coverage Maintainability Inline docs

Groupthink

A collaborative writing platform built on top of GitHub, originally designed for open policymaking and manifesto writing.

It has two main functions:

  1. Provide a user-friendly interface to make changes (using pull requests) to GitHub-hosted Jekyll websites, using Markdown.

  2. Monitor discussion in those pull requests, and layer on a voting system to determine what should be merged in. Voting is done using special symbols in pull requests, which are counted by the app. Status is set using the GitHub commit status API.

The system was originally implemented for the collaborative manifesto project at https://openpolitics.org.uk/manifesto. The canonical instance of this app for that project is https://votebot.openpolitics.org.uk

Usage

... to be written ...

Voting rules

... to be written ...

Get your own!

If you want to run your own open democratic platform, you can! This isn't a simple process yet, but we'll help you through as best we can...

Note that the style and headers of the deployed app will still match the OpenPolitics Manifesto version. A change for that will be coming soon.

Set up a GitHub repository for your content

You can use Groupthink to edit any GitHub repository you like, but we've set up a template site using GitHub Pages and Jekyll to get you started.

Click here to create your very own copy, ready to go.

Then visit the cloned repository's settings page, and:

  • rename it to something more useful than template
  • enable GitHub pages on the master branch

Your new site will be visible at https://{{your-username}}.github.io/{{repository-name}}. If you've set up a CNAME on your user site, the URL will be different, but you're advanced enough to work that out yourself.

Create a GitHub API token

Visit the Personal Access Tokens page on your GitHub account to create a token for accessing the API.

Note: you may want to create a new 'robot' GitHub account for this token. For example, the OpenPolitics Manifesto uses openpolitics-bot.

Generate a new token. You'll need to allow the following permissions:

  • public_repo
  • repo:status
  • user:email
  • write:repo_hook

Keep hold of the generated token - you'll need it in a minute.

Create a GitHub OAuth application

Visit the Developer applications page on your GitHub account to set up user login via GitHub. Register a new application; in the homepage and callback URLs enter the URL of the application you are about to deploy. Yes, that's slightly tricky. It will be something like https://your-unique-groupthink-app-name.herokuapp.com. Make up the your-unique-groupthink-app-name part. The name of your project will probably do.

Again, keep hold of the client ID and secret. You'll need them in the next step.

Note: if you created the manifesto repository in a GitHub organisation, the OAuth application should be owned by the same organisation. If not, users in the organisation will not be able to create new proposals unless they manually grant access to the organisation when they log in.

Deploy the code to Heroku

Hit this big deploy button here:

Deploy

Then, enter all the relevant details. Use the same app name you did in the step above, your-unique-groupthink-app-name. If it's taken, don't worry, you can go back and edit the GitHub application settings later.

Enter the personal access token, client ID, and secret from the previous stage. Enter the repository path of your cloned template site - it should be something like your-username/repository-name.

Configure the editor link on your site

Go to the _config.yml file in your site's GitHub repository, and add the URL of your deployed Heroku app to the groupthink_url setting. It will be the same as what you put in above for the GitHub application homepage, i.e. https://your-unique-groupthink-app-name.herokuapp.com

Enable the nightly tasks

Visit the Heroku dashboard for your app, and on the "Resources" tab, choose the Heroku Scheduler. Add a new job, rake nightly, on a free dyno on a daily schedule. It's probably sensible to run it sometime in the small hours of the morning.

This task will run the following tasks, in this order:

  • rake merge: merges any proposals that have been passed
  • rake close: closes any proposals that are over the maximum age
  • rake update: reloads data from github, counts votes, and performs time checks.

Because update is run last, proposals will be marked as passed or dead, and closed or merged on the next run of the rake task. If run nightly, this gives 24 hours of grace before automatic actions are taken.

Enable automatic deployment

If you want to keep your version of groupthink up to date with the latest changes, visit the Heroku dashboard for your app, and enable automatic deployment on the Deploy tab.

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].