Users of Red Hat Developer Hub (RHDH) can now enjoy a new era of flexibility and customisation thanks to dynamic plugins, a flexible enhancement to the traditional static plugin mechanism historically used by the Backstage internal developer portal (IDP). This blog explores the advantages of this groundbreaking approach and how it empowers platform engineers and operators building IDPs to integrate plugins and add new features to RHDH with greater ease.
Challenges of the Backstage "Static" Plugin Model
Traditionally, Backstage employed a static (code based) plugin system where integrating new plugins and features involved modifying the core codebase of Backstage and then re-compiling, re-packaging and re-releasing the entire application stack. This process could be time-consuming and suffered from several drawbacks:
- Increased complexity: Installing a plugin meant changing the Backstage codebase - introducing all the complexities and QA challenges of a full software development lifecycle into your portal administration workflow.
- Dependency headaches: Each additional plugin integration could trigger dependency conflicts, sometimes necessitating complex debugging and troubleshooting.
- Adoption & usefulness challenges: Because plugins are critical to delivering a productive user experience, the slower integration approach taken by static plugins often hindered the initial usefulness - and therefore adoption rates - of your internal developer portal.
- Time to production: Because recompiling and validating your Backstage changes takes time and requires careful testing, even simple changes like version upgrades could take days or even weeks before reaching production. Rollbacks, removals, and upgrades were also more challenging.
The Advantages of Dynamic Plugins in RHDH
The "dynamic" plugin approach taken by Red Hat Developer Hub addresses these challenges head-on by employing a “configuration over code” approach. This allows the loading of plugins dynamically at runtime and negates the need for complex code recompilation or container rebuilds. This revolutionary approach offers numerous benefits:
- Immutable by design: By following the principals of immutable container based application design and using externalized configuration we can more closely align with the Twelve-Factor App methodology. This reduces the risk of configuration drift, simplifies support, and increases security.
- Enhanced flexibility and customisation: Administrators and platform engineers can add or modify features without altering the RHDH application, further tailoring the developer experience quickly and seamlessly by adding new features, workflows, and use cases on demand.
- Simplified plugin management: Installing a plugin becomes as simple as adding an entry to a configuration file and redeploying or restarting the RHDH container. No more complex build processes or code modifications! (see the RHDH documentation for some examples)
- Improved scalability and maintenance: Dynamic plugins promote modularity, enabling independent updates and reducing the maintenance overhead.
- Faster iteration and experimentation: Platform engineers and operators can rapidly evaluate and test new features, bringing the latest features and integrations to developers faster.
- Open source collaboration: All these RHDH enhancements are being contributed to the upstream Backstage community, so that all users of Backstage may eventually benefit from the same convenience and simplicity.
Comparing Static and Dynamic Plugins
Here's a table summarising the key differences between static and dynamic plugins in RHDH:
Unlocking IDP Innovation with Dynamic Plugins in Red Hat developer Hub
Dynamic plugins in RHDH represent a paradigm shift in IDP plugin management. This approach simplifies plugin installation, streamlines development workflows, and empowers platform engineers and operators to effortlessly extend RHDH's capabilities. By embracing dynamic plugins, users can shape their development environment according to their unique needs more easily and at lower cost.
Dynamic plugins also allow Red Hat Developer Hub to innovate more quickly and bring developers new and unique experiences. We have some exciting plans for the year ahead, all made possible by dynamic plugins.
While further driving this innovation forward, Red Hat has been contributing its foundations to the upstream Backstage project and is still actively seeking community support. We have made two proposals (RFC #18390 and BEP #22423) that are intended to integrate this dynamic plugin mechanism into Backstage. The first one, for backend plugins, has already been accepted upstream, and its implementation has already been merged. The second one has matured, moved forward and finally led to an implementation waiting for review in upstream Backstage (backstage/backstage#28076). Having all these contributions upstream will democratise the benefits of dynamic plugins, making Backstage even more powerful and user-friendly for the entire community. We’d welcome any folks interested in these innovations to get involved and show your support.
Curious about using dynamic plugins in your RHDH portal? Red Hat provides backend and frontend templates in our Backstage template library and documentation outlining the process of creating dynamic plugins - guiding developers through the necessary steps. These valuable resources help you get started with plugin development or convert your existing static plugins to dynamic plugins. We encourage plugin developers to explore this new development style to unlock the full potential of dynamic plugins in your IDP.
New to Red Hat Developer Hub or keen to try it for yourself? Red Hat Developer Hub (RHDH) is an enterprise focused distribution of Backstage. You can get started with Red Hat Developer Hub in minutes with this handy blog and video by Evan Shortiss.