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

Grin 2020 roadmap #38

Closed
wants to merge 4 commits into from
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
120 changes: 120 additions & 0 deletions text/0000-2020-roadmap.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
- Title: `2020-roadmap`
- Authors: [@lehnberg](mailto:[email protected])
- 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.
lehnberg marked this conversation as resolved.
Show resolved Hide resolved
- **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.
lehnberg marked this conversation as resolved.
Show resolved Hide resolved
- **Mining protocol.** Research Stratum v2 and establish whether it's a viable solution to reduce mining pool centralization.
lehnberg marked this conversation as resolved.
Show resolved Hide resolved
- **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
Copy link
Contributor

Choose a reason for hiding this comment

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

We should probably make an effort to resolve some of these before merging this. Doesn't seem very useful without answering the 2nd one, for example.


- 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/