FOAM Improvement Proposals


#1

Looking at the amount of discussions around possible protocol improvements, the time may be right to make it more organized and thoroughly discussed. Discourse is probably not the best tool for this kind of work. We could follow the lead of https://github.com/ethereum/EIPs and https://github.com/0xProject/ZEIPs, who, in turn, follow the lead of great OSS projects, like https://www.python.org/dev/peps/.

So how about https://github.com/f-o-a-m/FIPs?


#2

Yes please.

That is a fine idea.


#3

I looked at the EIP framework and this seems workable. Perhaps the FOAM team could fork this and the community could submit pull requests as far as making it spatially aware, and it certainly is already a mature framework for supporting the Ethereum blockchain… this could also broaden our technical resources by welcoming contributions in a recognizable framework.


#4

Definitely a great suggestion. It will take some work to set up the repository and framework for contributions. In the interim, suggestions can be collected as issues on: https://github.com/f-o-a-m/public-research

An important point though about EIPs for example is that they are not a request for a change but a technical process for standardizing functions. The proposer of an EIP is expected to lead the implementation and defend the proposal in a rigorous process. We would not want a FOAM Improvement protocol to only be a list of requests and nice to see changes. See this thread for more context:

I think a great place to start is with a workshop call as well as collect all the relevent suggestions from this forum in once place as the agenda to go through and further discuss and better understand sentiment on particular proposals.


Transferring POI's
FOAM Map Best Practices
#5

Following up on this thread, we’ve decided to host a Community Workshop Call!

:swimming_man:‍♂ Diving into the current state of the FOAM Map
:nerd_face: Discussing Formalized Future Frameworks for FOAM improvement protocols

This workshop will not be live-streamed, please sign up to attend :

Would love to see you all there! @yinzeus @foamspacer :smiley:


#6

@nameloceroom how do I get involved with contributing to official agenda of proposals?

Have a good one that we should discuss.

How to incentivize voter turnout?

Have voter rewards also be timed based. As we see that of points being challenged many are brand new can have higher reward portions going to those that vote first.

The first token holders to vote get a higher reward. Incentives watchers to look for new challenges and evaluate quickly. sometimes voters wait until the end to vote to see how many other voted. If waiting until end had a reward penalty this could be addressed/

Could add a lot of incentivization value, but also sybil risk.


#7

Great question, and sorry that it’s not more clear. Here is the list of proposals that we will go over in the next meeting if you want to add it to this document-

I’ll create a separate thread and post this in it for people to add their proposal ideas to going forward.

I think that’s definitely an interesting proposal that you have.


#8

Does anyone have any ideas on how the beginning of the process should work with these improvement proposals?

So far, I’ve just been watching these Discourse threads and adding the suggestions that are proposed to the agendas for discussion during the community calls. I’ve also tried providing online docs like the one above so there is a central starting point document for community members to add their proposals to, but no one has added anything to it.

Does it make sense to just have me continue to scrape Discourse and throw these proposals in the agendas before the call, or is there a better/easier way that this could work?


#9

Are these calls open to anyone?


#10

Yeah the Community Workshop Calls are open. All you have to do is sign up beforehand and we send out a zoom link before the meeting.


#11

So I’ve been doing some work on this front for a couple of weeks. Here’s a link to my pull request from @yinzeus’s initial work on a FOAM Improvement Proposal process. Includes specifications for FIPs and a full-cycle process for passing them through the community via vote in Community Workshop Calls. Looking for input.

Ultimately would like to try and pass this through as FIP #0000.


#12

I read it through and it looks good.


#13

Thank you @yinzeus for merging my pull request-

Does anyone else have any input before we try to get this merged to the official FOAM developer repository?

One thing that still needs to be decided is the quorum on a Community Workshop Call to hold an official vote on an FIP (x), and the percentage of votes required in favor of an FIP for it to be accepted (y). Any feedback?


The Dark and Corrupt Side of the Foam Community
#14

Here’s the spark notes version of the FIP process and spec for people that are interested but don’t feel like digging into the full version on Github. Note that it’s based on the EIP and BIP processes.

—Begin—

FIP stands for FOAM Improvement Proposal. A FIP is a design document providing information to the FOAM community, or describing a change to FOAM implementations or processes.

There are three types of FIPs:

  1. Standard Track- describes any protocol-level change that affects FOAM implementations. Two common types are:
  • TCR Parameter Adjustment
  • Smart Contract Upgrade
  1. Informational- describes a design issue, or provides general guidelines or information to the FOAM community, but is not mandatory as it does not necessarily represent FOAM community consensus.

  2. Meta- describes a new process surrounding FOAM, or proposes a change to an existing process. Requires community consensus, and is therefore considered mandatory to follow for users and implementers.

FIP Process Flow:

[ WIP ] -> [ DRAFT ] -> [ LAST CALL ] -> *VOTE* -> [ ACCEPTED ] -> *IMPLEMENT* -> [ COMPLETED ]
  • Work in Progress (WIP)- author drafts specification before releasing it to the community

  • Draft- author releases draft to the community via github.com/f-o-a-m/foam.developer/issues repository pull request. Community reviews and may propose changes to the spec.

  • Last Call- finalized version is brought to FOAM Community Call and argued for by the owner. Vote takes place to assess community support for the FIP. If (x) number of people are on the call, and (y) percentage of votes are in favor of the FIP, the FIP is considered Accepted.

  • Accepted- relevant stakeholders will move forward with making any accommodations to their systems or processes as they relate to the Accepted FIP.

  • Completed- FIP has been developed into code, tested, and implemented to production.

  • Active- this is the equivalent of Completed, but for informational or meta FIPs, which are focused more on processes and do not need to be implemented into code.

Components of a Successful FIP:

  • Preamble- header containing metadata about the FIP, including the FIP number (ex. #0000), a short descriptive title (limited to a maximum of 44 characters), the author name or alias, and other details

  • Summary- short description of FIP and issue it means to address.

  • Motivation- problem being addressed by the FIP.

  • Proposal Specification- functionally describes the change or new feature.

  • Backwards Compatibility- describes any backwards incompatibilities that the FIP introduces and proposes ways to mitigate or resolve those incompatibilities.

  • Implementations- (optional) may include technical implementation details like code syntax, or may instead leave this up to developers.

  • Appendix- (optional) may include research, reports, data, test cases, community discussions or other supporting relevant info.

  • Copyright Waiver- waives intellectual property rights of the author(s) so FIP exists in public domain.

—End—

Again, definitely need community feedback on this part, below. What should (x) and (y) be?


#15

FYI, the core FOAM team has merged @yinzeus’s original pull request to the f-o-a-m/foam.developer Github repository. This means that we now officially have a FIP folder on their Github, with this FIP process and specification as the first FIP (fip-1). Check it out here-

The plan is to hash out the remaining details, like what I’ve been posting about in my last two posts above and to figure out who will be FIP editors. We will then move towards making this the first accepted FIP by moving it through the process and voting.

Please reach out to me or @yinzeus if you’d like to be an FIP editor. FIP editor responsibilities are listed in fip-1 here, but are obviously still up for discussion since this hasn’t passed through yet as accepted.


#16

Thank you @nameloceroom for keeping the focus on this process and assisting with promoting it here on the discourse.

It is key to developing the community that stakeholders step up to assist at this time; I would like to see those who have contributed to the map, and the discourse conversation given a chance to be a FIP editor.

There are going to be some interesting opportunities for FOAM functionality going forward and I would like to see those who will be effected by improvements involved!