Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Copy edits #30

Closed
wants to merge 2 commits into from
Closed

Copy edits #30

wants to merge 2 commits into from

Conversation

artburkart
Copy link
Contributor

@artburkart artburkart commented May 25, 2022

This commit includes copy edits of "white-paper.md".

It's getting late by me, but I wanted to get these initial copy edits proposed. Tomorrow I'll follow up with inline commentary.

This commit includes copy edits of "white-paper.md".
Copy link
Contributor Author

@artburkart artburkart left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've read over the whole document a couple times, and I have questions. 😁
I recognize GitHub might not be the preferred place for discussion, but I look forward to seeing your thoughts on these matters whether on Telegram, Discord, or wherever.

Super excited about tea!

  1. The paper mentions "leftpad" among other projects and says we need to ensure software integrity, but what stops someone from rage quitting on a project? Couldn't they theoretically unstake and/or unsteep, and walk away? I see that the "leftpad" situation would still be slightly improved because they wouldn't be able to simply pull their packages off of the Internet, but is that the extent of protection?
  2. The document speaks a lot about punishing bad actors, but what about people who make earnest mistakes? Further, what if someone is on vacation for the entirety of the "governance-defined grace period" for responding to a tea taster? Will that also result in slashing?
  3. What happens if someone submits a package for which they aren't the maintainer? Let's say I grab Homebrew and publish it on tea. Now I have the NFT. How do we navigate this situation if you want to rightfully claim ownership of that NFT? Additionally, the Sybil attack scenario where someone creates many identities is addressed, but what about if they make a bunch of packages on behalf of real maintainers without their knowledge?
  4. On line 169, we say, "Packages may only depend on major versions or greater than specific versions, but for the whole range." What does this mean? I comprehend right up until the "but for the whole range" bit.
  5. What is the explicit behavior we're trying to avoid that wastes developers time on line 199? "To disincentivize wasting developers’ time, communication between the tea tasters and package maintainers will require the tea tasters to steep tea tokens." I think it would be helpful to be more clear here.
  6. Similar to item 1, is there an exit strategy? If someone decides to hang up their software development hat, how do they gracefully leave the system? I think this is something that should be made clear up front.
  7. Is there anything we can do to protect NFT holders from scammers? It seems inevitable that someone will accidentally hand over their seed phrase and lose their maintainer NFT or what-have-you.
  8. On line 225, what does ESG stand for?
  9. Is it possible for a package maintainer to act as a tea tester and make a negative or positive report about their own project? Is there a world where the total reward for doing so would be higher than simply being a reputable maintainer?
  10. Y'all go into detail about the possibility of leveraging a DAO to remunerate all maintainers involved in the development of a package. Curious, did you consider fractionalized NFTs? It seems like it could be a way of keeping the remuneration native to the system.
  11. In the "Dependencies Analysis" section, there is a bit of a conflict in what is communicated. On line 155, we say, "To provide a simple methodology that rewards all developers who have contributed to open-source software while keeping the creation of the dependencies tree quick and computationally efficient, we propose to verify only first-level dependencies upon submission of a package." and on line 167, we say, "To address this, we propose each package be subject to a full dependency scan upon submission so we can ensure that the package complies with the following rules for semantic version ranges." What is the intended behavior and does it change depending on the lifecycle of package maintenance?
  12. On line 199, there is mention of a "messaging protocol". Will this be native to the blockchain? Or is there any additional detail that can be shared about this? There are a few—but not many—blockchain solutions out there right now that could actually facilitate messaging. DeSo comes to mind.
  13. Is there any risk of tea tasters becoming predatory? Let's say a bunch of people find this awesome new tea tool, and they try it out but don't get the traction with their package that they're looking for and stop paying attention to it. If that happens in a high enough volume, I could see a scenario happening where tea tasters race to ruin the reputations of tiny projects created by newer developers. This could have a negative effect on the ecosystem.
  14. Will the "governance-defined" period of time take CVE severity into account? Or will it be fixed?
  15. Is the list provided in the "Governance" section exhaustive? Those were "inflation, transaction fees, staking rewards, steeping rewards, or optimum steeping ratio."

white-paper.md Show resolved Hide resolved
white-paper.md Show resolved Hide resolved
white-paper.md Outdated Show resolved Hide resolved
white-paper.md Outdated Show resolved Hide resolved
white-paper.md Outdated Show resolved Hide resolved
white-paper.md Show resolved Hide resolved
white-paper.md Show resolved Hide resolved
white-paper.md Show resolved Hide resolved
white-paper.md Show resolved Hide resolved
@@ -212,7 +212,7 @@ As packages gain in popularity and usage, with more applications and potentially

## Maintainer NFT

Upon successful submission of a package, the package maintainer will receive a non-fungible token (NFT) to evidence their work and contribution. The holder of this NFT will automatically receive all rewards associated with the package. Package maintainers may transfer maintenance ownership over a package to another package maintainer by simply transferring the package’s NFT. Successful transfer of the NFT will lead to the new owner automatically receiving future package rewards.
Upon successful submission of a package, the package maintainer will receive an NFT as evidence of their work and contribution. The holder of this NFT will automatically receive all rewards associated with the package. Package maintainers may transfer maintenance ownership over a package to another package maintainer by simply transferring the package’s NFT. Successful transfer of the NFT will lead to the new owner automatically receiving future package rewards.
Copy link
Contributor Author

@artburkart artburkart May 25, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Felt odd to break up "NFT" into its component words here when it had already been used many times beforehand without qualification.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fair - We should include the "non-fungible token" expended version in section 5.1 then, the first time NFT is used so there is no ambiguity.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That works. I'll add it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But also, wen nfteas?

@artburkart artburkart marked this pull request as ready for review May 25, 2022 18:39
@mxcl
Copy link
Member

mxcl commented May 26, 2022

Wow! Thank you! We’re looking through these and love your contribution.

@thomas-borrel thomas-borrel self-assigned this May 27, 2022
@thomas-borrel
Copy link
Collaborator

Thanks @artburkart - Comments are below

  1. The paper mentions "leftpad" among other projects and says we need to ensure software integrity, but what stops someone from rage quitting on a project? Couldn't they theoretically unstake and/or unsteep, and walk away? I see that the "leftpad" situation would still be slightly improved because they wouldn't be able to simply pull their packages off of the Internet, but is that the extent of protection?

They could definitely unsteep, but that would be very visible. The incentive for package maintainers is to remove the tea they have steeped, so they don't get slashed and lose tea, but doing so triggers an event that is visible to all. That event signals the rest of the community who can then decide whether to unsteep themselves and stop using the package, or fork it and maintain it themselves.

@thomas-borrel
Copy link
Collaborator

  1. The document speaks a lot about punishing bad actors, but what about people who make earnest mistakes? Further, what if someone is on vacation for the entirety of the "governance-defined grace period" for responding to a tea taster? Will that also result in slashing?

One of the goals of the governance-defined grace period is to account for earnest mistakes and give people the opportunity to correct them.
If someone is on vacation for the entirety of the "governance-defined grace period" then they would get slashed. The fact that someone is on vacation does not mean that bad actors won't exploit a vulnerability they find.

@thomas-borrel
Copy link
Collaborator

  1. What happens if someone submits a package for which they aren't the maintainer? Let's say I grab Homebrew and publish it on tea. Now I have the NFT. How do we navigate this situation if you want to rightfully claim ownership of that NFT? Additionally, the Sybil attack scenario where someone creates many identities is addressed, but what about if they make a bunch of packages on behalf of real maintainers without their knowledge?

That package could be looked at as a fork. Handling package forks is something we've listed under future work. tea tasters could also flags these forks as such and steep against them, thus affecting the reputation of the package and their "maintainer"

@thomas-borrel
Copy link
Collaborator

  1. What is the explicit behavior we're trying to avoid that wastes developers time on line 199? "To disincentivize wasting developers’ time, communication between the tea tasters and package maintainers will require the tea tasters to steep tea tokens." I think it would be helpful to be more clear here.

I could create a bot to overload a developer with unsubstantiated claims that the developer would feel they need to address to maintain their reputation. Having to steep tokens should disincentivize this behavior.

@thomas-borrel
Copy link
Collaborator

thomas-borrel commented May 27, 2022

6.Similar to item 1, is there an exit strategy? If someone decides to hang up their software development hat, how do they gracefully leave the system? I think this is something that should be made clear up front.

See 5.1 "The holder of a package’s NFT can transfer its ownership to another developer (or group of developers), thus making them maintainers of the package and recipients of any future rewards. Similarly, a developer may decide to take on the role of package maintainer by forking the existing package and submitting a new one which they will maintain moving forward, thus becoming themselves both package creator and maintainer."

@thomas-borrel
Copy link
Collaborator

  1. Is there anything we can do to protect NFT holders from scammers? It seems inevitable that someone will accidentally hand over their seed phrase and lose their maintainer NFT or what-have-you.

We should look at this from 2 different angles:

  • Wallet: Which wallet solution should be integrated with tea to reduce the risk of such a situation occurring
  • Loss of access / compromised wallet: The package maintainer could fork their own package, unsteep the old one (which would alert the rest of the community) and communicate to the community that there is a new package. The migration of the steeped tokens from the old package (whose NFT was lost/compromised) to the new would reduce the steeping rewards directed at the old package.

Governance could be an approach there as well, but I believe we should be very careful not to give Governance the ability to control where NFTs are/who owns them, as it would materially increase the attack surface.

@thomas-borrel
Copy link
Collaborator

  1. On line 225, what does ESG stand for?

ESG = Environmental, Social, and Governance

@thomas-borrel
Copy link
Collaborator

  1. Is it possible for a package maintainer to act as a tea tester and make a negative or positive report about their own project? Is there a world where the total reward for doing so would be higher than simply being a reputable maintainer?

A package maintainer could try to do that. This is one of the reasons why we need to make sure the system (including the reputation system) integrates Sybil protection mechanisms.
Regarding the rewards, the work on a more detailed yellow paper has started. Our goal should be that the total reward for being a tea taster does not exceed that of being a reputable maintainer.

@thomas-borrel
Copy link
Collaborator

  1. Y'all go into detail about the possibility of leveraging a DAO to remunerate all maintainers involved in the development of a package. Curious, did you consider fractionalized NFTs? It seems like it could be a way of keeping the remuneration native to the system.

The use of a DAO to remunerate all maintainers is part of future work. Fractionalized NFTs could be another approach - Great idea! Let us know if you're interested in building it.

@thomas-borrel
Copy link
Collaborator

  1. In the "Dependencies Analysis" section, there is a bit of a conflict in what is communicated. On line 155, we say, "To provide a simple methodology that rewards all developers who have contributed to open-source software while keeping the creation of the dependencies tree quick and computationally efficient, we propose to verify only first-level dependencies upon submission of a package." and on line 167, we say, "To address this, we propose each package be subject to a full dependency scan upon submission so we can ensure that the package complies with the following rules for semantic version ranges." What is the intended behavior and does it change depending on the lifecycle of package maintenance?

The goal here is to check the first level of dependencies to limit compute requirements. The underlying assumption is that a package used as a dependency is a package that was itself submitted to the registry (See Figure 2).
I suppose what tripped your comment is the word "full" in "full dependency". What we wanted to communicate here is that packages are subject to a comprehensive scan, which is limited to the first level of dependencies, for the reason mentioned above.

@thomas-borrel
Copy link
Collaborator

  1. On line 199, there is mention of a "messaging protocol". Will this be native to the blockchain? Or is there any additional detail that can be shared about this? There are a few—but not many—blockchain solutions out there right now that could actually facilitate messaging. DeSo comes to mind.

The goal would be for it to be native to the chain. We'll share more in the yellow paper in a few months.
Thank you for mentioning DeSo though.

@thomas-borrel
Copy link
Collaborator

13.Is there any risk of tea tasters becoming predatory? Let's say a bunch of people find this awesome new tea tool, and they try it out but don't get the traction with their package that they're looking for and stop paying attention to it. If that happens in a high enough volume, I could see a scenario happening where tea tasters race to ruin the reputations of tiny projects created by newer developers. This could have a negative effect on the ecosystem.

We always need to consider the risk of any participant becoming predatory. We'll share a mode detailed view of the tokenomics with the yellow paper that will include information on multiple scenarios including this one.

@thomas-borrel
Copy link
Collaborator

  1. Will the "governance-defined" period of time take CVE severity into account? Or will it be fixed?

At launch, it is likely to be kept simple, but the intent should be to allow for the community to make that decision and give Governance the tools to enact it.

@thomas-borrel
Copy link
Collaborator

  1. Is the list provided in the "Governance" section exhaustive? Those were "inflation, transaction fees, staking rewards, steeping rewards, or optimum steeping ratio."

No - the list is not exhaustive, hence the "these parameters could include"

@mxcl
Copy link
Member

mxcl commented Jun 1, 2022

  1. On line 169, we say, "Packages may only depend on major versions or greater than specific versions, but for the whole range." What does this mean? I comprehend right up until the "but for the whole range" bit.

This is a relatively unclear way of saying eg. >=5.2 <6, clearing up the language here would be good.

Copy link
Contributor Author

@artburkart artburkart left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@thomas-borrel and @mxcl, thanks for the thorough review last week. I was traveling, so I didn't get back to it right away. For the most part, I don't have follow up questions, and I'm going to push up a PR that acquiesces to any rebuttals you've made.

The use of a DAO to remunerate all maintainers is part of future work. Fractionalized NFTs could be another approach - Great idea! Let us know if you're interested in building it.

I don't think I'm the person you want implementing fractional NFTs, but I will look into and follow up with suggestions.

Also, I tried to get a hold of Nick via Telegram, but I haven't received a reply yet, and I can't DM them on Discord. 😅 Any chance you could pass on the message that I'm trying to get in touch? I'd very much appreciate it. 😊


* Packages may only depend on major versions or greater than specific versions, but for the whole range.
* Packages may only depend on a major version or any version preceding the next major version increment (e.g., >= 5.2 < 6).
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mxcl
Perhaps this is clearer? This is really challenging language. 😅

Copy link
Member

@mxcl mxcl Jun 5, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It’s an “and”. I suggest:

Packages may only constrain their dependence to a major version though the starting range can be any semantic version (e.g., >=5.2.1 <6).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Before I make the edit, are you saying "dependence" or "dependencies"?

This?

Packages may only constrain their dependencies to a major version, though the start of the range can be any semantic version (e.g., >=5.2.1 <6).

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did mean dependence but I guess dependencies is better.

white-paper.md Show resolved Hide resolved
white-paper.md Show resolved Hide resolved
white-paper.md Show resolved Hide resolved
white-paper.md Show resolved Hide resolved
white-paper.md Show resolved Hide resolved

[^13]: Source: @medium

## Package Users

Package users are software developers focused on solving a specific problem. They often look in the open-source community for the tools they need to experiment quickly and iterate at very little to no cost, directly benefitting from the work of package creators and maintainers. Traditionally, a subset may have chosen to support package maintainers through donations or other forms of remuneration; however, this has rarely been the case.
Package users are software developers focused on solving a specific problem. They often look in the open-source community for the tools they need to experiment quickly and iterate at very little to no cost, directly benefiting from the work of package creators and maintainers. Traditionally, a subset may have chosen to support package maintainers through donations or other forms of remuneration; however, this has rarely been the case.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kept it as "benefiting".

white-paper.md Outdated

## Package Supporters and Sponsors

In Web 2.0 and web3, package supporters have often been called “sponsors.” They are organizations or package users who use open-source software to build their commercial products, philanthropists looking to support the ecosystem, or entrepreneurs looking to fund teams to develop components of a larger system.

tea proposes to extend the communities of package supporters to the entire tea community, whether organizations, developers, users, or tech enthusiasts. tea’s goal is to implement decentralized incentive mechanisms through unique use cases of the tea token for any member of the tea community to contribute to the perpetual sustainability and continuous growth of open-source. Package supporters and sponsors are free to decide which packages or package maintainers they want to support based on their work, beliefs, or any criteria and metric that would influence their decision. Additionally, the support provided by package supporters and sponsors will flow to each package’s dependencies, thus implicitly trusting the package maintainer to make good choices about their stack and using this information to contribute to their reputation.

Provided that the package maintainer offers such service, a package supporter and sponsor may receive a premium support level NFT in return, thus benefiting from accelerated SLAs or more flexible licensing. Additionally, package supporters and sponsors may decide to support packages or package maintainers and automatically redirect all or a percentage of their rewards to incentivize teams to build new open-source software. In other words, packages don’t need to exist for tea to start pouring in. Nascent projects can be supported just as well as more mature ones, further incentivizing a constantly evolving open-source landscape.
Provided that the package maintainer offers such a service, a package supporter and sponsor may receive a premium support-level NFT in return, thus benefiting from accelerated SLAs or more flexible licensing. Additionally, package supporters and sponsors may decide to support packages or package maintainers and automatically redirect all or a percentage of their rewards to incentivize teams to build new open-source software. In other words, packages don’t need to exist for tea to start pouring in. Nascent projects can be supported just as well as more mature ones, further incentivizing a constantly evolving open-source landscape.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, I see. Thanks for the clarification.

white-paper.md Outdated

Our goal is to reward both Web 2.0 and web3 developers. The intricacies and specifics of each stack make it so that tracking installations and uninstallations of packages could easily fall victim to one or more bad actors. That includes “buying” installations to artificially inflate numbers. An even worse scenario would be introducing fundamental changes to the nature of open-source software by creating unnecessary friction with license keys or other deployment tracking mechanisms. To provide the broadest coverage, we believe that rewards mustn’t rely on a simplistic notion of tracking installations or uninstallations, but rather on incentive mechanisms that encourage the submission of quality packages and the reporting of nefarious or high-risk packages. Lastly, many packages rely on common dependencies. For example, lodash has 151,209 dependents[^15] while chalk has 78,854 dependents[^16] or log4js has 3,343 dependents[^17]. As more packages are created using the same dependencies, how do we ensure that incentives are distributed fairly and equitably? How do we ensure that the most utilized dependencies are rewarded without starving new or emerging packages and developers? How do we ensure that the incentive system does not end-up steering developers away from niche languages to centralize them where incentives are better? But also, as developers, how do we identify packages with the most dependents to build alternatives - leaner, more efficient, better-coded versions of these packages? At tea, we believe that the lack of incentive has impeded the evolution of open-source software. Supported by the right economic incentives and rewards, more developers will be in a position to build, improve and augment open–source software for the betterment of the world. Only then will the tea token be able to represent the total value of open-source software.
Our goal is to reward both Web 2.0 and web3 developers. The intricacies and specifics of each stack make it so that tracking installations and uninstallations of packages could easily fall victim to one or more bad actors. That includes “buying” installations to artificially inflate numbers. An even worse scenario would be introducing fundamental changes to the nature of open-source software by creating unnecessary friction with license keys or other deployment tracking mechanisms. To provide the broadest coverage, we believe that rewards must not rely on a simplistic notion of tracking installations or uninstallations, but rather on incentive mechanisms that encourage the submission of quality packages and the reporting of nefarious or high-risk packages. Lastly, many packages (i.e., dependents) rely on common dependencies. For example, at the time of writing, Lodash has 151,209 dependents[^15], while Chalk has 78,854 dependents[^16] and log4js has 3,343 dependents[^17]. As more packages are created using the same dependencies, how do we ensure that incentives are distributed fairly and equitably? How do we ensure that the most utilized dependencies are rewarded without starving new or emerging packages and developers? How do we ensure that the incentive system does not steer developers away from niche programming languages to centralize them where incentives are better? And as developers, how do we identify packages with the most dependents to build alternatives—leaner, more efficient, better-coded versions of these packages? At tea, we believe that the lack of incentive has impeded the evolution of open-source software. Supported by the right economic incentives and rewards, more developers will be in a position to build, improve, and augment open–source software for the betterment of the world. Only then will the tea token be able to represent the total value of open-source software.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed "i.e., dependents"


![Steeping rewards distribution across dependencies.](img/figure-2.svg){#fig:steeping-rewards}


Versioning and conflicting dependencies are significant challenges, and troubleshooting them can turn into massive time drains. To address this, we propose each package be subject to a full dependency scan upon submission so we can ensure that the package complies with the following rules for semantic version ranges.
Versioning and conflicting dependencies are significant challenges, and troubleshooting them can turn into massive time drains. To address this, we propose each package be subject to a comprehensive dependency scan upon submission, so we can ensure that the package complies with the following rules for semantic version ranges:
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I switched this to "comprehensive" because it's more evocative of quality, whereas "full" seemed to communicate quantity.

@artburkart
Copy link
Contributor Author

Oh, also, would it be helpful if I looked at all the other PRs that have come through?

@mxcl
Copy link
Member

mxcl commented Jun 8, 2022

Sorry for the delay on this, but frankly, it's a lot to review.

@artburkart
Copy link
Contributor Author

Sorry for the delay on this, but frankly, it's a lot to review.

@mxcl - yeah, this isn't a great forum for this type of discussion. I'll break it up into smaller PRs, so we can get some of the noncontroversial stuff merged. Smaller chunks should make it easier to process. 👍

@artburkart artburkart marked this pull request as draft June 10, 2022 13:54
@artburkart
Copy link
Contributor Author

I've captured all the changes in separate pull requests, so this can be closed and removed. Thanks for all the reviews!

Nick reached out to me, but we still haven't had a chance to connect; very much looking forward to meeting him!

@artburkart artburkart mentioned this pull request Jun 17, 2022
@mxcl
Copy link
Member

mxcl commented Jun 17, 2022

You're a superstar @artburkart 🔥

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants