SmallRye Innovation for Eclipse MicroProfile

SmallRye implements Eclipse MicroProfile specifications for use within any runtime. Currently, SmallRye is included in Quarkus, Thorntail, WildFly, and the reactive implementations are part of Open Liberty.

That’s great, but that’s only implementing what’s been defined by a specification. Does SmallRye only implement the specifications "as is"? How do new ideas get added to MicroProfile, either as new specifications or changes to an existing specification?

Questions like these, and others like them, are what I hear often from those not familiar with exactly how MicroProfile operates. Unlike how the JCP typically operated in the past when defining Java EE specifications, MicroProfile takes a very different approach. Bean Validation took a similar approach as MicroProfile. In MicroProfile we define specifications based on existing implementations and usage within projects, as it offers a greater indication that what’s being proposed is useful to developers. It’s much harder to create an API from ideas and have it be useful than to define a specification based on an already working implementation.

How does this relate to how SmallRye develops implementations? Since its creation SmallRye was purposefully focused on implementing the MicroProfile specifications, while seeking to improve the specifications and TCKs when issues were found. Having reached a point where the implementations are stable and easily kept in line with modifications to existing specifications, it frees those working on the project to shift our focus to innovation!

What type of innovation are we talking about? In theory, it could be absolutely anything. In practice, we’re not proposing a complete free for all, as that leads to churn without results. We have a few initiatives that are underway where we are beginning to innovate with MicroProfile. We’ve begun work on an entirely new implementation for Fault Tolerance, see here, which aims to be reactive friendly while still enabling the same functionality for imperative programming. In SmallRye Config we will be investigating how to implement support for using a pre captured configuration during the creation of later ConfigSources and ConfigSourceProviders, allowing configuration to be used to create latter stage configuration instances. There are also other innovations underway within the reactive sphere of SmallRye that we intend to announce soon.

In addition to innovation within SmallRye projects, we’re in the process of accepting the donation from the MicroProfile Extensions project. The MicroProfile Extensions project includes many new ConfigSource and Converter types that will be added to SmallRye. A big thanks to Phillip and Derek for agreeing to this and pushing it forward.

All this innovation in SmallRye is great, but what does that mean for MicroProfile specifications? Do they have these new innovations as well? In the short term, no they wouldn’t. The medium to longer-term goal for any innovation created in SmallRye is for it to be proposed to existing or new MicroProfile specifications.

If you’d like to contribute to SmallRye and help us deliver innovation to MicroProfile, come by our forum and take a look at the issues in any of the projects on GitHub.