A Decentralised Platform for Rewarding Open Source Contributions using Smart Contracts.
This document is for informational purposes only and does not constitute an offer or solicitation to sell shares or
securities in FundRequest or any related or associated company. Any such offer or solicitation will be made only by means
of a confidential offering memorandum and in accordance with the terms of all applicable securities and other laws.
Table of Contents
Introduction to FundRequest and existing concepts
Open source software refers to a computer application where the source code is available to the general public for use and/or modification.
Programmers contribute their coding skills to a broader community when there is a personal gain to use the open source application or to receive
peer recognition. The benefits of this so-called crowdsourcing offers small and medium sized companies value by i) reducing the internal cost of
development ii) by increasing the speed to market. Yet, a lack of incentives causes the majority of open source projects' inability to garner
sufficient community adoption for a longer period of time.
FundRequest is an integrated platform to fund open source projects, thus financially incentivising the open source community.
The platform allows developers to fix bugs or to program additional features for an existing application.
FundRequest will be developed on the Ethereum Blockchain.
The centralised structures of traditional businesses are challenged, as blockchain gains traction as a solution for
secure and transparent transactions without the need for a mediator. FundRequest aims to leverage upon a decentralised
ecosystem as it reduces both operational and regulatory burdens and protects against organisational corruption such as
fraud and embezzlement. FundRequest creates smart contracts to incentivise developers to solve a problem in the open source
community. With a smart contract the code is law and thus there is no ambiguity ruling whether the conditions for funding
have been met. FundRequest offers a layer on top of open source platforms such as Github or StackExchange and uses their functionality
to automatically decide if a request is resolved (or not). Smart contracts use that information to automatically and autonomously
distribute the collected funds for that request. This significantly reduces the risk of fraudulent reporting that is rampant on
Whilst being inconceivable a decade ago, open source software has become the foundation for applications development, operating systems,
databases and cloud computing. According to the 2016 Future of Open Source Survey 65% of respondents contribute to open source projects, which
is a 50% increase compared to the 2010 survey. For a number of years the top reason to use or leverage upon open source was to reduce development
costs. The 2016 results, however, showed the importance of open source development to be fix bugs, add functionality and gain a competitive
advantage. Today, open source is the default approach to develop software as more than 66 percent of respondents say they consider open source
software (OSS) before other options.
Inspired by the Open Source Software community collaboration, crowdfunding (e.g. Kickstarter, IndieGoGo) and crowdsourcing (e.g. InnoCentive,
Ideapoke, GitHub) platforms have grown exponentially over the last 7 years. Platforms such as IndieGogo and Kickstarter connect people to
fund inspiring creative projects and have formed a unique and disruptive marketplace.
A few major community-driven projects and organisations in numbers are:
OpenStack, the 2nd larges open source project, creates open source software for public and private clouds. In the latest release
more than 2,500 people and 300 organisations participated At the time of writing the project has more than 20 million lines of
code, written in 28 different languages and is contributed by 63,048 people from 186 countries.
GitHub, an online project hosting platform, is free for public ppen source code. The platform grew 800% in the last 3 years and
has 5.8 million active users.
Red Hat, the world's leading provider of open source solutions, uses a community-powered approach to deliver reliable
and high-performing Enterprise IT solutions.
Indiegogo, raised over $950 million through 11 million contributions over the past 7 years.
Kickstarter has 11.3 million users and 3.7 million users are recurrent backers of a project. Overall,
Kickstarter has successfully launched 118,000 projects and has raised $2.67 billion of pledged funding over
the past 7 years.
While forecasting the evolution of a relatively nascent market is complicated, open source collaboration is expected to continue growing in 2017.
According to Paul Niederer, one of the top 10 global experts on crowdfunding, the word "crowdfunding" will virtually disappear as peer to peer
transactions will become the norm by 2020.
Paul's other predictions:
Large companies will use crowdfunding extensively for R&D strategies
Businesses will outsource to crowdfunding platforms
For some raises, the crowd will determine rewards, assist with offering preparation and solve any issues before launch of a project
Rewards can be contrived by the pledger / investor rather than being specified
Two way negotiation can be built into platforms and a market for rewards may develop
Niche communities will raise funds as a group
Outcome monitoring is readily available as different services focus on what happens after the money is raised scoring both the
entrepreneurs and the investors
Blockchain technology is an emerging technology and has begun to threaten the market dominance of the current disruption businesses
such as Uber and AirBnB. Arcade City and La'Zooz are two examples of decentralised systems for ride sharing services. With the prodigious
growth in crowdsourcing and open source community collaboration, FundRequest delivers a decentralised peer-to-peer crowdfunding service
to the open source community.
How FundRequest works
FundRequest offers an integrated global decentralised platform where contributors can get compensated for their work and where people can
incentivise contributors to solve bugs, answer questions or create a particular feature in the open source community.
Through decentralisation, participants are completely in control of their funds while using FundRequest. The payments
and payouts are made by the individual participants and are cleared on the Ethereum blockchain without being processed by a
bank or any third party institution. The decentralised model reduces transaction and other operating costs, allowing savings
to be passed on to the consumer while existing centralised solutions place consumers at risk. Centralised accounts and deposits
can be hacked, embezzled, or even confiscated with little recourse for those affected. FundRequest enables users to manage
their assets without third party involvement.
Funding a request
For our pilot version FundRequest will only accept FND-token to fund an issue. In later stages FundRequest will accept funds from other crypto and non-crypto
assets such as transactions from PayPal.
Assuming the pilot user has an active account and has downloaded the FundRequest browser plugin button, the user sees a fund button for each open
(GithHub) request. The user chooses to fund the issue and specifies the amount. After confirming the transaction, the transaction amount is sent
to the Ethereum blockchain for validating and processing. Funding an issue generates a smart contract for that specific issue and is used for
identifying allocated funds until the conditions of the contract have been met.
The core idea of FundRequest is to create a solution that is as decentralized and open as possible. Leveraging the Ethereum
network as our blockchain backend will ensure that our solution will be decentralized, secure, and sound.
FundRequest develops smart contracts that are linked to specific objectives (like GitHub or StackOverflow issues). The smart contracts are processed by
the Ethereum blockchain.FundRequest will launch a crowdsale in the form of the ICO on the Ethereum blockchain. Tokens will be used to track stakeholders
of FundRequest Tokens (FND). FND tokens will be of a standardized ERC20 form, so it can be integrated or displayable by any party. The code will be
publicly available in our repositories and can be audited by anyone who wishes to do so.
With the Ethereum Blockchain as backend, we want to offer users easy to use API's and extensions (Chrome, FireFox,...). For this, we build an architecture in accordance with new but solid standards when it comes to high-availability, scalability, security and user-friendliness.
In this section, we explain how and why we build according to certain standards and technologies. It is always possible that components change, evolve or expand. We strive to keep the architectural design and documentation as up to date as possible, so everyone can quickly grasp the architecture. We welcome thoughts, ideas and architectural suggestions in the form of GitHub issues, where one could explain why and how we would use a certain technology to reach our goals. We are always open to refreshing suggestions.
The details about the backend solution will be elaborated on a later timeframe. Currently we are developing the specific technology stack. How we see it at this point however, can already be publicly disclosed.
The backend will probably be the only centralized part as we need to have some place where we can visibly link contracts to funding goals, like GitHub issues.
To build the core application platform, we will use a modular structure for our MVP. This modular monolith can be later easily transformed into microservices if needed. This structure will fit perfectly what we need for our MVP: simple, stable and low costs. When/if we switch to microservices, we want to do it right!
As a datastore, we will use MariaDB. This relational database is easy to setup, already exists for a very long period and performance will be more than sufficient for our MVP (for comparison, wikipedia uses MariaDB). When accessing the datastore, we will always call an interface so we can easily switch the datastore underneath if necessary. We will use Spring Data to give us access to the database.
A connection with the Ethereum network will be made using a micro service that functions as a standalone Ethereum node. Consequently our connection to the network is always up to date, and we can immediately communicate with it. We have first hand experience with EthereumJ, which will probably be our choice of implementation as a library.
Our API is our main entry point for various solutions. The API exposes and assemble all components which are necessary for a full functioning web application. It will be scalable, lightweight as well as completely stateless. These benefits will make it easier to scale without having to think about session administration and caching. How the different front-end components will manage sessions will be entirely their responsibility. This REST API will be documented using Spring REST Docs. This will make it easy for internal development, but also to keep the door open for future integrations with other platforms.
In order to support as many users as possible, we will support several DApp clients and will not limit us to 1. For sure, MetaMask will be one of the clients that we will support.
Chrome Add-on (all other possible browser extensions)
One of our milestones we'd like to reach is the possibility to create a chrome add-on. In this add-on, we'd like to enrich websites and other platforms with bounties. This add-on will seamlessly integrate with DApp client and the Ethereum Network, as well as our own APIs to have a native feeling of bounties on third party networks. Currently inter-add-on communication is not immediately possible so we will have to see how we will solve this issue. We can for example already work together with MetaMask to create a solution which allows payments for fundrequest.
For our CI, we are using Jenkins. This is our continuous integration / deployment tool that will always build and deploy the FundRequest code. No manual labour necessary here!
All of our code repositories will be publicly available on GitHub. All tickets and development will also be documented on GitHub. This approach will make sure that everyone will be able to see what we're doing and open up the repositories for all possible contributors who wish to cooperate. Internally we are working on a private repository, when we release a version we will publish all the code to a public repository. This will allow us to keep a competitive advantage.
We'll be using a Feature Branch Workflow as one of the proven standards for code management.
Following standard software development practice we will work with 4 main environments, namely:
All our developments will be automatically deployed to the development environment, it is the environment where features are developed. The test environment is for internal testing, but might also be opened up to the public.
Acceptance will be a replica of production, so we can test out our bug fixes before pushing through to production.