Closed oskarth closed 6 years ago
Hi @oskarth! I am happy to lead this if everyone else is OK with that. I think Anna might want to focus on QA, and only devote the time Testing & Evaluation requires here. That said, if I am wrong, it's worth noting that Anna is more experienced than me and currently has deeper insight into the issues in status-react and status-go, so would make a better lead if she does want to take point. Would be an awesome way for me to learn more about the code-base and sharpen my own clojure and go skills!
(a) Curation of issues. I can do it + communication and coordination with a core team, so we understand the SOB mechanism and have more and more bounty issues with minimal administration effort on top of this. Guess 10 hrs per week might be enough (b) - assumed it's external developers who contribute - suggest @andytudhope can do this in close cooperation with SOB team and me
@andytudhope @annadanchenko Cool, go for it! Do you want to setup channel etc? As a dev would like to have clarity in what specifically I can do to get other people to do specific pieces of work I know need to be done but they don't have to be done by me.
I think it'd also be good if we have 1-2 devs from both Clojure and Go team who can help @annadanchenko select issues, especially since a bunch of these might be technical and not necessarily user-focused.
Very happy to help with this initiative as well @oskarth @annadanchenko @andytudhope
OK, so Anna, Hutch and I will collaborate on this. @oskarth and @tiabc will help just a few hours a week to curate the best issues for bounty following O's outline above (particular w.r.t time-critical issues that should rather be solved by core contributors).
Anna has devoted 10 hours/week to curating correct issues with the team. I will devote 10 hours/week to ensuring communication with all devs, capturing their details and following up in GH and Riot. Hutch will support these efforts, though has not yet detailed a time commitment. Suggest one call per week to identify bounty issues that are not being attempted and try to figure out why, to discuss issues under review, and generally keep on top of things.
Most of the initial processes are set up, but far too manual. @pablanopete it would be really great to see if we can automate the contributor spreadsheet. @oskarth is there not just a way to pull this stuff (GH username, email if available, website etc.) directly from the SOB backend? We already have the analytics from there to assess accurately the two stated goals:
monthly active contributors daily transacting users (of SNT)
and would be nice to see if we can enrich that, or just make it more accessible to the team.
is there not just a way to pull this stuff (GH username, email if available, website etc.) directly from the SOB backend?
@andytudhope I believe we have a bunch of this data available, yes. If you give me a list of the data you think would be useful I'll see what I can dig up later this week. Some (website) might require some additional work but I suspect basics (username, issue, payout) can fairly easily be dumped from DB. We can then create a cron job to send report of this on a weekly basis, say.
I can devote at least ~10 HR PW as well to communication with devs / followup and spreadsheet curation.
~5 HR PW to issue curation after discussion with @annadanchenko @andytudhope and definition of issue criteria
@oskarth @tiabc @andytudhope @pablanopete My vision on the bounty process in the core team. So, any core team member can submit a proposal. Text as it's explained to the core team member (developer, tester):
bounty-size-XL
? Are there any borders between sizes? If we don't have them, the estimations will be pretty subjective and approximate.Ready for bounty check
to something like bounty-awaiting-approval
or awaiting-bounty-approval
or awaiting-bounty-check
or anything else consistent with other labels format?Clarification on distinction between this swarm and SOB:
SOB is a separate division/team with goals to have devs and organizations in general. This would still exist even if Status wasn't a consumer of SOB.
This swarm is about Status as a consumer of SOB. Even if SOB didn't exist Status would still benefit from a bounty program like Gitcoin.
Have there been progress to this? We seem to be running out of PR's for people externally to be involved in, but I doubt it's because we don't have work to do.
@naghdy so this is definitely something we need to work on as it is the one part of our process that we can't directly control - we require the devs in either status-react or status-go to move issues into the appropriate column in their ZenHub boards (Bounty-Check in status-react, Goteam stil needs to make one) so that we can review them, edit the issue for clarity and prepare it for bounty. We require some input from the devs themselves though - I have been trying to encourage both teams to submit smaller/time consuming but not hard issues, or break down current ones into simpler tasks, but have not had much luck with that.
@andytudhope As I said a week or two ago, we need clear metrics and graphics that illustrate this on a regular basis, otherwise it is too vague.
The iteration goals are still tasks, not actually goals in terms of % growth of bounty issues / contributors. To me this is the main task of the swarm leader. I'd be happy to assist.
Concrete suggestions for metrics
10% week over week over growth in available issues for all Status repos, as well as in status-go and status-react independently. Assume 10 issues first week. Do this for 3 months and we are at 30x, then re-evaluate since we might hit on financial limits.
10% week over week growth in new contributors for all Status repos, as well as in status-go and status-react independently. After 1 month of real tracking introduce 3rd metric which measures and grows recurring contributors.
Get this data for last few weeks. Plot it over a timeline. Plaster it all over #general on a weekly basis. This achieves three things:
(a) communicate success (b) clarifies deficiencies, e.g. this repo failed to meet growth target this week - why and how do we fix? (c) forces automation naturally, e.g. instead of "automate" or "bounty all issues" at once we can gradually introduce processes that actually solve bottlenecks.
To me this is the proper way of setting targets and it shouldn't take too much time, it just requires someone to do it regularly.
They also tie directly into the metrics mentioned in org paper.
@andytudhope @annadanchenko
Perfect, will make that a reality, thank you for the suggestions @oskarth - inspiring as always 😉
We have 11 bounty issues in status-react and 5 in status-go, so don't really need that assumption - can just start with the real numbers. Otherwise, the rest sounds good. Particularly like the part of tracking recurring contributors (though it seems like most of these so far are falling down further into core contributor positions).
Those metrics seem solid, this is great to see.
Thanks @andytudhope and @oskarth for driving this.
This swarm has now been closed and absorbed into OpenBounties itself, specifically https://github.com/status-im/ideas/issues/59.
You can read the full report here: https://github.com/orgs/status-im/teams/status/discussions/9
Preamble
Summary
As part of scaling Status, we use Status Open Bounty. To use it effectively we need to curate issues, put bounties on them, and ensure proper communication with newcomers.
Vision
We are already doing this work, and since we want to continue doing it we should formalize it into a swarm. This will probably require high commitment from some people (QA, Community) and low commitment from a larger number of core developers.
We want to ensure we always have a bunch of issues available for people who want to contribute. These should be more than just translations, and vary in bounty size.
Specifically, Status Open Bounty as a standalone project is out of scope for this. This is about us using Open Bounty for status-react, status-go et al. issues, although there's likely to be some overlap.
This is a process, similar to how we do code reviews and QA now, that we want to install in order to scale Status. It requires:
(a) Curation of issues. Not all issues make for great bounties. It is particularly important issues are well-defined in terms of acceptance criteria, and ideally shouldn't require too much context, and no special permissions. They should also ideally not be time-critical, as these issues are best done by core contributors working full-time in dedicated swarms.
(b) Ongoing communication with developers. We want to make sure they get a warm welcome, and that we help them along the way. Additionally, if a bounty issue has been open for a long time we should figure out why and how we can change this. We also want to increase repeat contributors.
Both of these activities and the swarm as a whole has an eye towards improving our two core metrics:
Swarm Participants
Requirements
3 core contributors, 2 from community and one from QA. 1-2 devs from both status-react and status-go to help create, edit and otherwise curate issues just 5hrs/week.
Goals & Implementation Plan
Minimum Viable Product
Goal Date: 2017-11-19 Description: A swarm with Slack channel and instructions/flows set up for proposal of bounty issues, creation of bounties, testing etc. Labelling system on issues so that there is an easy flow from developers -> QA -> community and back.
Iteration 1
Goal Date: 20/11/2017 Description: Get access to DB so that we can pull the data we need on contributions. Set up automated processes for creating, managing, accepting and confirming bounties. Create Open Bounty Twitter Bot.
Iteration 2
Goal Date: 06/12/2018 Description: Discuss with @tpatja the
issue.updated
event and whether we can access that from the DB - still no answer there. We have already started a GH project to track issues using a kanban board to limit the co-ordination and communication costs internally. We need to make sure everyone is using this and that it is working as expected. Keep on gathering data and providing to Jonny for analytics and blog posts etc. Co-ordinate wth Arash to get more Riot bounties in, as well as onboard other organisations. This will also mean helping with basic filtering of issues on SOB (https://github.com/status-im/ideas/issues/48) and co-ordinating with @3esmit and @tpatja to see when SOB can implement an admin dashboard, allow multiple contributors to a PR, allow multiple admins to manage and confirm payouts, and set time limits on bounties.Iteration 3
Goal Date (start): 05/12/2018 Goal Date (end): 01/03/2018 Description: Track actual metrics to improve our understanding of how well this swarm is achieving its goals.
Automation of bounties!! We need to make it so that people can simply assign a size label to their bounty and have it automatically funded from a (super) hot account that they only maintain a small balance in and top up every so often, rather than manually funding each and every bounty. This has been a request from a number of projects, most notably Aragon, who have actually already written a bot for us: https://github.com/aragon/autobounty
10% week over week growth in available issues for all Status repos, as well as in status-go and status-react independently. Currently 11 bounty issues in status-react and 5 in status-go. Do this for 3 months and we are at 30x, then re-evaluate since we might hit on financial limits.
10% week over week growth in new contributors for all Status repos, as well as in status-go and status-react independently. After 1 month of real tracking introduce 3rd metric which measures and grows recurring contributors.
Get this data for last few weeks. Plot it over a timeline. Plaster it all over #general on a weekly basis. This achieves three things:
(a) communicates success (b) clarifies deficiencies, e.g. this repo failed to meet growth target this week - why and how do we fix? (c) forces automation naturally, e.g. instead of "automate" or "bounty all issues" at once we can gradually introduce processes that actually solve bottlenecks.
Supporting Role Communication
Post-Mortem
Copyright
Copyright and related rights waived via CC0.