Users of Red Hat Developer Hub can now enjoy a new era of flexibility and customization thanks to dynamic plug-ins, a flexible enhancement to the traditional static plug-in 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 plug-ins and add new features to Red Hat Developer Hub with greater ease.
Challenges of the Backstage "static" plug-in model
Traditionally, Backstage employed a static (code-based) plug-in system, where integrating new plug-ins 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 plug-in 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 plug-in integration could trigger dependency conflicts, sometimes necessitating complex debugging and troubleshooting.
- Adoption and usefulness challenges: Because plug-ins are critical to delivering a productive user experience, the slower integration approach taken by static plug-ins 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 plug-ins in Developer Hub
The "dynamic" plug-in approach taken by Red Hat Developer Hub addresses these challenges head-on by employing a “configuration over code” approach. This allows the loading of plug-ins 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 principles 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 customization: Administrators and platform engineers can add or modify features without altering the Red Hat Developer Hub application, further tailoring the developer experience quickly and seamlessly by adding new features, workflows, and use cases on demand.
- Simplified plug-in management: Installing a plug-in becomes as simple as adding an entry to a configuration file and redeploying or restarting the Red Hat Developer Hub container. No more complex build processes or code modifications! (See the Red Hat Developer Hub documentation for some examples.)
- Improved scalability and maintenance: Dynamic plug-ins 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 Red Hat Developer Hub enhancements are being contributed to the upstream Backstage community, so that all users of Backstage can eventually benefit from the same convenience and simplicity.
Comparing static and dynamic plug-ins
The following table summarizes the key differences between static and dynamic plug-ins in Red Hat Developer Hub, also described above.
Unlocking IDP innovation with dynamic plug-ins
Dynamic plug-ins in Red Hat Developer Hub represent a paradigm shift in IDP plugin management. This approach simplifies plug-in installation, streamlines development workflows, and empowers platform engineers and operators to effortlessly extend Red Hat Developer Hub's capabilities. By embracing dynamic plug-ins, users can shape their development environment according to their unique needs more easily and at lower cost.
Dynamic plug-ins 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 plug-ins.
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 plug-in mechanism into Backstage. The first one, for backend plug-ins, 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 democratize the benefits of dynamic plug-ins, 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 plug-ins in your Developer Hub portal?
Red Hat provides back-end and front-end templates in our Backstage template library and documentation outlining the process of creating dynamic plug-ins, guiding developers through the necessary steps. These valuable resources help you get started with plug-in development or convert your existing static plug-ins to dynamic plug-ins. We encourage plug-in developers to explore this new development style to unlock the full potential of dynamic plug-ins in your IDP.
New to Red Hat Developer Hub or keen to try it for yourself?
Red Hat Developer Hub is an enterprise-focused distribution of Backstage. Find out how to get started with Red Hat Developer Hub in minutes with this handy blog and video by Evan Shortiss.