From de69f4def19974bfccceb302e0e838ac1f59db85 Mon Sep 17 00:00:00 2001 From: Daniel Lehnberg Date: Mon, 13 Jan 2020 18:24:18 +0000 Subject: [PATCH 1/3] add first draft of 2020 roadmap RFC --- text/0000-2020-roadmap.md | 120 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 text/0000-2020-roadmap.md diff --git a/text/0000-2020-roadmap.md b/text/0000-2020-roadmap.md new file mode 100644 index 0000000..56ea7f3 --- /dev/null +++ b/text/0000-2020-roadmap.md @@ -0,0 +1,120 @@ +- Title: `2020-roadmap` +- Authors: [@lehnberg](mailto:daniel.lehnberg@protonmail.com) +- Start date: `Jan 10, 2020` +- RFC PR: Edit if merged: [mimblewimble/grin-rfcs#0000](https://github.com/mimblewimble/grin-rfcs/pull/0000) +- Tracking issue: [Edit if merged with link to tracking github issue] + +--- + +# Summary + +[summary]: #summary + +This RFC lists areas and objectives that members of the Grin community would like to prioritize in 2020. The theme for the year is _**Underpinning**_. In construction, underpinning is the process of strengthening the foundation of an existing building or other structure. The ambition is to solidify Grin's foundation throughout the course of 2020 and make it easier to build on in future years. This list is **not exhaustive**, and reflecting Grin's open source nature, contributions in other areas are welcomed. + +# Motivation + +[motivation]: #motivation + +Having a list of priorities commonly agreed on by members of the community can facilitate planning and identify what some of the deliverables might be throughout the course of the year. It also serves as a way to measure progress. + +Furthermore, the process can be helpful in and of itself. As participants attempt to agree on a list of items that they consider are important to target for next year, it also becomes clear what is _not as important_ in this context. + +# Community-level explanation + +[community-level-explanation]: #community-level-explanation + +## Development + +- **Transaction building.** Establish an approach that will be robust and good enough be a viable baseline for building grin transactions, and can replace unsafe http methods. +- **Output linkability.** Explore ideas and approaches to obfuscate the transaction graph, both in the mempool/p2p layer, and on the blockchain itself. +- **P2P layer.** Iterate on dandelion, explore Erlay, explore encrypting node traffic, and determine whether I2P support is something that should be dropped or targeted for implementation. +- **Syncing and IBD.** Explore FlyClient as a viable approach to light clients for mobiles and other devices, in order to reduce the reliance on hosted nodes. +- **Mining protocol.** Research Stratum v2 and establish whether it's a viable solution to reduce mining pool centralization. +- **Testing.** Integration tests, regression tests, unit tests. Processes, tools, and formalizing approaches. +- **Releasing.** Binary packaging, release processes, planning. +- **Network upgrades.** What should happen after the last scheduled hard fork in Jan 2021? + +## Developer experience (DX) + +- **Documentation.** Promote documentation to a first class citizen in Grin. +- **Exchange integrations.** Provide better integration instructions for exchanges. Best practices, examples, and components as required. +- **Wallet integrations.** Provide better guidance for wallet projects on how to support Grin. +- **Merchant integrations.** Provide instructions for merchants on how to accept payments in Grin from their users in a manner that is privacy preserving and secure. + +## Community + +- **Onboarding.** Make it easier for newcomers to begin contributing to the project. +- **grincon2.** Better planning, better lead times, raise quality, and attendance. +- **Website.** Improve communication and content on the Grin website. +- **Meetups.** Facilitate meetup organization and "local community start packages". + +## Governance + +- **Moderation.** Establish an indepent Moderation team. +- **Vision.** Define Grin trade-offs and design goals. +- **Funding proposals.** Formalize a process, encourage submissions. +- **Resilience.** Avoid creating any more single point of failures, share access and privileges. +- **2021 Roadmap.** Improve on the roadmap planning process for the next year. More structure, milestones, and make it more inclusive. + +# Drawbacks + +[drawbacks]: #drawbacks + +Having a defined roadmap might give the false impression to contributors that contributions in other areas are not welcomed. It might also introduce more hierarchy, politics, and bureaucracy into Grin's processes. + +# Rationale and alternatives + +[rationale-and-alternatives]: #rationale-and-alternatives + +As outlined, the focus is on improving what already exists today rather than introducing new functionality and features. This is deliberate. As the project is already spread out thin in terms of resources and contributors, care should be taken not to increase the surface area further. + +# Prior art + +[prior-art]: #prior-art + +This RFC been heavily inspired by Rust's 2019 roadmap process.[1] + +In October 2019, there was a community call for ideas posted to the Grin Forum.[2] Below are excerpts from some of the submissions (by no means exhaustive): + +*AlexGSG:* +> there is a problem to withdraw from exchanges via HTTPS, it is drives the price down , because much easy to sell , than to buy! + +*Kurt:* +> Continue looking at techniques helping obfuscate tx graph (dandelion iterations, zero-knowledge cryptography to unlink TXO,…) + +*Phyro:* +> If a full node can scale on a mobile phone for many years to come start work on that, otherwise, research light client options + +*Andro:* +> The one thing that I want to see in 2020 is user friendly transactions and wallets. + +*notguilty:* +> Features are fun and nice but secondary to basic reliability. I would like to see a solid foundation... + +*Roelsmajor* +> When [FlyClient paper] https://eprint.iacr.org/2019/226? + + +# Unresolved questions + +[unresolved-questions]: #unresolved-questions + +- What about more detailed planning for node and wallet teams? +- What is the implementation strategy? How do we go about achieving what's on the roadmap? +- How do we ensure that the contents in this RFC is well anchored with the contributors expected to make the actual heavy lifting? +- What happens when there are conflicting directions/ contributions? + +# Future possibilities + +[future-possibilities]: #future-possibilities + +There is a lot of room for improving the roadmap process for future years, involving teams and contributors more directly and having a wider discussion about what's important in the community. This was a first step. Hopefully there are learnings from this edition that can be used to improve future versions. + +# References + +[references]: #references + +- [1] https://blog.rust-lang.org/2018/12/06/call-for-rust-2019-roadmap-blogposts.html + +- [2] https://www.grin-forum.org/t/grin2020-roadmap-calling-for-blog-posts-with-ideas/6327/ From c66fc3b7fbdc3f6c6f6a03a8d7823ab9a6b3eb7c Mon Sep 17 00:00:00 2001 From: Daniel Lehnberg Date: Sun, 19 Jan 2020 12:10:33 -0500 Subject: [PATCH 2/3] incorporate @tromp feedback --- text/0000-2020-roadmap.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/text/0000-2020-roadmap.md b/text/0000-2020-roadmap.md index 56ea7f3..d96425d 100644 --- a/text/0000-2020-roadmap.md +++ b/text/0000-2020-roadmap.md @@ -26,10 +26,12 @@ Furthermore, the process can be helpful in and of itself. As participants attemp ## Development +- **Kernel types.** Complete specification of and implement relative kernels as outlined in [mimblewimble/grin-rfcs#19](https://github.com/mimblewimble/grin-rfcs/pull/19) - **Transaction building.** Establish an approach that will be robust and good enough be a viable baseline for building grin transactions, and can replace unsafe http methods. - **Output linkability.** Explore ideas and approaches to obfuscate the transaction graph, both in the mempool/p2p layer, and on the blockchain itself. - **P2P layer.** Iterate on dandelion, explore Erlay, explore encrypting node traffic, and determine whether I2P support is something that should be dropped or targeted for implementation. -- **Syncing and IBD.** Explore FlyClient as a viable approach to light clients for mobiles and other devices, in order to reduce the reliance on hosted nodes. +- **Syncing and IBD.** Take advantage of [unspent bitmap commitment](https://github.com/mimblewimble/grin-rfcs/blob/master/text/0009-enable-faster-sync.md) added in v3.0.0 to split IBD among many peers to improve latency, speed, and reliability. Explore FlyClient as a viable approach to light clients for mobiles and other devices, in order to reduce the reliance on hosted nodes. +- **Proof-of-work.** Prepare final tweak of ASIC Resistant secondary proof-of-work algorithm. - **Mining protocol.** Research Stratum v2 and establish whether it's a viable solution to reduce mining pool centralization. - **Testing.** Integration tests, regression tests, unit tests. Processes, tools, and formalizing approaches. - **Releasing.** Binary packaging, release processes, planning. From b6640ccc126dd241a1606e2b89ee96315ee1903d Mon Sep 17 00:00:00 2001 From: Rasikh Morani Date: Tue, 11 Feb 2020 17:12:49 -0600 Subject: [PATCH 3/3] Fix Forum URL to New Domain --- text/0000-2020-roadmap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/text/0000-2020-roadmap.md b/text/0000-2020-roadmap.md index d96425d..22eac5c 100644 --- a/text/0000-2020-roadmap.md +++ b/text/0000-2020-roadmap.md @@ -119,4 +119,4 @@ There is a lot of room for improving the roadmap process for future years, invol - [1] https://blog.rust-lang.org/2018/12/06/call-for-rust-2019-roadmap-blogposts.html -- [2] https://www.grin-forum.org/t/grin2020-roadmap-calling-for-blog-posts-with-ideas/6327/ +- [2] https://forum.grin.mw/t/grin2020-roadmap-calling-for-blog-posts-with-ideas/6327