I would like to propose a grant mechanism for dev contributions to Serum in order to incentivise more external contributions. I think it’s important to have different tiers with objective criteria.
Below is a first attempt, feel free to disagree and comment so we can eventually come up with a tier system that is satisfactory
Submission process
All submissions should be made through pull requests except for security vulnerabilities that should be disclosed responsibly. All submissions would go through a review process made by Serum contributors. Only once the pull request is accepted and merged should the author(s) receive the grant.
Smart contract
Tier 0:
This would be the tier for the most simple contributions e.g basic code refactoring, README and documentation improvement/translation.
Tier 1:
This would be the tier for contributions that improve the code execution. For example, any code optimisation that allows to save compute budget (like removing redundant serialization/deserialization) or more complex optimizations.
Tier 2:
This would be the tier for contributions that solves a problem faced by other ecosystem projects that integrate with Serum. For instance, a new instruction that solves a business problem faced by other protocols e.g an instruction that allows smart order routing between Serum markets.
Tier 3:
This tier would be for critical code vulnerability if disclosed responsibly. I think Uniswap has a good bug bounty that Serum could potentially get some inspiration from.
Front end
Tier 0:
This would be the tier for the most simple contributions e.g basic code refactoring, README and documentation improvement/translation.
Tier 1:
This would be the tier for general frontend code optimizations. For example, RPC requests optimisations, making components more reusable, lifecycle optimisations and more advanced code refactoring.
Some concrete examples for this:
- RPC requests: Serum DEX UI and Sollet repos are quite inefficient in terms of RPC request, you can easily reduce the amount of requests made by using
getMultipleAccountsInfo
. - Code refactoring: Use proper types instead of
any
and switching everything that is in JS to TS.
Tier 3:
This would be the tier for significant improvement of the current Serum UI. For instance a full redesign, adding an on-chain trollbox, better way to visualize open order etc…
Tier 4:
This would be the tier for contributions that create new standalone apps reusable by others (in React or React native). The app needs to allow people who are reusing it to benefit from the referral fees for orders placed on Serum.