Git Product home page Git Product logo

chorewheel's Introduction

Chore Wheel ๐Ÿ”†

CircleCI Documentation Status

Talks:

Overview:

Chore Wheel (formerly Mirror) is self-governance software for coliving, helping reshape the economics of housing.

Developed in collaboration with social scientists and game designers, Chore Wheel is a set of tools and processes which enable groups of individuals to easily and effectively share space, without reliance on expensive managers or tedious meetings. By lowering the cost of cooperation, Chore Wheel helps to bring coliving into the mainstream, reducing both the price and environmental impact of housing.

Chore Wheel draws influence from the work of Elinor Ostrom, and is designed in reference to her eight principles:

  1. Clearly defined the group boundaries (and effective exclusion of external un-entitled parties) and the contents of the common pool resource;
  2. The appropriation and provision of common resources that are adapted to local conditions;
  3. Collective-choice arrangements that allow most resource appropriators to participate in the decision-making process;
  4. Effective monitoring by monitors who are part of or accountable to the appropriators;
  5. A scale of graduated sanctions for resource appropriators who violate community rules;
  6. Mechanisms of conflict resolution that are cheap and of easy access;
  7. Self-determination of the community recognized by higher-level authorities; and
  8. In the case of larger common-pool resources, organization in the form of multiple layers of nested enterprises, with small local CPRs at the base level.

Read the design document for more details.

Patent Pending

chorewheel's People

Contributors

kronosapiens avatar dependabot[bot] avatar

Stargazers

Doug Webb avatar Ze'ev Lailari avatar  avatar  avatar Patrick Connolly avatar Theodore Keloglou avatar Isaac Rosenberg avatar John Arnold avatar

Watchers

 avatar

chorewheel's Issues

Remove sync from home view

We are getting rate limited by trying to sync the workspace every time someone opens the home screen. We should restore the specialized "sync" slash command, or find a different place to include it.

Dynamic chore point issuance

Essentially, adjust the current month's issuance rate based on last month's surplus, such that this the sum of this month's new points plus last month's leftover points is equal to some constant. This is to prevent a slow points inflation as unclaimed points accrue month-over-month.

Add messageId to poll metadata

Requires another trip to the database after posting the message

Need to store channel and ts from the initial message

Avoid race conditions with better SQL

Many of the functions involving voting are time-based, and currently many checks are done in javsascript, in between calls to the database. More sophisticated SQL should be able to incorporate these checks directly (such as disallowing votes past the end of the poll, or calculating poll). It's not immediately obvious how to do this, so punting it for later, as doing the logic in javascript gets the job done for now.

Examples:

https://github.com/kronosapiens/mirror/blob/master/src/modules/polls/models.js#L23
https://github.com/kronosapiens/mirror/blob/master/src/modules/polls/models.js#L43
https://github.com/kronosapiens/mirror/blob/master/src/modules/polls/models.js#L51

Fix bug with getActiveResidentCount

getActiveResidentCount is over-counting residents who are on break. This is due to an incorrect SQL query which returns a false negative in the case that a resident has already entered a break in the past.

Fixed in 603b918

UI Tweaks

  • More sparkles as someone completes more chores (e.g. one sparkle per 25)
  • Add newline before app buttons
  • Add chore ranking to ranking options
  • Add tips to chore slash commands
  • Message when loading house acct

Adjust chore penalty

After discussion, update the default parameters for chore penalties & hearts regeneration to:

  • 10 chore points per 1/4 heart loss
  • 1/2 heart regeneration per month at baseline
  • 1 heart regeneration for the karma winner
  • Drop the chore points surplus rate from 10% to 5%

Under this scheme, 80 points / month becomes a steady state for residents, losing and regaining a half-heart. At 105 points per person per month, we may observe a small inflation effect, ideally counteracted by the "points sink" effect of crossing 100 in a month. Will have to observe what happens in practice over the next 2-3 months.

Add support for chores-exempt slash command

With people going out of town for long periods of time and having subletters, it would be useful to support an additional state for residents beyond "active" or "inactive", which is meant to mirror their state on Slack. By introducing an admin-settable "exempt" state which would exclude residents from chores, we could allow residents to remain in Slack without having them counted as part of the house's live-in community.

Note that this functionality should be used for people away for one month or more. For shorter absences, the breaks functionality should be used.

For a first implementation, we will introduce the minimal change -- exclusion from chore points. In the future we may adjust the semantics to exclude additional behaviors.

Spec:

  1. Admin should be able to toggle exempt true/false
  • Takes effect immediately when being set to true
  • If being set to false, the activeAt timestamp should be updated
  1. If exempt == false, behavior remains the same as currently

  2. If exempt == true:

  • user is excluded for the purposes of chore points issuance
  • user cannot claim chores
  1. Regardless of status:
  • user chore preferences remain in effect
  • user hearts behavior remains in effect
  • user things behavior remains in effect
  • user can still vote in polls

Add quantities to regular buys

  • Add ability for users to input quantities for regular buys
  • Remove quantity from Things entries in DB, add to metadata

Get `updatedAt` to work properly

For some reason, with postgres the knex updatedAt functionality doesn't actually update by default, which seems odd but so it goes. If we're going to have those columns, they might as well work.

Improve logging

  • Update slack log level to "Info"
  • Add a per-endpoint log including residentId at beginning of each request
  • Add log event whenever a database struct is created

Add resolution flow to Chores & Things

Currently we don't automatically resolve polls for Chores & Things. We should work that in somewhere, transparently.

After closing this issue we can do a release, I think.

Set {} as default metadata

Currently the metadata columns can be set to null. This requires additional redundant handling in the codebase. Making the columns not-nullable with a default value of {} would allow easier handling downstream.

  • Update schema to make columns not-nullable with default values
  • Update existing entries to have default values where null
  • Update existing tables to use default values for new entries

Reference SQL:

-- 1. Update existing NULL values to an empty JSON object
UPDATE your_table_name
SET metadata = '{}'
WHERE metadata IS NULL;

-- 2. Alter the table to set the default value and add the NOT NULL constraint
ALTER TABLE your_table_name
ALTER COLUMN metadata SET DEFAULT '{}',
ALTER COLUMN metadata SET NOT NULL;

The following tables have a metadata column:

  • Poll
  • Chore
  • ChoreValue
  • ChoreBreak
  • ChoreProposal
  • Heart
  • HeartChallenge
  • Thing
  • ThingBuy

Clean up db migrations

There's currently one production deployment, so clean up all the migrations manually before releasing version 0.1.0.

TODO:

  • Add houseId to the ChoreValue table (see #39)
  • Manually add missing houseId values to all tables
  • Manually remove null and value constraints on ChoreClaim to allow for improved gifting (see #30)
  • Consolidate interval update migrations into the main migrations and delete initial Heart migrations
  • Update production migrations table to reflect new state
  • Cross fingers

Add support for special buys

Allow residents to propose arbitrary purchases with a higher bar for approval and a longer voting window.

  • Add frontend support to UI
  • Update rendering of resolved Things to support special buys

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.