|
| 1 | +# Getting Started |
| 2 | + |
| 3 | +## How to contribute |
| 4 | + |
| 5 | +Found an issue you're passionate about? Comment with `"I'd like to tackle this!"` to claim it. Once assigned, you can begin your work. After completing your contribution, submit a pull request for review. Our team and other contributors will be able to provide feedback, and once approved, your contribution will be merged. |
| 6 | + |
| 7 | +Please adhere to the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) specification when crafting PR titles. Also, run `make fmt` to format source code according to the configured style guide. The repo enforces these automatically via GitHub Actions. |
| 8 | + |
| 9 | +> [!IMPORTANT] |
| 10 | +> We believe in fostering an inclusive, welcoming, and respectful community. All contributors are expected to adhere to our [Code of Conduct](#code-of-conduct). Please familiarize yourself with its contents before participating. |
| 11 | +
|
| 12 | +## Prerequisite Knowledge |
| 13 | + |
| 14 | +To contribute effectively, you'll need a foundational understanding of both the Ethereum protocol and the Elixir language, including the Erlang VM (BEAM). If you're new to these areas, we've curated a list of resources to get you started: |
| 15 | + |
| 16 | +**Learning Elixir**: |
| 17 | + |
| 18 | +- **Videos**: |
| 19 | + - [Intro to Elixir](https://youtube.com/playlist?list=PLJbE2Yu2zumA-p21bEQB6nsYABAO-HtF2) |
| 20 | + - [Hitchhiker's tour of the BEAM](https://www.youtube.com/watch?v=_Pwlvy3zz9M) |
| 21 | +- **Blogs**: |
| 22 | + - [Zen of Erlang](https://ferd.ca/the-zen-of-erlang.html) |
| 23 | + - [Where Erlang Blooms](https://ferd.ca/rtb-where-erlang-blooms.html) |
| 24 | + - [What can I only do in Erlang](https://erlang.org/pipermail/erlang-questions/2014-November/081570.html) |
| 25 | + - [Stacking theory for systems design](https://medium.com/@jlouis666/stacking-theory-for-systems-design-2450e6300689) |
| 26 | + - [On Erlang States and Crashes](http://jlouisramblings.blogspot.com/2010/11/on-erlang-state-and-crashes.html) |
| 27 | + - [How Erlang does scheduling](http://jlouisramblings.blogspot.com/2013/01/how-erlang-does-scheduling.html) |
| 28 | +- **Books**: |
| 29 | + - [Elixir in Action](https://www.manning.com/books/elixir-in-action-third-edition) |
| 30 | + - [Learn You Some Erlang](https://learnyousomeerlang.com/) |
| 31 | + |
| 32 | +With this foundation you should have a basic understanding of the Elixir language and the Erlang VM. You can then start (or in parallel) learning about the Ethereum protocol. |
| 33 | + |
| 34 | +**Learning Ethereum**: |
| 35 | + |
| 36 | +- **Videos**: |
| 37 | + - [Basic technical details of Ethereum](https://youtu.be/gjwr-7PgpN8) |
| 38 | + - [Ethereum in 30 minutes](https://youtu.be/UihMqcj-cqc) |
| 39 | + - [Foundations of Blockchains](https://www.youtube.com/playlist?list=PLEGCF-WLh2RLOHv_xUGLqRts_9JxrckiA) |
| 40 | + - [Ethereum Foundation youtube channel](https://www.youtube.com/@EthereumFoundation) |
| 41 | + - [Ethereum youtube channel](https://www.youtube.com/@EthereumProtocol) |
| 42 | +- **Posts** |
| 43 | + - [What happens when you send 1 DAI](https://www.notonlyowner.com/learn/what-happens-when-you-send-one-dai) |
| 44 | +- **Books**: |
| 45 | + - [Inevitable Ethereum](https://inevitableeth.com/site/content) |
| 46 | +- **Blogs**: |
| 47 | + - [Vitalik Buterin's blog](https://vitalik.ca/) |
| 48 | + - [Ethereum Foundation blog](https://blog.ethereum.org/) |
| 49 | + - [Ethereum Magicians forum](https://ethereum-magicians.org/) |
| 50 | + - [Ethresear.ch forum](https://ethresear.ch/) |
| 51 | + - [EIP's](https://eips.ethereum.org/) |
| 52 | + - [ACD & Related meetings](https://github.com/ethereum/pm) |
| 53 | +- **Papers**: |
| 54 | + - [Ethereum Whitepaper](https://ethereum.org/en/whitepaper/) |
| 55 | + - [Ethereum Yellowpaper](https://ethereum.github.io/yellowpaper/paper.pdf) |
| 56 | + - [Yellow paper discussion](https://www.youtube.com/watch?v=e84V1MxRlYs) |
| 57 | + - [Yellow paper walkthrough](https://www.lucassaldanha.com/ethereum-yellow-paper-walkthrough-1/) |
| 58 | + - [Ethereum Beige Paper](https://github.com/chronaeon/beigepaper/blob/master/beigepaper.pdf) |
| 59 | + - [Ethereum Mauve Paper](https://cdn.hackaday.io/files/10879465447136/Mauve%20Paper%20Vitalik.pdf) |
| 60 | + |
| 61 | +**Learning Ethereum Consensus**: |
| 62 | + |
| 63 | +- **Books**: |
| 64 | + - [Eth2Book by Ben Edgington](https://eth2book.info). This book is indispensable for understanding the Ethereum consensus protocol. If you can read only one thing, read this. |
| 65 | +- **Specifications**: |
| 66 | + - [Consensus specs](https://github.com/ethereum/consensus-specs) |
| 67 | + - [Vitalik Buterin's annotated specs](https://github.com/ethereum/annotated-spec) |
| 68 | + - [Eth2Book annotated specs](https://eth2book.info/capella/part3/) |
| 69 | + |
| 70 | +While some of the resources listed might appear outdated, it's important to understand that the Ethereum protocol is continuously evolving. As such, there isn't a definitive, unchanging source of information. However, these resources, even if older, provide foundational knowledge that remains pertinent to understanding the protocol's core concepts. |
| 71 | + |
| 72 | +Truly mastering the Ethereum protocol is a complex endeavor. The list provided here is just a starting point, and delving deeper will necessitate exploring a broader range of readings and resources. As you immerse yourself in the project, continuous learning and adaptation will be key. |
| 73 | + |
| 74 | +If you come across any resource that you find invaluable and believe should be added to this list, please don't hesitate to suggest its inclusion. |
| 75 | + |
| 76 | +## Dive In |
| 77 | + |
| 78 | +With your newfound knowledge, explore the various areas of our project. Whether you're interested in the core consensus layer, networking, CLI, documentation, testing, or tooling, there's a place for you. |
| 79 | + |
| 80 | +Start by browsing our [issues](https://github.com/lambdaclass/lambda_ethereum_consensus/issues), especially those tagged as `good first issue`. These are beginner-friendly and a great way to familiarize yourself with our codebase. |
| 81 | + |
| 82 | +## Communication |
| 83 | + |
| 84 | +**Open communication** is key to the success of any project. We encourage all contributors to join our [Telegram chat](https://t.me/lambdaconsensus) for real-time discussions, updates, and collaboration. |
| 85 | + |
| 86 | +**For more structured discussions or proposals**, consider opening an issue or a discussion on the GitHub repository. |
| 87 | + |
| 88 | +## Recognition |
| 89 | + |
| 90 | +We value every contribution, no matter how small. All contributors will be recognized in our project's documentation. Additionally, consistent and significant contributors may be offered more formal roles within the project over time. |
| 91 | + |
| 92 | +## Support |
| 93 | + |
| 94 | +If you encounter any issues or have questions, don't hesitate to reach out. Our team and the community are here to help. You can ask questions in our Telegram chat or open an issue on GitHub for technical challenges. |
| 95 | + |
| 96 | +## Conclusion |
| 97 | + |
| 98 | +Lambda Ethereum Consensus is more than just a project; it's a community-driven initiative to bring the power and reliability of Elixir to the Ethereum ecosystem. With your help, we can make this vision a reality. Dive in, contribute, learn, and let's shape the future of Ethereum together! |
| 99 | + |
| 100 | +--- |
| 101 | + |
| 102 | +**Thank you for being a part of our journey. Let's build an amazing future for Ethereum together! 🚀🌍** |
| 103 | + |
| 104 | +# Code of Conduct |
| 105 | + |
| 106 | +## Our Pledge |
| 107 | + |
| 108 | +We, as members, contributors, and leaders of open source communities and projects pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. |
| 109 | + |
| 110 | +We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community and project. |
| 111 | + |
| 112 | +## Our Standards |
| 113 | + |
| 114 | +Examples of behavior that contributes to a positive environment for our community include: |
| 115 | + |
| 116 | +- Demonstrating empathy and kindness toward other people. |
| 117 | +- Being respectful of differing opinions, viewpoints, and experiences. |
| 118 | +- Giving and gracefully accepting constructive feedback. |
| 119 | +- Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience. |
| 120 | +- Focusing on what is best not just for us as individuals, but for the overall community and project. |
| 121 | + |
| 122 | +Examples of unacceptable behavior include: |
| 123 | + |
| 124 | +- The use of sexualized language or imagery, and sexual attention or advances of any kind. |
| 125 | +- Trolling, insulting or derogatory comments, and personal or political attacks. |
| 126 | +- Public or private harassment. |
| 127 | +- Publishing others' private information, such as a physical or electronic address, without their explicit permission. |
| 128 | +- Other conduct which could reasonably be considered inappropriate in a professional setting. |
| 129 | + |
| 130 | +# Enforcement Responsibilities |
| 131 | + |
| 132 | +Maintainers are responsible for clarifying and enforcing standards of acceptable behavior and will take appropriate and fair corrective action. |
| 133 | + |
| 134 | +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for behaviors that they deem inappropriate, threatening, offensive, or harmful. |
| 135 | + |
| 136 | +# Enforcement |
| 137 | + |
| 138 | +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported with proof to the maintainers through Telegram. All complaints will be reviewed and investigated promptly, fairly and anonymously. |
| 139 | + |
| 140 | +# Attribution |
| 141 | + |
| 142 | +This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/version/2/1/code_of_conduct.html), version 2.1. |
0 commit comments