Weighted Contributions for Tips.

Dogecoin’s culture of tipping extends to developers. Without the work of many, many volunteers, the Core wallet wouldn’t exist. In the past year or so, development pace has picked up and the Core now has both multiple improvements not seen in other related currencies but also a stronger technical future.

After every couple of releases, core developers evaluate all of the technical contributions that went into the release and spread out development tips to contributors.

How does that work? Transparency is important, so let’s get into the details.

Weight, Weight, Don’t Tell Me!

As you can see in the developer tip proposal for 1.14.6, Patrick’s analysis shows 102 contributions from 46 authors. That’s great!

What’s a contribution?

These contributions include:

  • major and minor updates to the documentation
  • translation updates
  • improvements backported from Bitcoin Core
  • new features
  • security updates
  • code reviews
  • test improvements
  • stuff core maintainers need to do to release a release

Some of these things are small. Some are large. Some took a little bit of work and some took a lot.

Gathering all of this information in a table like Patrick did took some work, but fortunately we have a good system for analyzing contributions. If you follow the discussion further, you’ll see very minor suggestions for changes to the system. Most of it revolves around the question “what’s the value any one contribution provides”?

I’m Willing to Weight For It

One of the best features of this system is that it recognizes that doing something is valuable and evaluating that something is also valuable. For example, in PR 2779 dogespacewizard added Korean translations and steve-cw-chung reviewed those translations. That’s a lot of work! (I say this a lot about translations!)

Compare that to PR 3046, where I edited the release notes for 1.14.6. Release notes are important, and I’m glad to enhance them with more information, but this took a lot less effort than enhancing translations, and translations make the software more accessible to a lot more people than release notes that are missing a few small things.

The way we evaluate the relative worth of contributions is that a translation update like PR 2779 is ten times as valuable as the documentation update in PR 3046. That seems reasonable to me. If there are 1100 Dogecoin allocated for tips for this release and if these were the only two PRs in that release, there’d be 1000 for the translation and 100 for the release notes and that seems fair.

There’s one more piece worth noting: reviewing PRs is also valuable. In the case of skimming updates to documentation, that’s one thing. In the case of running multiple tests on specific operating systems, hardware platforms, or configurations, that’s another thing. People who perform substantial reviews also receive weighted tips. Keep those review comments coming. (Of course, a thumbs-up emoji or “great work” or “to the moon” doesn’t count as a substantive review comment, but we appreciate the enthusiasm.)

This formula isn’t perfect; the difference between a minor bugfix and a major bugfix can be blurry, and there are some backports from Bitcoin that are trivial while others are difficult. On the whole, however, the rules are clear and the classifications are generally right from the start.

You can see, of course, that it’s also totally fine to review the weighting of individual work.

You Put the Load Right on Me

The most time-consuming part of all of this is making the list of contributions and making sure the formula is clear and fair.

By publishing this discussion and explaining the formula, we can set expectations appropriately for every future contributor. As long as developer tipjars have funds, the Dogecoin maintainers can allocate funds to thank contributors for their time, energy, and effort.

This is a community-driven project, with a lot of developer and core maintainer effort going to keep it a community-driven project. Dogecoin lives or dies by its community support. Developers should have less power, after all.

To make this work, we need a healthy balance of volunteers and competing/cooperating interests. It would be unhealthy if a majority of developers were employed by any single company, organization, or entity, and it would be extremely unhealthy if the project couldn’t attract a regular, reliable stream of high-quality volunteer contributions.

Fortunately, we’re in a much better place than we were a couple of years ago.

Developer tips aren’t paying anyone’s salary, but they can make it easier for people to justify the work, purchase new hardware, and benefit from their volunteering their time, skills, and expertise. Thank you to everyone that encourages development, whether by tips, kind words, contributions, sharing information, and building cool things. Your contributions are always appreciated!

There are two tipjars to which you can contribute for 1.14.x and future releases: