Sourcecred Versions Save

a social algorithm for computing cred

sourcecred-v0.9.0

3 years ago

Breaking Changes

This version has some breaking changes for discord users. HOWEVER, it also includes a handy new CLI command to fix your instance automagically. To use:

  1. Check out the dependabot branch locally (or manually update the sourcecred version in your instance)
  2. Run yarn sourcecred update
  3. Commit and push changes, including changes to the newly-created data/updater.txt

Summary

Support for Multiple Discord Servers

Now, the discord config json is an array of configurations to allow one sourcecred instance to track multiple discord servers.

Higher-precision Grain Distributions

The config/grainConfig.json file can now accept a string representation of a decimal number (e.g. "100.05") for distribution amounts, in addition to accepting an integer-only number. This helps communities with high-value tokens to be more precise with the amount that they distribute each week.

ReadInstance library module is complete

Our ReadInstance module in our JS library is now complete (or at least as complete as it can get for now). 3rd party development of analytics, simulations, and integrations has never been easier. Docs coming soon.

Contributions

d6c1d106ad025698575ecb6e0810ff9b76e8a569 Add Update CLI for magical instance updates (#3065) ba9df05052125fff729c584e918bc3e01091026e Discord Multi-Server support (#3064) 25210495ac3b4c139b5c6c66414fed0acfb178c1 Implement readWeightedGraphForPlugin() in readInstance.js (#3075) a112f0d56ef27868b6beae18ad484f8fac109a92 Implemented readAnalysisInput in api/readInstance (#3076) 0bb9ed522bf54b6737387e0f148d2137300d3fda Implement readCredrankInput() in readInstance.js (#3071) 82edef6baf861b5660f3b714f91e6acd76cdf743 Update README.md (#3069) f15ec273b33fe371062a5d04e1686c5e63f1afa9 Create README.md (#3066) 854e6ed35d2f9aba39637eb27dcc24269f48646d Discord: show a friendlier message on 403s (#3063) a7ca8a873462b80837a7728aabda3948a3c2839b Credrank ClI bugfix: new dependencies failing to initiate (#3062) b662247940c16b88e243701b5e58c359d43c1d37 Fractional grain (#3057) 7a1970c03a2ffc7cee12a5db288063cb39c2a14c Show info message when config file is not found (#3061)

sourcecred-v0.8.7

3 years ago

Summary

Bug fix for an issue that prevents installations and upgrades on sourcecred instances

Contributions

c4a4d1a2b170788aef3c69972a7947f029583ed1 flow mono is unnecesary when package is deployed (#3059)

sourcecred-v0.8.6

3 years ago

Summary

Default Discord reaction weights

Now, you can set a default Discord emoji weight by adding this to your config/sourcecred/discord/config.json file: "defaultReactionWeight": 0

Support for using Ledger identity names in the Initiatives Plugin

There was a case-sensitivity bug that was fixed, so now you can copy names from your explorer's front end for use in your Initiatives Plugin json files. This is great when a user doesn't have a github or discourse profile to link.

Instance weights are pre-loaded in the Weight Config page

In a locally-hosted admin portal, the Weight Config page now auto-loads your instance's existing weights. You still will have to download and copy changes into your instance manually for now, but this is 1 step closer to a fully UI-powered weights config experience.

Progress on our ReadInstance library util

Our ReadInstance library util for fetching instance data over the internet now supports fetching the GrainInput and the Ledger structures. Keep an eye here for library docs coming soon.

Experimental Features

These features are ready for use in this release, but are still considered experimental/alpha.

Personal Attributions

Allows participants to attribute their cred to other participants. This feature should not be used to make cred sellable/transferable, but instead is intended to allow participants to acknowledge that a portion of their credited outputs are directly generated/supported by the labor of others. (e.g. when a contributor has a personal assistant working behind the scenes)

To try it out, add a personalAttributions.json file in your instance's config folder.

Example json [ { "fromParticipantName": "Thena", "recipients": [ { "proportions": [ { "decimalProportion": 0.1, "startDate": "2/15/21" }, { "decimalProportion": 0, "startDate": "3/15/21" } ], "toParticipantName": "Jojo" } ] } ]

Discord Reaction Averaging

This applies an averaging function to reaction weights in Discord. It divides the weight of each reaction by the number of people that react to the same message. It also factors in the role weightings of the people by counting someone with a role weight of 2 as 2 people, etc. Set to false by default. This is a feature that can be used to combat the awkward cred inflation that happens when more people join a discord server.

To try it out, add the following to your config/sourcecred/discord/config.json file: "applyAveragingToReactions": true

Contributions

74fda4e1050a836a4a877c6a5fa7ceb18d4934c1 Load CLI: stringify errors before logging (#3054) 0640fff42ae4df528b6cfdf1e9ec1ff87003b8b4 Monorepo init (#3012) 12ad9c35ffbaae933b651e0bcd40881d0abd0092 Discord: add reaction weight averaging & default reaction weight config (#3036) 834376160235cc4761c516831427d4709f8b8280 Utilize SourceMaps for package.json module property (#3019) 83b8ed24829187a63dfbbbc6873fc9ed5813df05 Fix identity name reference detector (#3032) 4ee2f5398995b48a8503b8d06f86553779248b87 Implement readGrainInput in readInstance (#3030) 1f8d443cf57d51bd7d408af2a16acc7f630cd793 Specify a Grain Integration Contract (#3007) b558745715e2daf64d6ff85173611003380cb60c Weights Autoload (#3028) 010611c2c1c8331ebc1531da7f01292e769531b5 Set up grain distribution tracking for grain integrations (#3003) 0b7bba0086ed5f85ad0bd602fa991c68170530c9 PersonalAttributions: add config and add to API to complete feature (#3010) 001c210d1b613e9a2e6909cde4425be4a2cf8c14 UI: Add ?dev=true feature flag + hidden empty Profile page (#3011) 3fa30571cded33519c3726afe5a3e4e5ed9cfff9 patch: Added Codecov bot (#3009) 7fde098f42bc6d594141a9d6026c0734998febde Feat/include nsfw channels flag (#3000) 5342e584915f763546ee02990c9775120d8b4445 Allow grain UI to show more than 2 digits past the decimal (#2912)

v0.8.5

3 years ago

Summary

accounts.json is back!

Some of you enjoyed using the auxiliary analysis file accounts.json and were sad to see it go in an earlier release. This patch re-adds the ability to generate this file, however the grain/go CLI no longer generates it. You will need to call the new analysis CLI to generate it. See this PR for an example of how to add this command to your instance's github action.

grain -f Simulate grain distributions without hand-editing the ledger!

When wanting to simulate a grain distribution on an instance, we would previously have to hand-delete the last distribution because grain wouldn't apply a second distribution to the most recent week. Now, you can use the -f | --force flag to add additional distributions to an interval, even if one already exists. When combined with the -s flag, this makes grain simulation a breeze! The -f flag is also useful if you actually do want to distribute grain more than once in an interval, such as adding a holiday bonus or adding liquidity to a treasury account.

Activate accounts faster in the admin portal

We are working hard towards automation of the mundane instance administration labor, but in the meantime, here's a little improvement to the grain activation process: inline activation checkboxes! Screen Shot 2021-04-30 at 1 12 25 PM

CredGrainView is now available in our JS library

For you 3rd-party JS developers, CredGrainView is a helper class that turns a CredGraph and a Ledger in an easy-to-use summary of cred and grain earned by participants per week. It also has time-scoping capabilities for easily narrowing down to cred and grain earned between two timestamps.

Contributions

6b059175595d3105b4566dd26acf59f6aebb4cdc CLI: Add 'analysis' command for generating auxilary data (#2967) 93900630dca6bc532710f7f07f2c7deff5e2f53e PersonalAttributions: Add capability in MarkovProcessGraph (#2786) 522f4414822d4a5fb00c6855d9ab8e439242774b Grain: add --force flag to redo last distribution (#2935) 5ceff531312fed60daa8e398dc6de62d66f754e4 Ledger: lastDistributionTimestamp edge case refactor (#2950) 1c07d769390cfc409762ad3a70ad56b273d79021 Add PR Cultural Etiquette to Contributor Guidelines (#2964) dfdb4b90ee1c8ef0ae664a85c73d39f8a0337273 LedgerAdmin: improve activation workflow with in-table checkboxes (#2508) a75744f1b95c02adc59de961119f4753f5a1e225 Docs: Update plugin design doc to include instance-plugin Contract (#2894) 28c9e7a69481c622b75d138321bfad1c5675227b API: Add CredGrainView to library exports (#2937) 532ad46471096b8b62ad0b54d290f6547db58bdb Responsive Improvements on Explorer Home (#2899)

v0.8.4

3 years ago

Summary

This release fixes a bug where servers containing new Stage channels couldn't load data into SourceCred instances.

Contributions

Shoutout to @AL0YSI0US for their first PR making it into this release!

7bafdc00583fef09bc38433e60b644bc2a64f445 Discord: do not throw for unknown channel type (#2915) 6eac6b38375ee8244ed2303967c309a64818dec3 Re-add /explorer as redirect to /explorer-home (#2916) c2c2239c1bfe5cd4ad3bc66d44ee03df91dc9dc4 removed unused line in graph.js to close (#2911)

v0.8.2

3 years ago

v0.8.3

3 years ago

Breaking Change

Support for Node v10 is ending with this release. We recommend using v12 or v14 going forward.

Summary

Weight Configuration Page

Screen Shot 2021-04-02 at 5 34 49 PM

Weight config modifications are avaialble in a separate view for v0.8 now. It's still very similar to the original experience, but more improvements are in the works.

Library support for fetching a CredGraph

We also added an instance section to our library which allows developers to fetch info from an instance through the web for use in Observable Notebooks, Discord bots, etc. It currently only supports fetching the credGraph, but will support much more in the future. Usage looks like this:

const base = `https://raw.githubusercontent.com/sourcecred/cred/gh-pages/`;
const instance = sc.instance.readInstance.getNetworkReadInstance(base);
const credGraph = instance.readCredGraph();

Bug Fix

Additionally, we've added support for new Github token formats. h/t to @cryptoballena for raising the need for this change.

Contributions

7ac3ae3536bcdbc19d72eb44352574c58388b5de Add MVP weights configuration page (#2898) ba6fe2c12bbaabde95deff3d0d8cbaeffb9da9af Update github access token regex (#2897) 6a0de45523c50a6837f29d80f0ea9c037fa6006b Create ReadInstance and refactor NetworkStorage to support URLs (#2893) 2e5912a715647e8b958174aaf024d0cb81da1a7d Cease Support for Node v10 (#2865)

v0.8.1

3 years ago

Summary

Heavyweight files, such as plugin Weighted Graphs and and the CredGraph artifacts are now deflated when stored in an instance. This should put instances comfortably below the 50 MB warning level for Github.

We've also optimized/bugfixed some things for the new Explorer page.

Contributions

428416184c8832432c355ca617f6ee80f9e3182c Bugfix: Add Updated I/O for loadWeightedGraphForPlugin (#2866) abe7f13d1c618037699c9af8c8366669654f5503 Utilize ZipStorage (#2858) 0cae8e4f2943c1956e3a46d3b2ab61dc99276e60 Yaz/feb2021/calculate grain per interval optimization (#2860) a79d9f452e3a8f9a379acaa4df05eced737dfb54 Bugfix: Reinstantiate CredValue for mutation (#2861) 9ae5d9aed2d440041e05231e67ea6091b957358d Credrank Migration Clean up of old TimelineCred artifacts (#2857) 45567912c490a5822298cf0b8090ae2f9f0e8dde Pulled LedgerEventRow component into its own files, fixed references (#2852) 117a0b4ca71be0dcb5a0d104b18f930b9abb8187 Implement and utilize NetworkStorage (#2844) f89cf446a7cc509bde36e1eab61f595d9c842c2e Generalize disk utils as storage Utils for use in browser (#2840) 32bfe8f23055b4bf3de5b196d3d84e3144000ffc Utilize DiskStorage (#2777) a29bf6958ac160d8524beca9f6a17c3edb0fa3b2 Add Isomorphic Text Encoder/Decoder import (#2805) 2d97a5272be0a7caff46b4414a665682d87466d3 Implement DiskStorage using DataStorage Interface (#2776) 7f6d229ecb6561a5d59c8e2610d76f07691db312 Write a design doc for the migration to Credrank (#2631) 0286b6d678f70011a775bed87942967b65e61d75 Refactor AccountOverview to use Ledger APIs (#2746)

v0.8.0

3 years ago

Summary

The CredRank Algorithm

This release launches a large migration to a new underlying scoring algorithm, which we call CredRank. This new algorithm accomplishes the same objective as the old one, however it is MUCH faster and MUCH more maintainable/extendable.

Cred scores will change as a result of this release. They should be similar, however, and hopefully more accurate.

The New Cred Explorer

This release replaces the home page of the SourceCred-generated site, known as the "Explorer" in the site's menu, with a totally new equivalent. This new page introduces new exciting features including:

  • Cred and Grain stats side-by-side.
  • Aggregate stats and charts over all participants.
  • Timeline control for viewing cred over This Week, Last Week, This Month, and All Time.
  • Pagination, Sorting, and Filtering for the participants table.

However, it does remove some features, which we hope to create replacements for in the future, including:

  • Weight Configuration exploration/simulation.
  • Contribution-level information, including filtering by plugin and contribution type.

Screen Shot 2021-03-15 at 9 28 29 PM

Minor changes

  • Small redesign of the Identities admin page to make it more intuitive.
  • Improved Transfer Grain admin page to add visibility around unsaved changes.
  • Bugfix for some identity merges causing errors / unknowns on the Ledger History page
  • Incremental progress towards supporting on-chain grain payouts and redemptions.
Contributions

f33c13a6c8eda4d8d462a3db7e93601988e634c4 Credrank Migration Full Launch (#2842) 4500d9431f3e95acee539526085691d1dc212517 Improve save ledger interaction (#2785) e655518f9cdf43b76d9538304c67b33414be23f1 Add credGraph and credrank to api build (#2841) 533d501dda01b3d0fecfc45ac333d44813de3ee4 Add Credrank help cli (#2839) 27ca03de264c788c41d1a0417b0c5bbed7c5b57a ExplorerHome: make This Week and Last Week charts include the previous week (#2826) b54bbf9801da3538c5a03e56a32b5448b8db0d37 Explorer Home: Fix display of Average Grain in Activity table (#2821) 935406aab326ff4199b51cfe03b8e9ec8e2732a7 CredGrainView: add per interval aggregates (#2822) ab98dc6813ed1f88971e2e1680c2b67f1e9a413e Convert Explorer Home timeline summaries to for loop for greater efficiency (#2817) 07de83b167a1966ce2464d7708ae99325e9baa7c Explorer Home Activity table participant type checkbox updates (#2819) 332da96166c8006ef0644dba725f92341902a47a Activity table updates (#2818) e4a1c535df636ec288900126f3dadaf14990a015 Bugfix: remove duplicate accounts from ledger.accounts (#2820) 041d1f7deb04be5cebf7f416bbcaa2c3fa7fbf2e ExplorerHome: fix duplicate timeline value (#2804) 878d4dc9fa6b4fbbe5afbf49731950a71d08d546 added Vercel bot (#2811) 4d6e4a27046ebe93e2e49861b8c5d0b0f30deb61 Redirect target IdentityIds to map to base Account (#2803) 5d65e1a090faf33f2860e8e33665656ebcd0c860 ExplorerHome: minor changes (#2802) 22edb07c476054f78e829519d8e6e9567f3ff6cb Make Explorer Home stats circles dynamic (#2801) f694ca2e4a628fdb6d3db5617b53c7f5ed6cf04c Update bug_report.md (#2800) 19489d33de457b806c32517eb745c03384ebfeef github: create issue templates (#2789) 3f2c136e87bda5ea6c6647b32806cf61425c981c ExplorerHome: add Grain to Top Chart (#2787) ec2dd7cd4261ba6b7e2b07145f9f345a46bd978d Create design pattern for Instance and API starting with CredRank (#2764) bd162c7548b00aa1de7cf07f3fb3455b9f3a33ee Discord: Add Weights to self-reacts in Props Channels (#2766) 32dd0e040ede37cf84d104f50bfb3a2096c986b0 Implement write method for GitHubStorage d404d6cb0c68773fb451590eb9d5a106c1bb003d Create Design Doc For Plugin Redesign (#2716) 11b09bc66128bff06bbb648dcf2e3988250fff81 update docs for ledger.lastDistributionTimestamp (#2745) 27d5650b7fc1f3941c61223a477952b8dfb9b187 Implement PayableAddressStore for Ledger Accounts (#2429) e31c083b78fe93b31901b833cd5fb55b704cc9c7 Activity Table to show all time contribution charts (#2751) 6f97defccd3034a8b9070355b1a83be80d3a231f Add identity filtering to Admin interface (#2645)

v0.7.7

3 years ago

Summary

Cred Volatility Fix - Discord Rate Limits

Our discord plugin was not handling 429 errors from the Discord API, causing many instances to see cred volatility as a result of having whole channels randomly missing from the graph. Now, the plugin smartly uses API headers to wait for rate limit resets when rate limits are reached. This prevents 429s altogether, and fixes a major source of cred volatility, though it may also make the runtime of the load command slower than before.

Discord now recognizes # of times a user is mentioned

People who get mentioned more times in a message get proportionately higher cred flow from that message than people who are mentioned less. For example, if a props message mentions Jellybean twice and PotatoChip once, Jellybean will get twice the cred than PotatoChip. Prior to this change, they would have gotten the same amount of cred.

Grain Distribution Updates

  • Distribution configs now take an array of policies. We recommend changing your grain.json config to avoid future breaking changes.
  • CLI output now shows recipient-level distribution details.
  • The Immediate policy now includes an optional numPeriodsLookback parameter that makes the policy consider further weeks back than the default 1.

JS Library Improvements

The package is now much better to work with as a developer library. It now supports both Node and Browsers properly, includes the source code for better legibility, and has additional components added to the api interface.

Partial progress on upcoming changes:

  • Ethereum address support
  • Programatic updates to the ledger
  • Credrank Migration: the next release will be a major version that includes a new underlying scoring algorithm that is much faster and much cleaner, as well as a totally new Explorer page to replace the current one.
Contributions
  • 9a78b7988c7a68931b39de38361bc334203f0939 CLI: Run 'credrank' quietly during 'go' (#2749)
  • 63e00a5272013d622359ad307baad4b84587c0b5 Discord: users mentioned multiple times earn more cred (#2748)
  • 957163cababd8977801c4995133862f9ed87497d Bug fix: observe discord rate-limits (#2738)
  • 79a6a5908451f5c2658ee868010646a708066be8 Sort grain numerically, not alphabetically (#2742)
  • 703e8b529883c8b923fba2a178d561f23da05f9b Add CredGraph Snapshot to our Test Instance (#2743)
  • d3c100551070b26d346229ba421cb9ff9ce75d00 Activity Table date label formatting (#2741)
  • b14b38d5c049e1afaa23dde11d305145aaee78c7 Activity table colors (#2739)
  • b4869da548213eee1fe5d6d6079300399d5aebaa ExplorerHome UI: timeframe control (#2737)
  • 52c522145c30e4c8e1d59039be76ff7c01710e3d Implement GithubStorage for LedgerManager (read)
  • ef497fa9017a09de5fcf9dfab1da2dc4b5b75b2d Setup separate API builds for web and node environments
  • 6fa1e2efa4e4134bcbb6cfc8e155a99337033528 Update MacOS GNU link to the most updated advice (#2717)
  • 810b9068c48ce4ad51cbf4a77137e21a76247170 Expose discord plugin utils in API (#2713)
  • 6f1f4cbf8672f81ec06f857d9e12daa001f2d923 ExplorerHome: pagination, filtering, sorting (#2715)
  • 7e79c9cad3fd62f07fd1caefb0b35858f90ff58f Fix createIdentity in discord plugin and add tests
  • 803acbd5008418b9269aaf9198d81d69c15df6a8 Factor out FilterSelect and WeightsConfigSection components (#2665)
  • 27560c3235b6487e6b8845f00543e3394a4ff5e5 BugFix: Add DevServer script to parse instance flag (#2703)
  • 86aab94b83758818fd4c4e402c55a9cefdc89875 Update Tool Versions in README (#2701)
  • 59a143781da1a9a0e8866191db3bcba11851f146 Make numIntervalsLookback field in Immediate policy config optional (#2693)
  • eac4544280314c32d530ec3cdaae13d194587d70 making the view of transfer mobile friendly (#2699)
  • dca663c867e3e42478d1d40730a111105ebc4679 Convert Explorer-Home to use CredGrainView (#2696)
  • 2dd55c014c408de8f685d338495409e5845ce6f8 Utilize teams with round-robin assignments configured (#2692)
  • 1fb805a314da5fe2cbe4fc0198b4879dd15593fc modifying the error message when user has 0 cred (#2698)
  • 055290bb9fb6ccc164a18f86d8750a64e8c713d1 cli/grain(2): add deprecation info for grain and grain2 commands (#2686)
  • 3e77f40a2335c597d18f192e36e756f6c452fc7b Make experimental-discord the canonical discord plugin
  • 3a0e72cc0aff4d6b0848b449f23f62109feea86a Add Ethereum plugin to public API
  • 7066a3a29b814b9b4012867c7653a08030c18816 Add Ledger utils to public API
  • 5bd6add06580664cd99b2735585ad1b99f4d57aa Return identityId in ensureIdentityExists function
  • a73c0673f9cdbe44db3e71aedb33282a6eb67e24 Update yarn.lock for latest package.json changes (#2684)
  • b07b18c9bbd6c3dfbd26cacc72670c5a114511f0 Generate base docs (#2435)
  • 6c0e31563122bfdf8b2594040b876ba690ed7075 Add source files to published NPM package
  • fe37de8f3802aca4f9c99b45794dc673a13e1af5 Update Save Ledger logic to use LedgerManager
  • 0d9da61466edb3ce6d86cbf7a66a55d228f7511d Use LedgerManager to control loading ledger state on frontend (#2655)
  • fac25f6c23005f8c3a9cb79471d83e6f71eca668 immediate policy: add lookback parameter (#2660)
  • 3dc9fca313f091fe99ba7a267cbf058e2a7ccd2c grain cli: distribution + allocation markdown tables (#2571)
  • 883964f31d73971e58ac2d1c1efcb75d51e33600 grainConfig: take array of policies (#2671)
  • 41fcd6c03e625324b9af9da02c0c38763914fd5b Implement LedgerDiskStorage for LedgerManager (#2653)
  • 9e05e891e6f26de68826cfd22f4b867a5115dbe1 cli/grain2: grain2 command using CredGraph (#2672)
  • 56bc1a2ff87252b982b7f8d683cc2f3f2d6ec2dd grain allocation policies: add config parser (#2670)
  • cd80249caecd463cfc94f621d5b0f0f148247f9d policies: Use NonnegativeGrain as budget type (#2669)
  • 1d15e8223f263dfa7d290a31ff287c45a8e88e12 core/ledger: add NonnegativeGrain type (#2666)
  • 25ea35e293e584e4394886c67c53753a715ce796 Add last distribution timestamp to the AccountOverview page (#2673)