Fetching the latest programs, projects, and workspace data.
<p>The Besu team has been pushing heavily on extensibility via plugins, as a way to support Layer 2 or private networks, without needing to fork the core Besu codebase, with Linea being a notable success example.</p><p><br></p><p>The Plugin API, now offer a variety of services, form consuming blockchain data for custom needs, modifying the behavior of an Ethereum network to adapt to specific workflows, to streamlining the deprecation of legacy features by re-implementing them as plugins. They are also highly useful for testing and debugging purposes.</p><p><br></p><p>However, Besu Plugin API is fragile and grew in a non-organic way over the years. Because its evolution was mainly driven by specific needs rather than clear design principles, so it grew without a real direction, resulting in poorly organized code. Currently, every time a new functionality needs to be exposed via the Plugin API, it is not clear how to expose the interfaces or where to place them. Consequently, quick trade-offs are sometimes taken to avoid undertaking a large refactoring effort.</p><p><br></p><p>Furthermore, the plugin lifecycle—especially during the startup phase—is not well defined. This ambiguity can result in critical problems, such as plugins attempting to access a service before it is fully initialized. Finally, there is currently no real process around deprecation, versioning and backward compatibility, which makes it difficult to detect and manage braking changes in a coherent way.</p><p><br></p><h3>Learning Objectives</h3><ul><li>Gain a deep understanding of the Besu architecture, specifically its plugin ecosystem, module organization, and node lifecycle.</li><li>Learn advanced Java software design, focusing on code refactoring, API versioning and deprecation strategies, API documentation best practices, and establishing clean design principles.</li><li>Develop practical experience in open-source software development, including untangling technical debt and proposing structural architectural improvements.</li><li>Collaborate closely with plugin users and core maintainers to better understand their needs and pain points.</li></ul><h3>Expected Outcome and Deliverables</h3><ul><li>Code Reorganization & Design Principles: Refactor the existing plugin codebase to improve organization and document clear guidelines/patterns on how and where to expose new interfaces in the future.</li><li>Lifecycle Refinement: Analyze and implement a robust, well-defined startup lifecycle for plugins to eliminate race conditions, ensuring services cannot be accessed before they are fully initialized.</li><li>API Versioning System: Design and integrate versioning support into the Plugin API so that maintainers and developers can systematically detect and manage breaking changes</li><li>Documentation: Renew the API documentation and Plugin writing guides.</li></ul><p><br></p><p>Lean more at <a href="https://github.com/LF-Decentralized-Trust-Mentorships/mentorship-program/issues/82" rel="noopener noreferrer" target="_blank">https://github.com/LF-Decentralized-Trust-Mentorships/mentorship-program/issues/82</a></p>
Showing 1 of 1 projects. Click any project card for scope, mentors, and proposal studio.
<p>The Besu team has been pushing heavily on extensibility via plugins, as a way to support Layer 2 or private networks, without needing to fork the core Besu codebase, with Linea being a notable success example.</p><p><br></p><p>The Plugin API, now offer a variety of services, form consuming blockchain data for custom needs, modifying the behavior of an Ethereum network to adapt to specific workflows, to streamlining the deprecation of legacy features by re-implementing them as plugins. They are also highly useful for testing and debugging purposes.</p><p><br></p><p>However, Besu Plugin API is fragile and grew in a non-organic way over the years. Because its evolution was mainly driven by specific needs rather than clear design principles, so it grew without a real direction, resulting in poorly organized code. Currently, every time a new functionality needs to be exposed via the Plugin API, it is not clear how to expose the interfaces or where to place them. Consequently, quick trade-offs are sometimes taken to avoid undertaking a large refactoring effort.</p><p><br></p><p>Furthermore, the plugin lifecycle—especially during the startup phase—is not well defined. This ambiguity can result in critical problems, such as plugins attempting to access a service before it is fully initialized. Finally, there is currently no real process around deprecation, versioning and backward compatibility, which makes it difficult to detect and manage braking changes in a coherent way.</p><p><br></p><h3>Learning Objectives</h3><ul><li>Gain a deep understanding of the Besu architecture, specifically its plugin ecosystem, module organization, and node lifecycle.</li><li>Learn advanced Java software design, focusing on code refactoring, API versioning and deprecation strategies, API documentation best practices, and establishing clean design principles.</li><li>Develop practical experience in open-source software development, including untangling technical debt and proposing structural architectural improvements.</li><li>Collaborate closely with plugin users and core maintainers to better understand their needs and pain points.</li></ul><h3>Expected Outcome and Deliverables</h3><ul><li>Code Reorganization & Design Principles: Refactor the existing plugin codebase to improve organization and document clear guidelines/patterns on how and where to expose new interfaces in the future.</li><li>Lifecycle Refinement: Analyze and implement a robust, well-defined startup lifecycle for plugins to eliminate race conditions, ensuring services cannot be accessed before they are fully initialized.</li><li>API Versioning System: Design and integrate versioning support into the Plugin API so that maintainers and developers can systematically detect and manage breaking changes</li><li>Documentation: Renew the API documentation and Plugin writing guides.</li></ul><p><br></p><p>Lean more at <a href="https://github.com/LF-Decentralized-Trust-Mentorships/mentorship-program/issues/82" rel="noopener noreferrer" target="_blank">https://github.com/LF-Decentralized-Trust-Mentorships/mentorship-program/issues/82</a></p>