Giter Site home page Giter Site logo

uav4geo / quadratik Goto Github PK

View Code? Open in Web Editor NEW
11.0 6.0 2.0 1.87 MB

Free and open source software for easy self-hosted quadratic funding!

Home Page: https://fund.webodm.org

License: GNU Affero General Public License v3.0

JavaScript 67.12% HTML 2.16% Vue 29.93% Shell 0.05% SCSS 0.75%
foss funding quadratic stripe

quadratik's Introduction

Quadratik

Free and open source software for easy self-hosted quadratic funding.

image

What is quadratic funding

tldr; it's not economically advantageous for people to directly fund open-source software. We make it advantageous by combining each pledge with additional funds from a sponsor pool. The additional funds optimally compensate for the value a pledge benefits other users. Example: if Bob makes a contribution ($25) for something that could be valuable to Alice, Bob needs to be compensated for the additional benefit that Alice gets ($25). So Bob's pledge needs to be worth $50. More pledges lead to more overall value for everyone involved, making it economically advantageous for both Bob and Alice to pledge.

The problem

Raising funds for public goods (e.g. open source software) is difficult:

Every individual has an incentive to consume a [public] resource at the expense of every other individual with no way to exclude anyone from consuming. It results in overconsumption, under investment, and ultimately depletion of the resource.

In software, although making copies of a software is virtually cost-free, the time contributors spend on an open-source project is finite. Any successful open-source project will often run out of developer time, unless the project finds a way to grow in a sustainable manner.

Growth is often achieved by relying on large entities sponsoring for developers' time and/or relying on the efforts of individual volunteers. This is less than ideal because it places the sponsors in a position of too much power, reduces the ability of the community to steer the project and places unfair burden on the volunteers with unpaid work.

Existing fundraising systems (eg. Indiegogo, Patreon and others) work as "pre-sale" or "exclusive access" platforms (backers usually receive certain exclusive benefits for their pledges). These platforms have accomplished some successes, but don't address the economic disincentive of people contributing to a common good. They also often rely on exclusive transfers of value between backers and content creators, which might be incompatible with the open-source philosophy of sharing.

Quadratic funding

When a fund is started, we designate a pool sponsor for the fund. The pool sponsor can be either the developer itself or an organization that has the financial resources to act as a sponsor. The purpose of the pool sponsor is to compensate for the additional value that a pledge from one user generates for everyone else.

Every time a pledge is made from a community user, the system takes the square root of each pledge, sums them up and squares the result (thus the term quadratic):

image

You can prove mathematically that this subsidy optimally compensates for the value that Bob and Alice place into the fund, considering that Bob's pledge increases the value of Alice's and vice-versa.

It follows that more pledges lead to more overall value. The subsidy pool makes it economically advantageous for both Bob and Alice to pledge.

Examples:

  • Two people each pledging $25 (overall value: $100) bring twice as many funds than a single person pledging $50 (overall value: $50).
  • Eight people each pledging $25 (overall value: $1600) bring four times as many funds than two people each pledging $100 (overall value: $400).

References

Installation

You will need to install:

Extract the source code in a directory, then from the directory:

npm install
npm install -g webpack webpack-cli
webpack
node index.js

TODO: Onboarding Setup. Currently you need to open the sqlite3 database using DB Browser for SQLite in data/sqlite3.db and create 5 rows in the config table:

image

As well as entries for each fund.

You will need to create an account with Stripe to accept payments and setup the secret and publishable API keys.

The application should be available from your browser at http://localhost:3000.

Contributing

We welcome contributions! If you want to add something, please open a pull request.

Reporting Issues

Please open an issue if you find a problem with the software.

FAQ

How does a pool sponsor predict how much they'll end up being committed to paying?

You can use the formula:

import math
funding_goal = 4800
minimum_pledge_per_user = 10
max_sponsor_contribution = funding_goal - math.floor(1/2*(minimum_pledge_per_user + math.sqrt(4*funding_goal*minimum_pledge_per_user + minimum_pledge_per_user^2))/minimum_pledge_per_user) * minimum_pledge_per_user # --> 4580

This is in the unlikely event that everyone pitches in the minimum pledge amount.

quadratik's People

Contributors

pierotofy avatar skade avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Forkers

royhodge skade

quadratik's Issues

Discourse Integration

Quadratik should integrate with discourse to keep the community up-to-date on latest funding opportunities, updates on pledges, and successes.

Feature Request: More detailed pledge list view

Current UI:
image

Suggested UI:
image

I'd love to see the Pledge Details/History page have more information, such as the Percent Funded at each donation, as well as the resultant Sponsor Pool Contribution at each donation.

Make the software generic

Currently the software has hard-coded references to OpenDroneMap (primary use case). We should make it project agnostic.

Pagination Support

  • Add support for pagination
  • Add support for selecting a single fund view

Add preference voting

Allow pledgers to express a vote (and for the system to accept a vote during pledge).

Offer users a way to remove/update their pledge amounts

Especially as a fund deadline comes to end, some users might wish to increase/change their original pledge. Since no double pledging is allowed, the system should allow users to change their original pledge (and remove it too).

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.