What is Apiee and Extensions for MicroProfile? What's so special about MicroProfile and why should we use it? Is the framework de-facto standard because it is popular? This and much more, in our interview below with Phillip Krüger!
Hi Phillip, please tell us a bit about yourself?
Hey, I’m Phillip. I’m a Systems Architect living in Centurion, South Africa. I am a fan of technology, coffee and programming. I love dogs and music. To keep active I play squash. I was lucky enough to marry my best friend, Charmaine. She is also a geek :)
What Open Source projects are you involved in?
I have not done very big contributions to Open Source Projects. I have done small (as in very small) contributions to various open source projects, including Thorntail and Payara. I am also a contributor to JSR 371, the Model-View-Controller Specification and Ozark - the reference implementation.
Apart from that I have a few of my own libraries that I made available under the Apache License, Version 2.0:
Apiee - a small library that makes it easy to get Swagger and a white-labeled Swagger UI on Java EE.
Extensions for MicroProfile - This is something myself and Derek Moore started. It’s a collection of community extensions for Eclipse MicroProfile. Here you will find some config sources, a UI for OpenApi (similar to Apiee), some health extension and more.
How can people like me, new to Open Source start to contribute?
I am not at all an expert on this, but I think the nature of open source projects is that all help is welcomed. Even just a spelling mistake fix or extra documentation or examples. In my case I am using most of these projects and when I find a bug or missing feature or spelling mistake I fix it and do a pull request. Very easy. I think just being a user of a project that gives feedback or log bugs is already a big help. Get involved in the forums and with the testing and promote the project.
Could you please tell us little bit about MicroProfile?
(This is my definition, so not at all official) MicroProfile is an umbrella specification, so this really means a specification of specifications. MicroProfile specifications specifically target Microservices architectures for Enterprise Java, however I think it’s more than that, and even if you are not building software in a Microservices architecture, the MicroProfile API’s allows you to safely build systems in a distributed world.
I have an example application that uses all of the MicroProfile 1.3 APIs that you can check out and play with: https://github.com/phillip-kruger/microprofile-demo
What's so special about MicroProfile and why should we use it?
So I think the whole point of standardization is that we all realized something is not that special (anymore), that it is a commodity, that we all use it, and it should just be there. Available for developers to use. It’s expected. Like water, and electricity (and WiFi ?). So what is special, is that the industry can get together and define these standards. And MicroProfile has an impressive representation from the industry and community.
What does MicroProfile do better than other Java frameworks?
One of the biggest mistakes we as developers make is comparing specifications to frameworks. We have done the same with Java EE and frameworks like Spring. You can not compare a specification to a framework. (They are not java.lang.Comparable :) )
What you can do is compare a framework, that happens to implement the specification, to one that does not. (example compare Thorntail to spring boot) And then you have to ask the question, so why does that framework not implement the standard that the industry defined ?
Like I mentioned before, when something becomes a commodity, it needs to be standardized. It’s better for us, the users of these frameworks.
To explain this, we can draw a parallel to hardware (as standards apply there too).
The industry created a standard called USB. We all know it, we all use it, and it’s easy to get cables and peripherals that work with this standard. Most computers and peripherals work with some version of USB.
Then we have Lightning, a proprietary connector that just works with one brand. At some point users will have to ask why? Why not just support USB?
I guess my point is that as developers we should understand the value of standardization and an open specification. Understand what is vendor lock-in. (And remember, even if it’s Open Source, it does not mean you can not be locked in).
Another mistake that we make is thinking that if a framework is popular, it’s a “de-facto standard”.
Popularity does not make a standard. As the example above, Apple is a very popular brand. Not at all a standard. So a framework can be so popular that it becomes a de-facto framework (I would rather call this a monopoly), but you have to allow for multiple implementations to become a standard.
How can we contribute to MicroProfile?
I think the easiest way to get involved is on the forum. Then there is a monthly Community Hangout that anyone can join. A lot of decisions are made there. There are also frequent meetings on all the different APIs under the MicroProfile umbrella. You can find the schedule in the MicroProfile calendar.
Something else you would like to bring up?
There are a few members of the community that are working on a proposal to include a GraphQL API as part of MicroProfile. If this is something that you would like to see please support us or if you want to join the proposal, get in touch.
Where can we find you on Internet?
Phillip, thank you for the interview!