-
Notifications
You must be signed in to change notification settings - Fork 1
Motivation
Collaboration in the early days of computing was open, and knowledge was freely shared in keeping with the academic traditions of the universities which made up the majority of early adopters. Groups worked together in an effort to build networks and share computer bug fixes to further the progress of computing systems. However, as the industry started to expand rapidly in the 1980s and software began to be distributed on physical disks that made copying software easier than ever before, the open source community came under attack by companies that relied on closed source licensing models. 1981 was a particularly important year, marking the end of the Diamond v. Diehr U.S. Supreme Court case, where the P.T.O. was ordered to grant the first patent on computer software.
By many accounts it wasn’t until October 31, 1998 that the fight between closed source and open sourced proponents reached its peak, when Microsoft’s first so-called “Halloween memo” was leaked, describing open source as having “benefits that are not replicable with our current licensing model” that “therefore present a long-term developer mindshare threat” despite their public statements to the contrary.
By 2005 the advent of distributed version control software like Git, where developers could share entire libraries and develop collaboratively, had caused open source software to expand exponentially in use and popularity. Code hosting and sharing services, such as GitHub, took this one step further, and were arguably the catalyst that caused traditional business models of closed source software to embrace open source models, so as to further the development and use of their services in a wider community.
Now, open source is in many ways the default. If you’re a software company not contributing to and building off of open source software, you’re behind the curve. In fact, a majority of companies (upwards of 78% by some accounts) are actively encouraging developers to engage in and contribute to open source projects. And these aren’t just newer software companies, companies like IBM and Microsoft are frequently engaging the community to talk about their commitment to open source. Really, who would have guessed in 1998 that, of the over 330,000 organizations with employees contributing to open source projects on GitHub, Microsoft would be the largest.
I often compare open source to science. To where science took this whole notion of developing ideas in the open and improving on other peoples’ ideas and making it into what science is today and the incredible advances that we have had. — Linus Torvalds
So why do people care so much about open source software? Outside of arguments around politics and community, there are some clear pragmatic reasons that open source is useful. Here are just four:
Linus’s Law: Given enough eyeballs, all bugs are shallow. Open source projects can leverage the power of the crowd to find and fix bugs before they become critical vulnerabilities.
Proof of Code: Closed source software relies on trust in a centralized party. If that party decides to act maliciously, whether that means building its software to cheat at chess or drain your bank account, you may not find out before it’s too late. Although ownership of GitHub repositories is still centralized, transparency brings with it accountability.
Enforcing code quality and development best practices: While large centralized organizations can still stumble into bureaucracy and survive, open source projects cannot. That’s why the vast majority of open source projects by necessity follow an asynchronous, and distributed workflow model and use tools like Git to organize and review code and accelerate development time. These workflows also provide a natural way to review the progress made on a given project and ensure that it’s meeting its stated milestones.
Standing on the shoulders of giants: Need a camera for your React Native app? There’s an open source component for that. As the software world continues to embrace micro-service architectures the ability to grab the pieces you need and quickly hack together the MVPs that are ubiquitous in the agile software world is invaluable.
Despite the resurgence of open source, there is a significant lack of funding and participation for even the largest open source organizations like Mozilla and Apache. And while Kickstarter, Patreon, and other crowdfunding platforms have made it easy for smaller centralized teams to sell anything from gadgets to documentaries without that kind of overhead, getting support for open source software projects can be a bit more challenging.
But putting aside the problem of raising funds, there’s still the problem of how those funds are distributed. In the current model when open source projects raise significant amounts of funding, that funding tends to go towards a small group of paid employees rather than to the total pool of project contributors. As mentioned above, many open source projects don’t have the funding to pay for the work, but for larger groups with funding, the problem may instead be how to distribute rewards to contributors in a meritocratic fashion. GitHub repositories aren’t companies, contributors aren’t employees, and getting the bank account or PayPal information of in some cases 10,000+ contributors is simply not feasible.
So what we need is a way to pay pseudo-anonymous GitHub users for work they’ve actually completed that:
a) is accessible to projects regardless of how much funding they have; and
b) doesn’t require the creation of a messy bureaucracy likely to include a Google Sheet of PayPal information with Equifax levels of security.
To us, this sounds like a job for smart contracts.
GitToken is an open source project aimed at improving the way open source projects are managed, and how contributors are rewarded. GitToken leverages GitHub and the Ethereum blockchain to allow any GitHub organization to:
-
Incentivize open source collaboration and reward contributions by issuing ERC20 tokens that represent the work that is submitted to the project.
-
Monitor its projects and view tangible performance metrics for repositories.
-
Offer instant liquidity to contributors through auction and token exchange markets.
Tokenizing distributions gives any project the opportunity to raise funding with no overhead and for contributors to be collectively rewarded in direct proportion to the work they’ve done. A useful corollary to the fact that rewards are proportional to the funds raised is that it incentivizes developers to work on projects that the community values (as far as donationclears can be a proxy for total community support) and thus more efficiently allocates open source development effort.
In the GitToken model, contributions are mapped to GitHub web hook events (e.g. committing code, merging branches, forking repositories, and reviewing code). GitToken provides a Docker container to deploy a server for configuring and listening to GitHub web hook events.
By allowing each organization to separately configure their GitToken instance we allow them to incentivize Git workflows that best fit the style of the core team. Our hope is that as GitToken evolves we can use the data collected to build a model that ensures you’re incentivized for using one of a select set of best practices — practices that promote teamwork, in addition to modular and auditable code.
Contributors receive tokens through interacting with any organization that has configured a GitToken server and has set up a GitHub web hook. When a contributor creates a new event, their GitHub login username is provided in the web hook request and each username is mapped to an Ethereum address in the GitToken contract.
After verifying their GitHub identity by authenticating into GitHub using their OAuth token credentials, contributors authenticate themselves with the token contract using the GitToken server authentication URL associated with an organization. For example, the authentication URL for the GitToken GTK token contract is https://GitToken.org/auth/github. If a contributor has not yet verified their identity with the contract, their contribution rewards will be held by the contract until their identity has been verified.
Because all tokens accrued by repository contributors using GitToken are ERC20 tokens, they can be exchanged over-the-counter (OTC) with private parties using Ethereum contracts, and hence contributors can choose to recognize the value of their tokens in ETH as they so choose. We hope that over time this liquidity will allow for the open source ecosystem to act like a true marketplace of ideas.
While a lot of work has been put into GitToken so far, we still have a long way to go. As a starting point, we’re aiming for an alpha release on the Ropsten testnet at the end of the month.
To make our alpha release as easy as possible we’re building out the GitToken CLI, a command line interface for configuring and interacting with your GitToken environment.
GitToken is itself entirely open source and intends to use its own mechanism for funding development once we’ve tested sufficiently on the Ethereum Ropsten test network.
So, if you’d like to get involved (and rewarded), feel free to submit an issue or a pull request on our GitHub repositories, connect with us via Gitter, or just reach out to us directly.