BitShares Core Team Budget Worker Proposal - 2018

Author: Ryan R. Fox ( "fox" )

) 国语翻译 Mandarin Translation: 招木 ( "Zhaomu" )

Intent

Establish a budget to sustain the development efforts of the BitShares Core Team

to sustain the development efforts of the BitShares Core Team Define a framework for the Core Team to collaborate within

for the Core Team to collaborate within Provide transparent delivery of BitShares development efforts to the community

Background

BitShares Core software is currently maintained by individuals either volunteering their time or

receiving funding through distinct short-term worker proposals. The BitShares Community has

recognized the need for organized development efforts to increase the utility of our platform.

There is a large backlog of ideas and requirements lacking prioritization, including feature

enhancements, bug fixes, and BSIPs. Therefore, proposed is the establishment of a long-term,

professional, global team dedicated to cohesive and comprehensive development efforts delivered

transparently.

Worker

This is a Budget Worker Proposal which provides partial funding through calendar year 2018 for:

BitShares Core Team Roles

Collaboration Tools

Development Initiatives

This Worker funds an initial Core Team at reduced hours to mitigate draw on the reserve pool

and support bootstrapping efforts. Subsequent Worker(s) will be offered to fund the team as it

scales up. This Worker intends to work in concert with the existing development resources including

Abit, Alfredo Garcia, and the UI Team, led by Bill Butler.

BTS are collected into the "workers.bitshares.foundation" account which is a multi-sig account

controlled by "BitShares Blockchain Foundation" and owned by "committee-account" using the

Budget Worker Model [5]:

Transparent accounting provided by the BitShares Blockchain Foundation [6]

Submitted invoices reviewed, approved and remitted within 5 business days

Compensation paid in bitUSD (according to the rules set forth in [5])

All unused accumulated BTS returned to the Reserve Pool at the conclusion of the Worker [5]

Initial BitShares Core Team

The initial Core Team is comprised of community members who have demonstrated their ability to work

with Graphene-based code, contribute to this community with thoughtful leadership and share a

dedication to the BitShares ethos. Initially, the team is a skeleton, with many contributing to

multiple roles and at reduced weekly hours as represented in Table 1 Each team member is focused

on returning more value to the BitShares platform than is drawn from the reserve pool.

The initial team is estimating 54 hours of weekly effort. This Worker proposes to budget $15,000

for a team delivering approximately 100 hours weekly to support conservative growth. Demonstrated

results will warrant subsequent Worker(s) to budget for additional team members and weekly hours.

Table 1. Initial BitShares Core Team

Roles (described below) Rate Range (Hourly USD) Team Members Estimated Hours Core Developer $150 Peter Conrad 10 hours weekly Core Developer $150 Abit 5 hours weekly* Core Developer $150 Alfredo Garcia 2 hours weekly* Junior Core Developer, BA $125 Taconator 10 hours weekly Business Analyst, Coordinator, QA $125 Ryan R. Fox 15 hours weekly Lead Documentation Specialist, QA $ 90 Tamami Sugimoto 10 hours weekly UI/UX Liaison $125 Bill Butler 2 hours weekly Core Developers $125 - $200 -open- - Business Analysts $ 75 - $125 -open- - Documentation Specialists $ 60 - $ 90 -open- - QA/Testers $ 75 - $125 -open- - TOTALS INITIAL CORE TEAM $ 90 - $150 -all- 54 hours weekly** $6,825 WEEKLY (EST.) - BUDGET FOR THIS WORKER $15,000 ≈100 hours weekly

*Abit and Alfredo intend to complete their existing Workers. Their contributions as part of the

Core Team will initially be at the reduced hours above, then expected to increase similar to their

existing Worker.

**Additional hours for all roles remain available at this time. Please contact

[email protected] for additional information.

BitShares Core Team

The BitShares Core Team is a self-organizing agile-principled team focused on delivering regularly

scheduled releases and ad hoc bug fixes for the BitShares Core software. The actual number of

contributors and roles may vary within each development cycle (described below), leading to

variations in weekly compensation per contributor. The team has discretion in allocating resources

to meet the needs of each development cycle.

Producing reliable and secure software at scale requires ideation, organization, definition,

prioritization, development, testing and documentation. The ideal team composition includes roles

specializing in each of these functions and capable of contributing to many. The goal of a highly

functioning team is to fully utilize each individual's effort and together maximize their

collective output.

Development Cycles*

Feature Release (non-hard fork): Three-week sprints

Core Release (Hard Fork): Twice annually: first Thursday of June & December



*Subject to change upon consensus of Core Team Members

A typical Feature Release will likely span three weeks from planning thru tested and delivered

software, called a sprint. Many agile principals will be adopted by the Core Team, but do not

expect a strict scrum practice. This is a global team, so a formal daily standup is unlikely. One

should expect asynchronous communication within various collaboration tools keeping the team

informed of progress, plans and problems. The community are our stakeholders; we look to them for

ideas, enhancements and identifying bugs, then organize these into a backlog for future

development. The Coordinator facilitates the prioritization of the backlog items based on feedback

from the stakeholders and the Core Team. The team will keep the stakeholders informed of

development progress throughout the sprint.

At the beginning of a sprint cycle the Core Team meets to review the prioritized backlog and

identify the highest value items that each can contribute to, within the established time block.

Many features have dependencies and cannot be implemented within a single sprint. Therefore, the

team will create tasks, a subset of the feature, that can be delivered on time. A task may be

researching and defining requirements to be implemented later. A task may be writing a test case,

or perhaps implementing only a subset of a given requirement, or even documenting how existing code

functions. The team will maintain a sprint backlog comprised of the tasks selected from the project

backlog. Completing each of these tasks results in incremental value added to the project. Testing

is performed throughout the sprint to ensure functioning code from each increment.

As the sprint nears completion, the Core Team will begin release planning. They will select which

tested increments are ready to be included in a release candidate. This will be deployed to a

staging network for final validation. A release will be tagged within the bitshares-core GitHub

repo along with release notes. The team also produce stakeholder documentation detailing resource

allocations and budget consumption.

The final steps of the sprint include a retrospective look at how the team performed. Here we

reflect on our original estimates, the delivered increments and what contributed to our successes

and shortcomings. We will use insights gained from the retrospective to improve in the next sprint.

The following day we immediately begin our next sprint cycle.

Bounty Process (Implicit Budget)

The BitShares Core Team maintain a prioritized project backlog of ideas, enhancements, bugs and

BSIPs which they select from for their development sprint. The community is encouraged to comment

on the items to aid in refining requirements and guide prioritization. Effort estimates are first

assigned to the highest value backlog items. Unassigned and estimated project backlog items are

available for ad hoc bounty development. Successfully completing ad hoc bounty items is a primary

consideration for an invitation to join the Core Team on a future sprint.

The Core Team encourages ad hoc code contributions of estimated project backlog items from

community members and will compensate successfully merged code based on those estimates. The

Coordinator will facilitate onboarding new community contributors to claim a backlog item and

implement a solution that fits within the broader architecture design defined by the Lead

Developer. Care must be taken to ensure effort is not duplicated and can easily be merged within a

future sprint. Claimed items that become a dependency of a sprint may be recalled by the Core Team

to facilitate feature delivery. Compensation for a partially completed increment will be evaluated

by the Lead Developer.

Compensation for a successfully merged bounty item is drawn from the excess implicit budget

capacity within Table 1 when any Core Team Role is not fully allocated. The specifics for the

bounty process is still being revised (note: it is largely based on the process in use by the UI

Team).

BitShares Core Team Framework:

Accountability

Maintain timely collaborative communications with each BitShares Core Team Member

Participate in at least two of three weekly Collaboration Sessions (see Coordinator description)

Target a majority of your weekly hours between Tuesday - Thursday Facilitates ad hoc collaboration Facilitates healthy work/life balance



Transparency

Maintain working increments within Community facing collaboration tools

Maintain timely updates within Community facing collaboration tools of work in progress and development priorities

Delivery

Deliver the highest value work first

Favor release schedule over feature completeness (see Development Cycles)

BitShares Core Team Member 'Contract Work' Guidance:

This section is to be considered guidance, not a legal statement. The BitShares

Decentralized Autonomous Community (BitShares DAC) controls the funds collected

by this Budget Worker and are issued as compensation to individuals performing

agreed work as described elsewhere in this document. Effort contributed by

individuals is considered by personal commitment as no formal employment

contract is intended or able to be formed between BitShares DAC and the

individual worker. Neither the BitShares Blockchain Foundation (BBF) nor the

BitShares Committee or any individual serving those entities are to be

considered employers of any agreed contribution. No BitShares Core Team Member

or Role is considered the manager or the employer of any individual person. Any

compensation received from the BitShares DAC might be considered earned income

for individual persons involved in their individual situation and may be

subject to tax reporting by the recipient. Neither BitShares DAC, nor the

BitShares Blockchain Foundation, nor BitShares Committee, nor the Coordinator,

or any Core Team Member will neither carry responsibility, nor command, nor

issue, nor prepare any document, including tax documents, to any entity or

natural person. All effort performed is a contribution to the BitShares DAC

adhering to its MIT license.

Each Core Team Member is encouraged to contribute in a responsible way with

respect to a work/life balance and legal employee engagements he or she might

have entered into, or enter, with an employer.

Table 2. Core Team Roles and Rates

Roles (described below) Hourly Rate (USD) Lead Core Developer $200 Senior Core Developer $175 Core Developer $150 Junior Core Developer $125 Lead Business Analyst $125 Senior Business Analyst $100 Junior Business Analyst $75 Lead QA/Tester $125 Senior QA/Tester $100 Junior QA/Tester $75 Lead Documentation Specialist $90 Senior Documentation Specialist $75 Junior Documentation Specialist $60 UI/UX Liaison $125 Coordinator $150

Core Developer

The Core Developer is a seasoned C++ developer primarily tasked with writing and documenting the

source code. Secondarily, the Core Developer is tasked with refining user stories, requirements

and process models prior to development as well as resolving bugs during testing.

Core Developer Key Performance Indicators

Collaborate with Business Analyst to refine user stories, requirements and process models

Collaborate with QA/Tester on bug identification and resolution

Collaborate with the Documentation Specialist to review documentation and ensure it matches

the source code intent and implementation

the source code intent and implementation Maintain code repositories within GitHub using GitFlow principles [7]

Contribute to Code Review of peers and provide approval for Release

Document code for the benefit of future development efforts

Business Analyst

The Business Analyst is a key role in a highly functioning team. They review the prioritized list

of enhancements and refine them into requirements prior to the Developer beginning their design.

Creating requirements documents often include user stories which narrate how the end user and/or

system behaves. Process models are another tool for conveying the requirements in a visual flow

diagram. Attention to detail and the ability to research and document are desired characteristics

During development the Developer will often collaborate with the Business Analyst to clarify and

refine requirements to ensure the implementation meets the desired behavior. The Business Analyst

will assist the QA/Tester with writing test cases as well as executing and documenting results

thereof. The Business Analyst will review and refine documentation produced by the Documentation

Specialist to ensure it accurately reflects the requirements.

Business Analyst Key Performance Indicators

Maintain user stories, requirements and process models

Collaborate with Core Developers to refine user stories, requirements and process models

Collaborate with Documentation Specialist to revise developer documentation matches the intent

of the user stories, requirements and process models.

Documentation Specialist

The Documentation Specialist is technical writer able to interpret test cases, user stories,

requirements, process models and C++ source code. Primarily the Documentation Specialist will

write documentation for the development community on the GitHub Wiki and docs.bitshares.org

website. Secondarily, the Documentation Specialist will work with Core Developers to revise

developer documentation based on the intent of the user stories, requirements and process models

to ensure they match the intent and function of the source code.

Documentation Specialist Key Performance Indicators

Collaborate with the development community to ensure documentation supports their efforts

Collaborate with the Core Developers to review documentation and ensure it matches the source

code intent and implementation

code intent and implementation Collaborate with the QA/Tester and Business Analyst to enhance documentation including user

stories, requirements, process models and test cases

QA/Tester

The QA/Tester is primarily tasked with writing test cases based on user stories, requirements and

process models, then executing the tests and documenting the results. Secondarily, the QA/Tester is

tasked with revising developer documentation with the Documentation Specialist.

QA/Tester Key Performance Indicators

Maintain test cases within Aha!

Collaborate with Core Developers to identify and document bugs in GitHub

Collaborate with Documentation Specialist to revise developer documentation, ensuring it matches

the intended workflow

UI/UX Liaison

The UI/UX Liaison is the primary point of contact for planning, prioritizing, defining and testing

UI/UX elements impacted by the implementation of the Core software. The UI Team function

independently of the Core Team, but their combined efforts are interdependent. Therefore, the UI/UX

Liaison is integral to delivering our feature rich Core platform.

UI/UX Liaison Key Performance Indicators

Maintain Feature Requests related to UI/UX

Collaborate with Business Analyst and Core Developers to refine user stories, requirements and

process models

Coordinator

The Coordinator is an experienced agile project manager or scrum master with deep knowledge of

distributed ledger technology. Primarily, the Coordinator is tasked with general facilitation,

organization and prioritization of development efforts.

Coordinator Key Performance Indicators

Maintain transparent communications with BitShares Community

Maintain transparent communications with BitShares UI Project Manager

Maintain transparent communications with Chinese Spokesperson

Maintain transparent communications with BitShares Spokesperson

Maintain prioritized backlog of issues/feature requests

Maintain project roadmap

Facilitate release cycles Facilitate communication to centralized exchanges listing BitShares tokens

Maintain physical presence for BitShares within co-working space

Maintain a pool of candidates to select from to fulfill open roles Contingency: If both a backlog of effort and an empty candidate pool for an open role exist,

the accumulated budget funds may be allocated to a recruitment effort to fill the open role

Onboard and mentor Core Team Members

Facilitate standing collaboration sessions (Thrice weekly 2-hour blocks dispersed for

international participation) 02:00 - 04:00 UTC Tuesday 19:00 - 21:00 UTC Wednesday 11:00 - 13:00 UTC Thursday

international participation) Approve invoices submitted by Core Team Members, forward to BitShares Blockchain Foundation

for remittance

for remittance Maintain vendor relationships for collaboration tools

Facilitate Developer Conference attendance

Initial Core Team Member Introductions

Abit - Core Developer

Draft: I have contributed to the BitShares code base for many years [11].

Alfredo Garcia - Core Developer

I recently began my second 6-month Worker as a BitShares Core Developer [12]. Mainly I focus on the

bitshares-core software by implementing features, fixing bugs, testing, maintenance, etc. [13]. I

also develop outside the core tools for other developers and final applications for the BitShares

community. [14]

Bill Butler - UX/UI Liaison

I lead the BitShares UI team and have extensive industry experience: Founded an ISP in 1993,

NodeJS, Angular, PHP, CouchDB, SQL. UX/UI Experience [16]. I am currently VP Engineering for a

healthcare software development firm and have eight years’ experience managing development teams.

Peter Conrad - Core Developer

I am a knowledgeable and long-standing member of the BitShares community (@pc) and an active

developer for many years [9-10].

Ryan R. Fox - Coordinator, Business Analyst, QA/Tester

I have actively contributed to BitShares development from its inception [1-4]. I have extensive

professional background in project management with software development teams and am a professional

scrum master (PSM-1) with multi-national experience in financial services, mortgage banking and

manufacturing.

Taconator - Core Developer, Business Analyst

I began participating in the BitShares Hangout in early 2017 after submitting a patch and

associated unit tests related to the recurring withdrawals capability that already existed in

BitShares Core [8]. I also began publishing monthly reports on the fees collected by the BitShares

blockchain in April 2017. I have experience within various industries identifying problems of

non-technical end-users, designing technical products for solving those problems, and leading teams

to successfully build those technical products. (Just because one might have a "hammer" does not

mean that every problem is a "nail".) These solutions span from augmented reality applications on

mobile devices to global distributed software systems.

Tamami Sugimoto - Documentation Specialist, QA/Tester

I have created and revised documentation for BitShares over the past year [15]. I hold a Masters in

MIS and have held professional titles including Systems Analyst & Programmer, Web Designer and

Database Administrator. I have experience using Content Management Systems to re-organize multiple

websites. I am proficient analyzing system code in many programming languages and have created many

web applications and websites.

Collaboration Tools

The BitShares Core Team use various collaboration tools to organize their work, convey ideas and

aid development efforts. Transparency of development efforts to the community is a key requirement.

Tools selected by the team generally provide read/reviewer access for the community to observe

progress, track our time and provide feedback. Write/contributor access may be limited to a

specific Core Team role(s). License quantities and types will vary monthly, therefore $2,000 is

budgeted for tools. A non-exhaustive list is provided in Table 3 below.

Table 3. Collaboration Tools (Monthly)

Description Amount (USD) Software Tools $2,000 --Code Repository -- --Continuous Integration -- --Continuous Code Quality -- --Product Roadmap -- --Process Models -- --Time Tracking/Auditing -- --Infrastructure Environment -- Escrow and Remittance (BBF) $3,000 TOTAL TOOLS BUDGET (MONTHLY) $5,000

Select Core Team will meet prior to each of the scheduled DevCon events for team building,

in person collaboration and presentation preparation. The Core Team will participate in conference

events in constructive ways. A budget for Conference participation is provided in Table 4 below.

Table 4. Conference Budget (One-Time)

Description Accommodations Amount (USD) DevCon Spring 2018 - Shanghai, China Travel round trip (up to $2000) 5 FTE $10,000 Lodging (up to $150) 5 nights $3,750 Meals (up to $60) 5 days $1,500 DevCon Autumn 2018 - TBD, Europe Travel round trip (up to $2000) 5 FTE $10,000 Lodging (up to $200) 5 nights $5,000 Meals (up to $80) 5 days $2,000 TOTAL TOOLS BUDGET (ONE-TIME) $32,250

Development Initiatives

The Initial Core Team has identified in Chart 1 a set of Initiatives to research, define and

develop as part of their 2018 Roadmap. A detailed Roadmap will be a deliverable of this Worker for

Community review. An 'Ideas Portal' will also be maintained to incorporate Community priorities

into the Roadmap.

Caveat: The Core Team cannot commit to deliver fully implemented solutions for all identified

Initiatives. The intent here is to provide guidance at the outset, realizing the Core Team

continuously evaluates and prioritizes new issues ongoing.

Interchain Communication Atomic Cross Chain Transactions (ACCT) EOS.IO Integration Report Trustless Gateway

Market Mechanics Market Engine Improvements Maker/Taker Model Bancor Protocol

Consensus & witness_node Enhancements Database Storage Options Installation scripts / environments

Confidential Transactions / Confidential Assets

Hardware Wallet Integrations

API & cli_wallet Enhancements

Community Engagement Vote Decay Fee Schedule based on Market Pegged Assets

Refine/Prioritize Existing BSIPs

Chart 1. Initiatives - 2018

Budget

The items listed in the tables below represent an upper bound on expenditures. All funds

collected and unused at the conclusion of this Worker Proposal will be returned to the Reserve

Pool [5-6].

Table 5. Core Team Budget

Description Amount (USD) Daily TOTAL BUDGET Total Core Team Roles (Table 1) $15,000 ++ Convert to daily (/7 days) $2,143 Total Collaboration Tools (Table 3) $5,000 ++ Convert to daily (/30 days) $167 Total Conference Budget (Table 4) $32,250 ++ Convert to daily (/44 weeks /7 days) $106 ≈≈ TOTAL DAILY BUDGET ITEMS $2,416 ≈≈ ≈≈ TOTAL 44 WEEK BUDGET $744,128

Duration and Pay

This proposal will last for roughly 44 weeks, starting from 1st March 2018.

Payments:

Invoices from Core Team Members will be submitted to the Coordinator by Monday 12:00 UTC for work

performed thru Sunday 23:59 UTC of the previous period

performed thru Sunday 23:59 UTC of the previous period Coordinator will review and approve submitted time sheets, then forward an invoice to BitShares

Blockchain Foundation for release of funds from escrow to "bitsharesdev" account for remittance to

contributors

Blockchain Foundation for release of funds from escrow to account for remittance to contributors Coordinator will review and approve vendor invoices, then forward to BitShares Blockchain

Foundation for direct payment to vendor

Calculation:

3.9761 BTS/bitUSD = Settlement price of bitUSD at the moment of writing (2018-02-16)

2.5 = Collateral multiplier to cover market fluctuations and borrow with 2.5x collateral, as needed

$2,416 USD/day * 3.9761 BTS/USD * 2.5 collateral multiplier ≈24,016 BTS/day

USD payment will be in bitUSD with method developed by the BitShares Blockchain Foundation [5].

References