# Visualize polkadot bounty program phase 1 **Proponent**: OpenSquare(ESgz7GLVW7BL5DhRgpVnxSXVwaKt4ytWcrf52TY1GQD1cEb) **Date**: 03/20/2022 **Requested Allocation**: 724.57 KSM **Curator**:: OpenSquare **Curator Reward**: decided on each child bounty, usually 20% - 30% of the child bounty value, and some child bounties will be done by OpenSquare. --- This proposal has following motivations: 1. Implement a group of **business oriented** explorers and dapps. 2. Educate more developers by implementing the explorers and dapps features with child bounties. 3. Seek ways to facilitate collaborations between projects and external developers in the polkadot ecosystem. We will experiment the way `bounty -> curator(OpenSquare) -> child bounties -> developers` in this proposal. We propose to extend [Statescan](https://statemine.statescan.io/) to support relay chain businesses, and it will be a group of **business oriented** explorers and dapps. The main differences between Statescan relay chain implementation and other explores includes: 1. Business oriented. It means showing how the relay chain features work will be the most important target. 2. It will also be a dapp where users can make calls to the chain. The merit is that users can do it with more **contextual info** supported by the business oriented explorer. We propose to implement it in the way of bounties and propose ourself [OpenSquare](https://www.opensquare.network/team/) to be the curator for following reasons: - OpenSquare is the initial proposer and maintainer of Statescan, and no one is more familiar than us. - OpenSquare has rich experience to develope explorers with good UIs for substrate based chains, and we are qulified enough to make sure the delivery quality. - To facilitate collborations between projects and developers is one of the main business OpenSquare is dedicated to do, so we have a great passion to connet projects and developers. - Though we don't have a big developer community, we known enough developers who are qualified enough to finish the child bounties. We plan to split it into child bounties, then educate and enroll more external developers into the polkadot ecosystem by assigning child business to them. Finally we will report back the milestone pregress and deliverables to the council. ## Problems statement ### Rich features need visualization No doubt polkadot has more rich features compared to 1st generation state transition blockchains like Ethereum and UTXO based chains like Bitcoin,such as forkless upgrade, on-chain governance mechanism, treasury, para-chains, etc. But to be honest it’s more complex too, which means it will cost more for people to understand them. We need better UIs to demonstrate them. They should show the participating roles, workflows, business life cycles, and to a user, it should tell the steps to complete a business. ### Dapps with more contextual info [Polkadot/Substrate portal](https://polkadot.js.org/apps) is great, but it has problems too. 1. Most shown data is on-chain, while we have to check the contextual info from a explorer to complete some operations. 2. Too advanced to some non-technical users, while they expect simpler ones. The proposed business oriented explorers can provide the contextual data, and it will be perfect if we can complete our business just on these business explorer pages. ### More builders, more collaborations We need more developers, designers, educators and other roles to build web3 based on substrate/kusama/polkadot. The best way to enroll more builders is collaboration. Bounty & child bounties will be good ways to start collaborations, between curators, child bounty curators and implementers. ## Solutions ### Business oriented explorers and contextual dapps We propose to extend Statescan to support relay chain businesses. Generally following features should be supported for each business. - The workflow/lifecycle/timeline and maybe some doc links will be shown to help user understand the business. - Basic related info and current status should be shown for one account. - Easy ways for users to query/search related business info, for example easily account search by identity info. - A user can complete his/her business on the business page with enough contextual data/info/links supported. ### Collaborations via child bounties We'd like to propose a bounty to implement the Statescan relay chain development, and collaborations will happen in the child bounties. - The whole relay chain implementation will be divided into businesses. - One business implementation will be divided into tasks. - One task is the minimum collaboration unit which will be done in the way of child bounty. - We propose ourselves OpenSquare to be the parent bounty curator, and we will build a site to show the bounty and enroll developers where they can hunt the divided child bounties. - The collaborations will include education, product design discussion, code review, etc. - OpenSquare will be in charge of the future product maintenance. Of course we can still use bounties to incentivise other developers to do it too. OpenSquare's role is the big bounty Curator and most child bounty curators, work include: - Implementers for some child bounties like UI design, code structure - Education as a curator - Quality control and code review as a curator - Future maintenance We have to seek a balance between efficiency and inefficiency by multiple workers collaboration, so OpenSquare will be the curator to make sure the program won't lose control. We may assign more child bounty curators if this way works well. ## Implementations OpenSquare proposes the big bounty, becomes the curator and then creates child bounties, assigning them to external developers. Deliveries will include: - Identity pallet business explorer and user interfaces to register and request judgement. - Vesting pallet business explorer and user interfaces to `vest_transfer` and `vest`. - Basic block/extrinsic/event pages for relay chain. - A bounty collaboration site where curator can collaborate with child bounty hunters. The reason we chose identity and vesting is that either of them is interesting but few efforts are made to provide easier ways to use them. ### Identity Polkadot portal provides an interface for users to set a onchain identity, but it will be hard for users to complete the whole identity registration process with it. Our proposal includes following features for identity: - Account identity detail page: - Show detailed info about identity, such as display name, email, web, riot, twitter, image, etc. - Easy user guide for a non-identity to start the registration process. - Contextual info provided in the registration steps, for example, show the registrars when a user need to request judgement. - Show the historical identity records for a user. - List page shows all the registered identities, where users can search an account by its identity. - Connect polkadot extension and do following calls with polished UI: - set_identity, clear_identity - set_subs, add_sub, rename_sub - request_judgement, cancel_request ### Vesting Planned features: - A vesting list where we can see all ongoing and history vesting records - Vesting detail page where we can see the process and other basic infos - Account detail page where it show all the user's vesting - It will support `vest` and `vested_transfer` action for vesting origin and target ### Basic chain meta data Blocks, extrinsics and events are the basic data for relay chains, and we should pages to show them. It will have the following pages and features. - Block list page with unfinalized ones - Extrinsic list page where users can filter the section and method to find target ones - Event list page ### A collaboration site The target of this bounty proposal is not just finish the features development but also enrolling more developers and providing ways to participate in the polkadot/substrate development. So we need a site to showcase the bounty and accept the hunters' request to the child bounties, and it will support following features: - Bounty authoring for only authorized users. - Any user with a polkadot account can apply for a bounty. - Bounty owners can assign, unassign a hunter. - The bounty info and hunter application data will be stored to IPFS. ## Budget ```javascript= +--------------------------------------+----------+ | Items | Budget | +--------------------------------------+----------+ | Identity business bounties | $35,000 | +--------------------------------------+----------+ | Vesting business bounties | $25,000 | +--------------------------------------+----------+ | Block/extrinsic/event/calls bounties | $15,000 | | (maybe by OpenSquare) | | +--------------------------------------+----------+ | Product & UX design | $10,000 | | (maybe by OpenSquare) | | +--------------------------------------+----------+ | Bounty collaboration site | $10,000 | | (maybe by OpenSquare) | | +--------------------------------------+----------+ | Promotion & Operation & Server fees | $5,000 | +--------------------------------------+----------+ | Total | $100,000 | +--------------------------------------+----------+ ``` Following are example possible child bounties for identity business, while other business development work will be divided like above. - Scan - Identity scan package code skeleton - Identity events scan and handling - Identity extrinsics scan and handling - Identity info decode and normalization - Api server - Code structure - Restful apis - Fronted pages - Identity statistic panel - Identity search function - Identity list - Registrars page - Identity detail - Identity detail panel - Sub identities tab - Timeline tab - Judgements tab - Identity additionals tab - User calls or actions - Connect wallet operations - Set identity call and corresponding UI - Set/rename subs - Request judgements Vesting business possible child bounties: - Product design - All/account vesting list. - Detail for one vesting. - Interfaces to start a vesting, call `vest`. - Scan - scan/monitor the `vested_transfer` extrinsic and save corresponding vest data to database. - scan/monitor the `VestingUpdated` and `VestingCompleted` events, and update the corresponding vestings. - Maybe some storage migration issues. - Apis - Vesting list/detail apis - Account related vesting apis - Fronted pages - Vesting statistic panel - Vesting list and filter page - Vesting detail page - Account vesting page - User calls - Call `vested_transfer` to start a vesting. - Call `vest` to unlock fund. There will also be some common child bounties like: - Front react components create or refactor. - Switch methods from next ssr render to front and backend separated, so we can deploy the fronted pages to IPFS and providing different api endpoints. - Product test. Notes: - Try to pay developers with corresponding fiat value, so compensation child bounties may given if the price fluctuate a lot. - The budget maybe not so accurate due to error estimation and KSM price fluctuations. ## Part of to be delivered user stories For features: 1. Alice wants to register an identity on Kusama. She will be able to: 1. Click the `Register` button on State and fill necessary items. 2. See the list of registrars and click one to request judgment. 3. See the judgment result after any registrar gives his/hers. 2. Bob has a verified identity on Kusama, and he can see the detailed info and timeline about his identity. 3. Charlie has several vesting funds on Kusama. He can see a list of all his vesting and click buttons to claim the available funds. For collaborations: 1. External developers see a list of child bounties released by OpenSquare, and they can apply at most 5 bounties. 2. OpenSquare see the applications, check and review the applicants, and assign child bounties to them ## Faqs ### Why not treasury proposals and OpenSquare finish the development directly? Sure we can finish the work by ourselves in a more effective way, but it will benefit the ecosystem more that introducing, educating and training more external developers. Bounty, especially with child bounties, is a good way to achive the goal. ### Do you have developer community resources? Nay. There is a small budget for promotion, and we will try to broadcast the bounty info to polkadot and other developer communities to attract as many as we can. We know some excellent developers who are qualified enough to finish the planned jobs, but it's not the target to only enroll developers we know. ### Any future plans? If this way works well, we will extend it to polkadot and other projects and double win will happen: - Projects’ development work can be done by more developers. - Developers can earn various tokens. ### Who will do future maintenance? OpenSquare will do it.