- Short description
- Demo video
- The architecture
- Long description
- Getting started
- Running the tests
- Built with
- Contributing
- Versioning
- Authors
- License
- Acknowledgments
Technology has the power to drive action. And right now, a call to action is needed to eradicate racism. Black lives matter.
We recognize technology alone cannot fix hundreds of years of racial injustice and inequality, but when we put it in the hands of the Black community and their supporters, technology can begin to bridge a gap. To start a dialogue. To identify areas where technology can help pave a road to progress.
This project is an effort to utilize technology to analyze, inform, and develop policy to reform the workplace, products, public safety, and legislation.
This is one of three open source projects underway as part of the Call for Code Emb(race) Spot Challenge led by contributors from IBM and Red Hat.
Concerned citizens and impacted residents don't have a straightforward way of knowing what or how policies and regulations impact them or what they can do in response. A community leader could use this tool to help motivate their social followers. Our target user will be referred to as "advocate".
-
Advocates are aware of policy that is being considered that is highly impactful to them, without needing to follow every vote.
-
Advocates are able to understand the specific impact of proposed policy on them without being a legal expert.
-
Advocates are able to share opinions so they can influence policy decisions before they are finalized.
-
Advocates can easily ascertain the voting record themes or trend of their elected officials and political candidates without prior knowledge of who they are.
-
Policy makers have visibility into how diverse citizenry will be impacted by multiple variations of a proposed policy.
Searching for legislation can be complicated by the fact that each government level has their own repository, their own numbering convention, and different formats. Technology can assist by allowing curated content to be centralized into a single database, readily accessible to advocates that need simple-to-read information.
Fix Politics is a web-based application written in Python programming language, using the Django framework and Bootstrap user interface styling. Its primary goal is to help advocates find legislation of interest based on an advocate's preferences for impact areas and geographical location.
The application is customizable, allowing application staff to specify the location hierarchy and impact categories. Complex legislation is curated, resulting in classifying the location scope and impact area, with a brief laymen-readable title and summary.
By classifying legislation by impact and location, we hope to increase awareness of current and pending legislation and their ability to affect change through voting or other activism.
This starter kit can be taken in a variety of directions.
- Email:
Without an email SMTP server, we used instead Mailtrap.io
which allowed testing of the HTML and TEXT formats. Considering adding
an SMTP server to send out email.
- Currated Data Entry:
Currently, locations, impacts and laws are entered manually via the standard Django /admin panels. These could be improved, with bigger and wider text boxes.
- Permission Levels:
The Superuser can grant privileges to other users, and this could be implemented as a "upgrade user to Staff" button option with specific privilege levels pre-set.
- Share options:
The advocate can share results three ways: (a) print out the results on paper or PDF file; (b) email to self then forward that email to others from their regular email system, and (c) download CSV file to send out to others or perform other analyses. Additional options could be to send out tweets on Twitter, post to a Blog, or send out to other social media outlets like Facebook.
- Feedback options:
Add information to each law related to the proponents or opponents, these could be elected officials or activists that are actively involved with the legislation. Feedback options can be to send opinions directly to those people, or to allow those elected officials to easily see the collection of opinions directly from the website.
- Automate Collection:
The effort to review laws, determine if they apply to the desired impact areas for the locations involved, and then classify and summarize them in laymen terms, was manually intensive. This could be improved by having a system that does web crawling, web page scraping, or invokes publicly APIs to gether the data, do some initial filtering, and present suject matter experts with a refined list to review.
- Automate Classification
It is not obvious that policies and regulations have certain impacts. An improvement would be to use supervised training of AI models with a set of already classified laws to determine which impact area involved.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.
This project is designed for three deployment stages.
In stage 1, each developer has their own copy of application code and data, using SQLite3 that stores the entire database in a single file. Django provides a development webserver to allow local testing.
In stage 2, each developer has their own copy of application code, but a shared database, using Postgresql running in the IBM Cloud. The developer can choose to use the Django development webserver, or try out the production server called Gunicorn. The difference is that Django is designed for single-user, and Gunicorn for concurrent multiple users.
In stage 3, the application is running in the IBM Cloud in one pod, using the Postgresql running in the IBM Cloud from pre-production. Updates to the code are deployed using a Tekton pipeline.
- Python - The programming language, along with pip and pipenv supporting tools
- Django - A framework for web applications
- Bootstrap - A popular User Interface toolkit
- SQlite - A simple, local database
- Postgresql - A robust, relational database
- Gunicorn - A WSGI HTTP server for Python
The following technologies were used to demonstrate the MVP. Certainly, they are optional, as the above application can run on a traditional LAMP stack bare-metal server.
- Red Hat UBI - Red Hat Universal Base Image, based on Red Hat Enterprise Linux (RHEL) 8.2
- Docker - A container platform
- Kubernetes - An orchestration layer for Docker
- Red Hat OpenShift - Red Hat container platform based on Kubernetes
- Tekton - A Continuous Integration (CI) pipeline
Please read CONTRIBUTING.md for details on the code of conduct, and the process for submitting pull requests to the project.
- Tony Pearson - Developer
- Tommy Adams - Tester
- Beth Morgan - UI Designer
- Nikhil Raja - Project Manager
- Mao Vang Corne - Content Curator
This project is licensed under the Apache 2 License - see the LICENSE file for details
- Based on Billie Thompson's README template.