ethereum-optimism / ecosystem-contributions

Find ways to contribute to the Optimism Collective
MIT License
289 stars 98 forks source link

Foundation Mission Request: RetroPGF List Creation UI #106

Closed bdresser closed 2 months ago

bdresser commented 10 months ago

Foundation Mission Request – RetroPGF List Creation UI

How will this Foundation Mission (RFP) help accomplish the above Intent?

Retroactive Public Goods Funding (RetroPGF) Round 3 will take place this fall and will distribute 30M OP to reward contributions that have supported the development and adoption of Optimism.

This mission will create an application that allows badgeholders (voters in RetroPGF) to create Lists, a new tool for vote sharing and by doing so contribute to a more accurate evaluation of projects and the overall success of RetroPGF 3.

What are Lists?

In the previous round of RetroPGF, badgeholders started sharing their proposed votes to learn from each other's expertise in different areas. In round 3, we’re introducing Lists as a more powerful tool to facilitate that sharing of context, and enable badgeholders to easily leverage each other's proposed votes.

The RetroPGF Voting application will allow badgeholders to discover, view and interact with Lists (see screenshot of designs below). This mission will enable badgeholders to create the Lists that are surfaced in the RetroPGF Voting application.

How Lists are presented to users

![259787144-77d40359-e219-4a4d-800d-874186661167](https://github.com/ethereum-optimism/ecosystem-contributions/assets/1016190/df0e7d8f-05be-40c7-b6f1-c673e61cf907)

What is required to execute this Foundation Mission (RFP)?

Completing this Mission requires:

Core functionality of the application Enable badgeholders to create Lists, the following steps are core to this user journey:

Relevant checks will need to applied to the creation of Lists, such as char limits and other limitations (e.g. the OP allocated among projects can't exceed the total round OP allocation.)

Technical Architecture and implementation

You can find the EAS & Metadata schema for Lists here

What milestones will help the Collective track progress towards completion of this Foundation Mission (RFP)?

  1. Specification for implementation, design approach, and architecture
  2. Open-source code repository to observe progress over time
  3. Launch of the application

How should badgeholders measure impact upon completion of this Mission (RFP)?

Application instructions

To apply for this RFP, please complete the form in the expandable section below and leave your response as a comment on this issue thread. Submissions will be open until June 28, at which time the Foundation will review all submissions and select one individual/team to complete the work defined here.

Submission form _Copy the entire application below and leave a comment on this issue with your answers completed. A representative from the Optimism Foundation may reach out using the contact info provided to request more information as necessary._ ## Foundation Mission (RFP) Application **Please verify that you meet the qualifications for submitting at the above [Tier](https://gov.optimism.io/t/collective-trust-tiers/5877/2)** * **Alliance Lead:** Please specify the best point of contact for your team * **Contact info:** * **L2 recipient address:** * **Please list the members of your Alliance and link to any previous work:** Read more about Alliances [here](https://gov.optimism.io/t/season-4-alliance-guide/5873) --- **What makes your Alliance best-suited to execute this Mission?** - [...] - [...] **Please describe your proposed solution based on the above Solution Criteria (if applicable):** - [...] - [...] **Please outline your step-by-step plan to execute this Mission, including expected deadlines to complete each peice of work:** - [...] - [...] **Please define the [critical milestone(s)](https://gov.optimism.io/t/grant-policies/5833) that should be used to determine whether you’ve executed on this proposal:** - [...] - [...] **Please list any additional support your team would require to execute this mission (financial, technical, etc.):** - [...] - [...] **Grants are awarded in OP, locked for one year. Please let us know if access to upfront capital is a barrier to completing your Mission and you would like to be considered for a small upfront cash grant:** _(Note: there is no guarantee that approved Missions will receive up-front cash grants.)_ - [...] --- Please check the following to make sure you understand the terms of the Optimism Foundation RFP program: - [ ] I understand my grant for completing this RFP will be locked for one year from the date of proposal acceptance. - [ ] I understand that I will be required to provide additional KYC information to the Optimism Foundation to receive this grant - [ ] I understand my locked grant may be clawed back for failure to execute on critical milestones, as outlined in the [Operating Manual](https://github.com/ethereum-optimism/OPerating-manual/blob/main/manual.md#valid-proposal-types) - [ ] I confirm that I have read and understand the [grant policies](https://gov.optimism.io/t/token-house-grant-policies/5833) - [ ] I understand that I will be expected to following the public grant reporting requirements outlined [here](https://gov.optimism.io/t/suggested-public-reporting-requirements-for-grantees/4176) -- end of application --
Chomtana commented 10 months ago

Hi, @JSeiferth your image is inaccessible again

image
bdresser commented 10 months ago

@Chomtana updated, try now

Chomtana commented 10 months ago

@JSeiferth @bdresser

Only badgeholders are allowed to create Lists.

Shouldn't lists be created by anybody to crowdsourcing communities to help badgeholders?

JSeiferth commented 10 months ago

@JSeiferth @bdresser

Only badgeholders are allowed to create Lists.

Shouldn't lists be created by anybody to crowdsourcing communities to help badgeholders?

@Chomtana If anyone could create Lists that might result in hundreds of Lists being creating and a curation problem. To avoid this problem, and keep things simple, only badgeholders will be able to create Lists in RetroPGF 3.

luizakp commented 10 months ago

Hi, @JSeiferth I have some questions about this RFP

JSeiferth commented 10 months ago

Hey @luizakp! Just to flag that the Discovery & Voting application will allow badgeholders to discover, view and interact with Lists. This mission will enable badgeholders to create the Lists that are then surfaced in the RetroPGF Voting application.

You can find the EAS & Metadata schema for Lists here

marianoclaveria commented 10 months ago

@JSeiferth is this RFP still open ? Can we still propose our solution? Thanks

owocki commented 10 months ago

RetroPGF Voting Lists Supermodular Foundation Mission Application

Team members

Previous Work

We are the team behind Supermodular, the venture studio that launched Gitcoin. We are focused on doing lean 0 to 1 build outs in the regen ecosystem.

A few other things we’ve built:

What makes your Alliance best-suited to execute this Mission?

We are already building the Discovery & Voting for RetroPGF it would make sense to create the lists in the same app.

We're already building much of what is required in this RFP:

We have already made good progress in the RFP and will have much of the functionality in place by September 17th.

You can check our progress here: https://retro-pgf.vercel.app https://github.com/supermodularxyz/OP-RetroPGF

Read more about why we are a great fit for this project: https://github.com/ethereum-optimism/ecosystem-contributions/issues/104#issuecomment-1662770062

Please describe your proposed solution based on the above Solution Criteria (if applicable):

Frontend

We will have much of the frontend in place:

A Create List page will be created and a link placed either in the Links page or in the navbar (possibly both).

The Create List page looks similar to View List page but with input fields to enter the list data.

A search input allows the user to search for projects and add to the Allocation form. Searching for projects is already implemented as part of the Discovery & Voting. The allocation form is similar to the Edit Distribution and Ballot Review in RetroPGF Discovery & Voting. Thus the badgeholders are familiar with the UI.

Once the form has been filled out the badgeholder click Save List button and signs a message in the wallet. When the list has been created the user is shown a success message.

Backend

The backend receives the created list and the signed message. This signature is verified to make sure the badgeholder did in fact create the list and ensure the authenticity.

The backend uploads the list data to IPFS and creates an EAS Attestation.

OpenZeppelin Relayer is used to pay for the gas for creating the attestations. This gives us some benefits:

Please outline your step-by-step plan to execute this Mission, including expected deadlines to complete each piece of work:

  1. Implement Create List page with form
    • Inputs for name, description, impact evaluation description & link
    • Allocation form (we're already building this)
    • Input to search for projects (we're already building this)
  2. Create backend endpoint
    • API endpoint to receive list and a signature
    • Verify signature
    • Upload list data to IPFS
    • Create attestation
  3. Testing & QA
Milestone Done by
Specification 2023-09-20
Create List page 2023-09-24
Backend 2023-10-01
Testing & QA 2023-10-08

Please define the critical milestone(s) that should be used to determine whether you’ve executed on this proposal:

Please list any additional support your team would require to execute this mission (financial, technical, etc.):

Check-ins every other week to do demos/get feedback.

Grants are awarded in OP, locked for one year. Please let us know if access to upfront capital is a barrier to completing your Mission and you would like to be considered for a small upfront cash grant:

We do not need upfront capital to do this.


Please check the following to make sure you understand the terms of the Optimism Foundation RFP program:

[x] I understand my grant for completing this RFP will be locked for one year from the date of proposal acceptance. [x] I understand that I will be required to provide additional KYC information to the Optimism Foundation to receive this grant [x] I understand my locked grant may be clawed back for failure to execute on critical milestones, as outlined in the Operating Manual [x] I confirm that I have read and understand the grant policies [x] I understand that I will be expected to following the public grant reporting requirements outlined here

luizakp commented 10 months ago

Hey, @JSeiferth this is a PoC I've worked on to make sure I understand the concept. It would help a lot to get your input! Thanks

https://www.loom.com/share/e9d56af1b5564b9292730bdee4a278f5?sid=5b066757-4504-4edc-9e13-7ddd490d6792

Chomtana commented 10 months ago

@JSeiferth proposal submission has been extended to September 4th right?

Zeptimus commented 10 months ago

Please verify that you meet the qualifications for submitting at the above Tier

Read more about Alliances here


What makes your Alliance best-suited to execute this Mission?

Our Alliance is uniquely positioned to execute this mission due to our extensive experience and proven track record.

We are excited to apply our unique experience to become a part of one of the most important Public Goods experiments in web3.

Please describe your proposed solution based on the above Solution Criteria (if applicable):

We are creating an interface that encompasses all the categories and projects selected for RetroPGF3. Users will have the ability to create their own lists based on these categories, curating collections of projects. In our interface, citizens can create up to five lists that they can share and edit. Citizens will allocate a percentage of the budget to specific categories and then to individual projects. This allocation can be done manually, and the system will seamlessly integrate with Pairwise.

Categorization of Projects into “Collections”:

Integration with Pairwise:

Public or Private Submission of Lists:

Integration with EAS for On-chain Attestations and IPFS Metadata Posting:

Please outline your step-by-step plan to execute this Mission, including expected deadlines to complete each piece of work:

Technical work:

Categorization work:

Please define the critical milestone(s) that should be used to determine whether you’ve executed on this proposal:

Milestone 1: Specification Completion

Milestone 2: Core Features Development

Milestone 3: Testing and Quality Assurance

Milestone 4: Application Launch

Milestone 5: Continuous Feedback and Iteration

Please list any additional support your team would require to execute this mission (financial, technical, etc.):

Grants are awarded in OP, locked for one year. Please let us know if access to upfront capital is a barrier to completing your Mission and you would like to be considered for a small upfront cash grant: (Note: there is no guarantee that approved Missions will receive up-front cash grants.)


Please check the following to make sure you understand the terms of the Optimism Foundation RFP program:

-- end of application --

Chomtana commented 10 months ago

Foundation Mission (RFP) Application

Please verify that you meet the qualifications for submitting at the above Tier:

Opti.Domains is a grant recipient in season 3, Cycle 11

Grant Update: https://gov.optimism.io/t/ready-gf-phase-1-proposal-opti-domains-interoperable-domain-name-for-the-op-stack/5510/22?u=opti.domains

As clarified by @lavande: “That sounds like Fledging! Receiving and executing on a grant constitutes working with the Collective”

https://gov.optimism.io/t/collective-trust-tiers/5877/10?u=opti.domains

Alliance name: Opti.domains Alliance Lead: Chomtana Chanjaraswichai (Opti.domains) Contact info: Chomtana001@gmail.com L2 recipient address: 0x73F4e6132Cd9E4a3945d9CA6E98e5985BBe16d2D

Please list the members of your Alliance and link to any previous work:

Chomtana Chanjaraswichai (Opti.Domains, Alliance Lead)

Petch Luancharoen (UX/UI Designer, Inspex Point of Contact)

What makes your Team best-suited to execute this Mission?

Professional level EAS experience

We have attested more than 10,000 attestations in Optimism Goerli!

We have a long experience with EAS from the start. We have developed our Opti.domains smart contract and social verification backend integrated with EAS a few months ago and have developed a good relationship with EAS team in github discussion.

Image

https://optimism-goerli.easscan.org/address/0xf01dd015bc442d872275a79b9cae84a6ff9b2a27

Image

https://optimism-goerli-bedrock.easscan.org/

Image

https://optimism-goerli-bedrock.easscan.org/address/0xf01Dd015Bc442d872275A79b9caE84A6ff9B2A27

We are the first ones who utilize EAS to attest social verification. It's quite complex but we have made it.

image image

Try one yourself at https://town-testnet.opti.domains/

We have published the EAS SDK package for our internal migration process 3 days before the offical launch of EAS SDK.

Proof:

On 4 August, we have finished our migration process to have it compatible with latest EAS (Smart contract and social verification backend) in 3 days which is a very remarkable duration.

Not only EAS SDK but we can also deploy and customize the EAS indexer (https://github.com/ethereum-attestation-service/eas-indexing-service) ourselves. So, it won't be blocking if there are any problems in your EAS indexer because we can host it ourselves.

But in fact, we can use https://optimism.easscan.org/graphql public endpoint for basic attestation query

We also detect errors in the official optimism document regarding EAS and have opened a pull request

https://github.com/ethereum-optimism/community-hub/pull/853

image

This demonstrates our great understanding of EAS at a level that can advise you in the design of schema especially on social verification if you need it. Our intensive experience with EAS that significantly reduces development time and increase the quality of RetroPGF 3 List Creation UI development

Experience with grant

We have experience with grants and have simulated the RetroPGF voting process in the previous RetroPGF 2 and a new proposed one. It's clear that RetroPGF 2 voting experience is horrible as badgeholders are required to copy their ballot to deform.

The new process solves this redundancy, however, assigning op for each project is still hard due to the reason explained in the Extra feature: Rubric-based list builder section below.

Please describe your proposed solution based on the above Solution Criteria:

Live Prototype

We have developed a live prototype demo which accounted to about 40% completion of RetroPGF 3 list creation. Our prototype currently supports 2 list-creation methods:

Demo Link

Our prototype is live at: https://retrolist.opti.domains

Demo Video

https://youtu.be/AYjrHolE_s0

Screenshots

Note: Not an actual UI design. This is a working prototype that demonstrates the functionalities

Classical List Creation

image image image image

Rubric-based List Creation

Screenshot 2023-09-04 190104 Screenshot 2023-09-04 190058 Screenshot 2023-09-04 190048 Screenshot 2023-09-04 190023 Screenshot 2023-09-04 185946 Screenshot 2023-09-04 185954

Core functionalities

We will develop core functionalities as listed in the requirements

Wallet connect

Discover Projects while managing list

List system

Rubric-based list builder

Imagine a badgeholder who is faced with the challenging task of assigning the number of OP token to a project, this decision is influenced by multiple factors. The number of OP allocated to a project must consider various aspects, not only the impact of an individual project but also including the total number of projects and the relative earning of each project.

Assigning correctly in the first pass is nearly impossible, necessitating second, third, and subsequent passes to craft the perfect ballot.

In our opinion, we can utilize the grant council scoring system to assist badgeholders in independently scoring each project based on its impact, separate from other projects. Subsequently, we can employ these scores to calculate a perfect final list. However, it's essential to acknowledge that each badgeholder may possess their own impact evaluation metrics. Thus, we propose allowing badgeholders to design their individual metrics, while providing a base template for each category to ensure consistency.

image

A prototype is worth thousand of words, please take a look at our prototype

Frontend

image

We have successfully used React + Vite to develop our frontend. We have successfully deployed our frontend on Cloudflare Page. Our frontend is now accessible from https://retrolist.opti.domains.

We will utilize our special caching technique for caching project discovery and leverage cloudflare cache to cache list data. This ensure that our system can scale to million of users seamlessly and users are having the best experience due to low latency.

We have planned to support 3 kinds of list-creation methods:

Database

We plan to leverage MongoDB Atlas along with comprehensive backup mechanisms, ensuring our data is hosted securely and has sufficient capacity for peak-hour demands.

Upon analysis, we found that the RetroPGF 3 listing favor a NoSQL document-based database as follows:

Lists along with owners, impact evaluations, and votes

[
  {
    "_id": "...",

    "listName": "...",
    "listDescription": "...",

    "impactEvaluationInput": "...",
    "impactEvaluationDescription": "...",
    "impactEvaluationLink": "...",
    "impactEvaluationType": "...",

    "listContent": [
      {
        "RPGF3_Application_UID": "...",
        "OPAmount": "...",
        "comment": "...",
        "evaluation": {
          "<rubric_id>": 5
        }
      }
    ],

    "walletAddress": "...",
    "isBadegeholder": true,
    "attestationUid": "...",
    "ipfsHash": "...",
    "forkedFrom": "<List ID>",

    "rubrics": [
      {
        "id": "<uuid>",
        "title": "...",
        "scores": {
          "-2": "...",
          "0": "...",
          "1": "...",
          "2": "...",
          "3": "...",
          "4": "...",
          "5": "..."
        }
      }
    ],

    "histories": [

    ],

    "cachedAt": "...",
    "createdAt": "...",
    "updatedAt": "..."
  }
]

This strategy considerably reduces development time and cost by avoiding unnecessary complexity.

Backend

Listing API

Listing API endpoints include List listing, Classical list creation (Draft, Edit, Publish), Rubric-based list creation (Draft, Edit, Publish) and List forking. List will be published to IPFS prior to submitting to EAS.

Project scraping

We will scrape projects once from either Agora or Supermodular RetroPGF voting platform. Project data will be cached in the frontend and no API query is needed anymore.

Deployment

For backend API deployment, we propose utilizing Atlas Functions, a MongoDB Atlas serverless solution that we don't need to worry about scaling tasks at all.

Please outline your step-by-step plan to execute this Mission, including expected deadlines to complete each peice of work:

We champion the agile methodology in product development due to the potential uncertainty of initial requirements. Feedback from project sponsor @JSeiferth, the Optimism team, and Badgeholders is instrumental in refining these requirements, thus aligning our product to optimally meet user needs.

We will deploy our live development endpoints from the project start and open source our repositories

Project Implementation Specification, Design Approach, and Architecture

We will complete this before grant is accepted. However, with agile methodology, it has enough flexibility to change between sprints.

Sprint 1: Frontend Hackathon

28 August - 24 September 2023

In this phase, our team will develop the frontend using mock-up data. This approach ensures no backend or scraper feature interactions are required at this stage.

Sprint 2: Backend & EAS Integration

25 September - 8 October 2023

The second sprint will be dedicated to the development of backend API, database, and integration of the backend systems with the already developed frontend.

Sprint 3: Testing, Bug Fixes and Additional Features

9 - 14 October 2023

Utilizing the feedback provided by the Optimism team, we will seek to improve our product through rigorous testing and bug fixing.

Sprint 4: Production Deployment

12 - 14 October 2023

Deploy RetroPGF List Creation UI to production

Maintenance and Support

After production deployment, we will provide maintenance and support. As I am a TechNerd, badgeholders and users having problem with our tool can open a user or dev support ticket on the official Optimism discord to discuss the problem with me seamlessly.

Since our deployment is mostly serverless, each cloud provider will also provide 24/7 maintenance support for our RetroPGF list creation UI.

Please define the critical milestone(s) that should be used to determine whether you’ve executed on this proposal:

Please list any additional support your team would require to execute this mission (financial, technical, etc.):

Grants are awarded in OP, locked for one year. Please let us know if access to upfront capital is a barrier to completing your Mission and you would like to be considered for a small upfront cash grant:

Upfront Capital is not a barrier. However, with a much lower grant size, getting some small upfront cash grant would be great!

Please check the following to make sure you understand the terms of the Optimism Foundation RFP program:

-- end of application --

luizakp commented 10 months ago

Foundation Mission (RFP) Application

What makes your Alliance best-suited to execute this Mission?

Please describe your proposed solution based on the above Solution Criteria (if applicable):

For this RFP, we've outlined the following steps:

Please outline your step-by-step plan to execute this Mission, including expected deadlines to complete each piece of work:

Assuming a start date of September 15th, 2023.

Milestone Delivery Date
Specification September 15, 2023
Set up project & deployment September 15, 2023
Create List feature September 29, 2023
View List UI October 6, 2023
Testing & QA October 13, 2023
Monitoring and support Until March 2024

We will commit to improving, supporting, and featuring improvements for subsequent RetroPGFs until March 2024.

Please define the critical milestone(s) that should be used to determine whether you’ve executed on this proposal:

Please list any additional support your team would require to execute this mission (financial, technical, etc.):

Grants are awarded in OP, locked for one year. Please let us know if access to upfront capital is a barrier to completing your Mission and you would like to be considered for a small upfront cash grant: (Note: there is no guarantee that approved Missions will receive up-front cash grants.)

Please check the following to make sure you understand the terms of the Optimism Foundation RFP program:

-- end of application --

Chomtana commented 10 months ago

Hi @JSeiferth, We have developed a live prototype demo which accounted for about 40% completion of RetroPGF 3 list creation. Our prototype currently supports 2 list-creation methods:

Demo Link

Our prototype is live at: https://retrolist.opti.domains

Demo Video

https://youtu.be/AYjrHolE_s0

Screenshots

Note: Not an actual UI design. This is a working prototype that demonstrates the functionalities

Classical List Creation

image image image image

Rubric-based List Creation

Screenshot 2023-09-04 190104 Screenshot 2023-09-04 190058 Screenshot 2023-09-04 190048 Screenshot 2023-09-04 190023 Screenshot 2023-09-04 185946 Screenshot 2023-09-04 185954
JSeiferth commented 10 months ago

Submissions for this RFP are now closed. Thanks to everyone who submitted a proposal! Someone from the Optimism Foundation will reach out on or shortly after Aug 11 to communicate which proposal(s) have been accepted and schedule a kickoff.

In the meantime, feel free to tag me here or reach out directly (jonas@optimism.io) with any questions 🌞

JSeiferth commented 10 months ago

Hi all – thanks for the excellent submissions! 🌞

The Optimism Foundation has selected Supermodular’s proposals to move forward with the work described in this RFP. That said, we're really excited about the amount of interest from everyone here!

To all the other teams that applied, we'd love to help you find the right way to contribute to the Optimism Collective! There will be more RFP's & Ecosystem Project Ideas in the Ecosystem's Contribution repo and future opportunities to contribute to RetroPGF.

If you have an idea of what you’d like to build for RetroPGF, feel free to reach out to me and/or post about it in the forum

Thank you again for your proposals!

carlbarrdahl commented 8 months ago

RetroPGF is now live and we're happy to share what we've built here.

You can play around with the UI but you need to be a badgeholder to publish the list. https://round3.optimism.io/lists/create

If you're curious about the code, you can find it here: https://github.com/supermodularxyz/OP-RetroPGF

round3 optimism io_lists_create(iPad Pro)

opjulian commented 2 months ago

This is still listed as "open" but is in the "done" bucket. Can we close?

@JSeiferth