#51 - JHipster Open Source Story and Java at Microsoft - Julien Dubois
“The most important thing is to make it easy for people to contribute. And the second thing is to have as many people as possible. For that, you build a community, and decide what people you want in your community."
Julien Dubois is the creator of JHipster and manages the Java Developer Advocacy team at Microsoft. In this episode, Julien shared about the state of Java for cloud native applications, as well as Java adoption within Microsoft and Azure. Julien also shared his story on founding JHipster, his developer advocacy work at Microsoft, as well as some tips on how to run a successful open source project.
Listen out for:
- Career Journey - [00:04:30]
- Java at Microsoft - [00:07:38]
- State of Java for Cloud Native App - [00:10:39]
- Java Adoption in Azure - [00:16:58]
- JHipster Story - [00:21:29]
- Open Source Tips - [00:29:43]
- Independent Developer Advocacy - [00:35:42]
- Microsoft and Open Source - [00:40:28]
- 3 Tech Lead Wisdom - [00:43:08]
Julien Dubois’s Bio
Julien manages the Java Developer Advocacy team at Microsoft. Julien is a Java Champion, and is mostly known in the Java community as the creator and lead developer of JHipster, a popular open source development platform. He is also the co-author of “Spring par la pratique” and a speaker in numerous conferences including Devoxx, SpringOne, and Paris Java User Group amongst others.
- Twitter – https://twitter.com/juliendubois
- LinkedIn – https://www.linkedin.com/in/juliendubois/
- Github – https://github.com/jdubois
- Website – https://www.julien-dubois.com/
Mentions & Links:
- JHipster – https://www.jhipster.tech/
- NubesGen – https://nubesgen.com/
- Java Champion – https://developer.oracle.com/javachampions/
- Spring / SpringSource – https://spring.io/
- Spring Boot – https://spring.io/projects/spring-boot
- Microsoft – https://www.microsoft.com/
- Visual Studio Code – https://code.visualstudio.com/
- Azure – https://azure.microsoft.com/
- Oracle – https://www.oracle.com/index.html
- Minecraft – https://www.minecraft.net/
- LinkedIn – https://www.linkedin.com/
- Apache Kafka – https://kafka.apache.org/
- Open JDK – https://openjdk.java.net/
- JBoss – https://www.jboss.org/
- GraalVM – https://www.graalvm.org/
- Micronaut – https://micronaut.io/
- Docker – https://www.docker.com/
- Azure Spring Cloud – https://docs.microsoft.com/en-us/azure/spring-cloud/
- Azure Cosmos DB – https://docs.microsoft.com/en-us/azure/cosmos-db/introduction
- Azure Application Insights – https://docs.microsoft.com/en-us/azure/azure-monitor/app/app-insights-overview
- New Relic – https://newrelic.com/
- Node.js – https://nodejs.org/en/
- Open Collective – https://opencollective.com/
- Webpack – https://webpack.js.org/
- EJS – https://ejs.co/
- SpringOne – https://springone.io/
- Antoine de Saint-Exupery – https://en.wikipedia.org/wiki/Antoine_de_Saint-Exup%C3%A9ry
- The Little Prince / Le Petit Prince – https://www.thelittleprince.com/
Each issue is hand illustrated and 100% content. Use the promo code “techlead” to get a 10% discount on your annual subscription. Visit businessagility.institute/emergence to get your edition and support the company supporting your podcast.
Julien’s Career Journey
They [Microsoft] want to have very diverse opinions, including negative opinions. Because that’s how you grow. That’s how you progress.
Because if you have only clones, and everybody thinks the same, then you don’t move forward, and also you have no credibility.
You have a lot more credibility when you are independent, and when you can talk freely about the truth.
Java Adoption in Azure
- I’m always thinking of scalability, not only for going up but also for going down. What you wanted with scalability is to scale down as much as you can when you have less people using the systems.
Open Source Tips
The technical part of JHipster is written in a very easy, simple, maybe even stupid way. If you have a look at our templates, honestly, they’re very bad. They’re only here so that it’s easy to edit them. No, they’re not clever at all. It’s very simple stuff.
The idea is that I want you to be able to contribute very easily. And for that, I don’t want to have a system which is very complex, very smart, because you will not be able to contribute. The most important thing is that it’s easy to make people contribute.
The second thing we did on JHipster is, of course, on the human part, is try to have as many people as possible. For that, it’s a question of community or you build a community, and what people you want in your community. For example, we were one of the very first project to have a code of conduct.
I’m a huge fan of code of conduct for two reasons:
The first one, as soon as we had the code of conduct, I saw a change in the way we were welcoming people. If you put yourself in the shoes of that new person, maybe it’s the first time he’s contributing to any open source project. It can be very intimidating. And then you’ve got several people telling you, “Oh, thank you. That’s cool.” Well, it pushes those people to continue.
The code of conduct is also enforcing stuff. That’s a less nice part, but sometimes we’ve got people who are just not nice. They’re toxic people. Basically, it’s a choice of governance for your project. If you have one toxic person, even if he’s super good technically, in my opinion, he’s going to break everything. Everybody will quit, it will be a nightmare. So you need to identify those people as soon as you can, and just make them go away.
Independent Developer Advocacy
You want to have feedback from developers.
If I want to have new opinions, new ideas, I need to go to see those people who are going to tell me what’s wrong. That’s super important because that’s how you improve your product, and that’s why people then choose your product.
Marketing is also finding a good product for the market. It’s not just advertisement. It’s also creating the best product for the market. And for that, you need to go and see the market and see what people want.
Developer advocacy is all about (having) that connection with the developer community. Which is hard, and which can only happen truly if you are independent.
If you’re only here for marketing, people don’t trust you or don’t listen to you.
3 Tech Lead Wisdom
When you become a manager, you’re not in charge anymore of doing things. You’re in charge of the people who are in charge of doing things.
If you want your team to succeed, you need to go out of the way and help people succeed. So the first thing is that you’re not in charge; you’re in charge of the people.
If everybody thinks the same, works the same, acts the same, not only you’re not going to succeed, but you’re not going to go very far.
When I say diversity, it’s a very broad term, but having people from different background, different culture, different genders, etc, etc, helps you to have a different view on what you are doing.
In the end, it’s because we’ve got all sorts of different people who think differently that you got a project that is better for everyone. Because if you want a project that works for everyone, you need to build it with everyone.
If you want to build a ship, you’re not going to tell people to gather wood, divide the work, give orders. If you want to successfully build a ship, you need to tell people to look for the vast and endless sea. You need to give them a goal which is beyond what they are doing.
Open source is all about inspiring people to go somewhere.
It’s not what you do, it’s why you do it. You’re not focusing on what you’re doing, because what you’re doing is boring.
[00:01:41] Episode Introduction
[00:01:41] Henry Suryawirawan: Hello, everyone. Welcome back the another episode of the Tech Lead Journal podcast. I’m your host, Henry Suryawirawan. Thank you for spending your time with me today, listening to this episode. If you haven’t, please subscribe to Tech Lead Journal on your favorite podcast apps and also follow our social media channels on LinkedIn, Twitter, and Instagram. You can also make some contribution to the show and support the creation of this podcast by subscribing as a patron at techleadjournal.dev/patron and help me to continue producing great content every week.
For today’s episode, I am happy to share my conversation with Julien Dubois. Julien is the creator of JHipster, a popular open source development platform that helps you to build beautiful and modern web applications. He currently manages the Java Developer Advocacy team at Microsoft. In this episode, Julien shared about the state of Java adoption for cloud native applications, as well as Java adoption within Microsoft and Azure ecosystem. Julien also shared his story on how he started JHipster, some of the highlights of running it as a successful open source project. And he also shared about his developer advocacy work at Microsoft, and why he thinks developer advocates need to be independent in their advocacy work in order to gain the trust and credibility from the people, and ultimately create the best product for the market. And for those of you who want to learn from Julien on how he successfully created and ran JHipster, Julien also shared some tips on how we can run a successful open source project.
I enjoyed my conversation with Julien, learning from him and his JHipster story, and I hope that you will enjoy this episode as well. Consider helping the show by leaving it a rating, review, or comment on your podcast app, or you can also leave us some comments on our social media channels. Those reviews and comments are one of the best ways to help me get this podcast to reach more listeners. And hopefully they can also benefit from all the contents in this podcast. So let’s get this episode started right away.
[00:03:52] Henry Suryawirawan: Hey, everyone. Welcome back to another new episode of the Tech Lead Journal. Today I have with me, someone who is a Java Champion and also the creator of a famous open source project called JHipster. For those of you who know about Java technology and JHipster, maybe you have used this popular open source software. My guest is called Julien Dubois. I’m very pleased to have a chance to meet you and actually talk to you about your career and everything around Java and JHipster. So welcome to the show, Julien.
[00:04:23] Julien Dubois: Well, thank you. I’m very honored to be invited to your show and very happy to share a little bit of what I know with your audience. Thank you.
[00:04:30] Career Journey
[00:04:30] Henry Suryawirawan: So Julien, maybe in the beginning can you introduce yourself and telling us more about your career and maybe some highlights or turning points in your career?
[00:04:38] Julien Dubois: Yeah. So I’m Julien Dubois. I’m French. That’s why I got this name, this weird name. I’ve been working with Java for a bit more than 20 years. So I’ve done many things with Java. Just to tell two of three of the highlights of my careers. I wrote a book on Spring. I worked at SpringSource, and it’s a company which created and lead the Spring. In fact, I managed the French subsidiary of SpringSource about 10 years ago now. I’ve created that open source project that you talked about, which is called JHipster, which is very popular. So I created that about seven years ago. JHipster has grown a lot. And thanks to both SpringSource and JHipster, I got hired two years ago by Microsoft. So now I work in the Developer Advocacy team at Microsoft, and I’m the manager of the Java team in Developer Advocacy at Microsoft. So yeah, three highlights, SpringSource, JHipster and Microsoft.
One last thing that you mentioned, because I don’t often talk about this, but yeah, I’m also Java Champion. So I was actually the Java Champion, I don’t know when, like maybe four years ago, thanks to JHipster. Java Champion is very interesting and active community of people pushing Java. I don’t know how many champions that I know. Maybe 300, something like this. So it’s a very nice group of people from different companies, who are all pushing Java for a while, so I’m very happy to be part of them, I would say. Unfortunately, I don’t participate that much in the Java Champions today because I’ve got my work-life at Microsoft and also my open-source life with JHipster. So that leaves little time for doing even more stuff. But I mean from time to time, well, yesterday I spent one hour with a Java Champion because he’s a Java Champion, so it happens sometimes. If you’re in Java, have a look. It’s a good group of people. They’re pretty open. If you want to join the group, you need to be elected. So it’s a bit more competitive to be elected, but still, you know, it’s not because you are not Java Champion that those people will not talk with you. So I encourage you to have a look at this group. It’s on Twitter. It’s very active and very interesting. I would say, pushing Java forward, and without too much marketing. No, it’s not owned by Oracle. Oracle is managing it, but you can’t be a Java Champion if you’re a member of Oracle.
When you are selected, you need to show that you are independent and open-minded. So, if you don’t like Oracle technologies, that’s perfect. That’s in fact, what they are looking for. Well, that’s something that we can talk maybe also in the end when we talk about leadership. As where that Oracle sees it, and something from Microsoft also from my job is they want to have a very diverse opinions, including negative opinions. Because that’s how you grow. That’s how you progress. It’s because you have people telling you, “Well, that’s bad. You shouldn’t do it that way”. Because if you have only clones, and everybody thinks the same, well, then you don’t move forward, and also you have no credibility. One of the things that I love to do at Microsoft is, I can say that, you know, this part of Java at Microsoft isn’t really good. And when I say this, people then trust me when I say that other things are working well, because they know that I can say when something is bad. You have a lot more credibility when you are independent, and when you can talk freely about the truth. So, that’s why when I say that I love this specific Microsoft products, they know I love it for real. Because if I didn’t love it, I wouldn’t tell it.
[00:07:38] Java at Microsoft
[00:07:38] Henry Suryawirawan: So, in the first place, it seems like a very interesting mix, Microsoft and Java technologies. Can you share specifically? Because Microsoft normally is well known for .NET, which is the competing technology for Java. So what is up in Microsoft these days? And why are you specifically focusing on Java at Microsoft?
[00:07:56] Julien Dubois: So Microsoft has a long and bumpy history with Java. Currently, there is a huge push for Java at Microsoft, but it’s even more than that. Some years ago, at Microsoft when the new CEO, Satya Nadella, who is still CEO today, and he like totally opened up the company. You started to say things like your Microsoft loves Linux, which wasn’t the case before. Microsoft is much more open, and the objective is to have every people and including every developers, be more productive thanks to Microsoft technologies. Microsoft has always been about productivity tools. Of course, if you look at all the developers in the world, there’s a lot of people using Linux, lots of people using Java. So Microsoft is not locked anymore as just doing like Windows and .NET, because it’s too limiting for the goal of Microsoft. So there has been this openness, which has been there for several years.
For Java, it’s a bit more recent. I don’t know when it started exactly, but I would say about four or five years ago. We have more Java Champions at Microsoft. Today, I think we have thirteen Java Champions at Microsoft. So Microsoft has been hiring a lot of people who are Java champions. Also has been hiring a lot of very good Java people who then became Java champions, thanks to their work at Microsoft. Basically, we want to have Java developers love Microsoft. And for that, we need to have an investment in tooling and productivity, and software for Java developers. So if you have some good look at what Microsoft has to offer, we have IDEs, we’ve got great Java support on Visual Studio Code. We’ve got Azure. I’m working on Azure. So of course, on Azure you’ve got great Java support. You can deploy your Java apps, you can deploy your Spring Boot apps on Azure. It’s fully supported. We’ve got a Java SDK, a very good Java SDK on Azure. And then also, we’ve got a lot of other Microsoft services that people might know but don’t think about, which are based on Java. Minecraft is using Java. LinkedIn is using Java. All of those are Microsoft subsidiaries. So we’ve got a lot of Java developers inside Microsoft.
Oh, and also, I forgot. We also using a lot of Java internally. Inside Azure, for example, when you use Azure, there’s a huge Kafka cluster, and this is running on Java. So we’ve got JVMs and Java engineers everywhere. So, today there’s a huge investment in Java at Microsoft. It has maybe communicated this year because we announced that we’ve got our own build of Open JDK. So now you can run the Microsoft build of Open JDK, which is maintained and supported by Microsoft. It’s a true Open JDK build. The difference is that it’s built and supported by us. And that means that when you run Java on Azure, we can guarantee that we support everything, and we patch everything, and we update everything for you. You talked about .NET, you’ve got a similar experience with Java. You’ve got something which is fully supported from the hardware to the JVM. Everything is fully supported and patched by Microsoft. As an end-user, it’s a combination where you can trust that everything will be secured and works for you.
[00:10:39] State of Java for Cloud Native App
[00:10:39] Henry Suryawirawan: So, you mentioned that you are currently working with Java and Azure, right? The combination of Java and cloud. So, we know that in the past few years, Java was not really well-known for being the language of choice to be deployed on the cloud, simply because of maybe it’s heavyweight, it took time to bootstrap, and heavy memory, and things like that. So what’s the current state of usage of Java for like cloud native applications? Or specifically maybe in fact, container-based application?
[00:11:05] Julien Dubois: Yeah. I would separate in the like say, classical like on-premise apps and modern native apps for people using classical applications in an app server and so on, so we fully supported on Azure. We announced last week or this week, we’ve got JBoss support on Azure. So we’re like probably the only cloud where we got support for Spring and JBoss all of the stuff are fully supported and managed on Azure. So if you want to run your JBoss up on Azure, it’s perfectly supported by JBoss in Microsoft. All of those, I would say classical app servers, have always worked very well and continue to work very well. Indeed, the criticism that most people would do on Java is about the startup time and the memory. For those tools, in my opinion, we don’t really have a startup time issue because the idea is that they’re running all the time. So maybe you need to wait 30 seconds to get started at the beginning, but you’re not going to stop it for several weeks. So the startup time isn’t such a big issue. And with most of my customers are doing something similar, even for new, shiny things like serverless functions, so they never stop. So you don’t have that much of an issue with cold start. For all of those people, which I would say as a majority. And then, of course, you’ve got people who want the newest stuff, very fast cold start for typical serverless functions. More high scalability with stuff like Kubernetes, so it’s a different type of people.
Let me add also to that mix, what you just talked about earlier about memory, those people also probably want to use less memory. They’re very careful about their resources, so they want fast startups, they want low memory. And for that, we’ve got two answers to you. First of all, with normal Java, it’s not that bad. Your Spring Boot, for example, there is Reactive Spring, but even with normal Spring Boot, most of the apps I’m working with startup in, I would say, a few seconds, and use less than I would say, 5 or 8 megabytes. So honestly, it’s not that bad. It’s starting fast enough, and it’s not using that much memory. If you compare to everything else that you’re using, because when you use your Java Spring Boot app, you’re also using another database or cache and so on. So it was the things that cost you the most money and that take the most time to start up might be your cache. Cache takes time to fill up and takes memory, of course. Your database also. All the things. So honestly, with the normal JVM, it’s not that bad. And then, if you want to go to the next step, because I know that’s what people are looking for, we’ve got Graal VM support. I’m working quite a lot with the Graal VM team.
This works on Azure, but not officially. So there’s a difference in Azure with what is supported and what you can do. I talked earlier about JBoss and Spring Boot, you can run them in supported environment, so it’s fully supported by Microsoft and VMware for Spring and Red Hat for JBoss. But you can also take a VM, and you can install all of them and run them by yourself. So you don’t have the same separation of responsibility. In the past environment, you just want to push your code and you want your cloud provider and your software providers to manage everything for you. But you can also be in the less managed environment where you manage more. And in that case, you can totally build your native app, and run it on Azure. So I’m working with a Spring team for running Spring Boot application on a platform as a service. We build it as Docker image and we deploy it on typically App Service, which is our platform as a service solution. We can also build them as serverless functions. So there’s something called Azure Functions, and if you take a Spring Boot Cloud Function, you can build it as a native image and run it on Azure Functions.
I’m doing the sample for that. So if you want to ever look at my GitHub, I’m doing the sample. I’ve already worked on it. It’s already working. So for Spring, it works really well. It’s also working with Quarkus and Micronaut. It’s just that I have, I would say, less experience with it. I know people do it. I’m working with those people from time to time. So I’m pretty sure that with Quarkus and Micronaut, you won’t have any trouble but I’m more focusing on Spring because I’m a Spring guy. But I would say whatever the framework is, you’re going to be able to build it as a native image, and then you will be able to run it as a platform as a service solution, or on a serverless solution. For both cases, you will clearly gain on the cold start. Let me take the most extreme example on functions. If I take a pure Java function. If I take a very simple hello world, it’s always going to start very fast and take little memory. But if I take something a little bit more realistic than that, you know, like connecting to the database and something more normal, cold start for Java function would start in about, I would say six seconds. If I build it as native image with Graal VM, it’s about two seconds, so it’s much better. The real cold start time of the Azure Function, of the Graal VM function is, I don’t know, 100 milliseconds. But then, as it’s inside Azure Functions, Azure Functions need to download your function, to install it, and zip it before running it. Quite a lot of things to do before just running it. It’s not installed yet, so you first need to download it and install it. So overall, it’s taking two seconds to do everything, including setting it up. Maybe we can improve it a little bit. Maybe we can go below that, maybe below one second. But honestly, cold start of two seconds should be good for most people. If it’s not good for you, well then, you can go to what I talked about earlier, you can pay and that’s something which is always on. It’s of course a bit more expensive. But if you’ve got some very specific requirements like you want some functions which have very low latency even when there is cold start, well then maybe at some point you need to pay.
Yeah, I forgot to say something very specific to Azure because I don’t want people to misunderstand what I’m talking about. When I talk about cost start in Azure, it’s quite different cold start with other cloud providers. If you take Azure Functions, for example, basically on the first request, you get to cold start. So that is what is taking, let’s say, two seconds. Then your function is up for some time. Officially, we don’t tell the time, but unofficially, I can tell you 20 minutes. And during the 20 minutes, the functions start up, and it’s also multi threaded, so you can have multiple requests on that function in parallel. So basically, you have very few cold starts. If you have some customers arriving, whereas the first one doing the first request will have a cold start, but then everybody will have a hot function, so nobody will have cold starts anymore. So it’s a very limited issue on Azure. Still, it’s interesting to try to go around it because, well, it’s still existing, and also because technically it’s fun. That’s also why I’m working on it. But yeah.
[00:16:58] Java Adoption in Azure
[00:17:28] Julien Dubois: Well, for Azure, it’s very specific because so traditionally, Azure was attracting more .NET people and so on. So we had significant amount of people using Java on Azure, but it was less than other clouds, to be honest. And also as we didn’t have some specific Java support, maybe we didn’t also know that very well. People can run Java inside Docker. I know people believe that Microsoft is spying on what everybody is doing, but honestly, if you run a Docker image in your Kubernetes cluster, what do we know? We just know you run Kubernetes and you got some Docker image in it, maybe, but we have no idea what you’re doing inside it. So, I believe we had a lot of people using Java inside Docker, and basically we couldn’t know much about it. So, what I’m seeing today is more people using Java everywhere in Azure. It’s growing like crazy. First of all, because Java is big, also because we didn’t have that many Java people using Azure. And also because we’ve got more and more Java companies joining the cloud. Like banks, banks administrations, governments, all these people are very heavy Java users. And traditionally, those people were not that much into cloud yet.
In the cloud, we mostly are like startups. So yeah, startups are doing Go and Rust. Banks and governments who haven’t, mostly doing Java. So the more those people go to the cloud which is arriving now, the more Java usage we see in the clouds. That’s also why there is all this push for Graal VM, startup time, and so on. It wasn’t such an issue before, it’s becoming an issue now because all those people are arriving. So, I see a lot more people using Java clearly on Azure. And then we’ve got maybe two types of people. We’ve got people running in Java inside Kubernetes. So honestly, I have little information on what they’re truly doing. It is just running a container. And then we’ve got people using Java on Azure on our platform as a service offering, like Azure Spring Cloud, Azure App Service. Also, when they use our SDK, of course, I see them using it. Well, we’ve got some telemetry, which is optional. If you accept to have the telemetry, it’s useful for us so that we know what most people are doing. So we know where also we need to push, like if we know that everybody’s using Cosmos DB with this set of API, well, then we can of course to do more effort on this. So please turn the telemetry on if you want to help us.
We got two types of people. Yeah. People who run it inside Docker, and we manage more, and people will trust us to run the Java workloads, and so that’s why we get our own JDK. We’ve got also a new monitoring system. So we got something called App Insights. That has been existing in Azure for, I would say forever, but there’s a new version which is arriving, which is a Java agent. So if you know much on systems like New Relic, you know, like those really cool and advanced monitoring systems, we’re having something similar inside Azure. And the Java agent, of course understands Java, but it can also understand Spring Boot, for example. So, that means that at no cost. The Java agent is free, but then of course it’s gathering data, and if you store a lot of data, you will have some costs. But I would say for very little cost, you can have some very in-depth and precise monitoring of your app which is interesting for two things.
First thing is, of course, for you. If you’ve got something which is not well coded, it’s interesting to know. But then the second thing is for scalability because we can hook it up with our auto scalability options in Azure. That means that instead of saying when my CPU is up at 80%, I want to scale up. That’s a good metric, but for Java, it’s not that good. What you might better want to do is like, when my Kafka queue is full, then I want to scale up, you know, or my thread pool is full, maybe you have got a thread pool which is full, but your CPU is not working too much. Just your thread pool is full because it’s doing something, watching for something. It’s full, you need to scale up, but your CPU is not full or your memory is not full, and so you need something more precise than just having a look at CPU and memory. And so that Java agent will be more precise, and will allow you to scale better. And scaling better is of course it’s good for your customers because you can please more customers, thanks to your scalability. But it’s also good for your budget because I’m always thinking of scalability, not only for going up but also for going down. What you wanted with scalability is to scale down as much as you can when you have less people using the systems. So it’s, I would say, having a good monitoring system is a little cost, but then you can have great gain out of it. So it’s very exciting.
[00:21:29] JHipster Story
[00:21:29] Henry Suryawirawan: So, let’s go to the thing that brought you to all these Java Champion, becoming famous open-source contributor. So JHipster itself, maybe, can you tell a story, how did you start actually creating JHipster? What kind of problem did you see at that time?
[00:21:44] Julien Dubois: Yes. So it was a long time ago. At that time, Spring Boot did not exist. So I had an idea which was a bit similar to Spring Boot initially. And also at that time, we had something new, which was arriving, which was Angular JS. This new front-end framework. And so that was the original idea about JHipster, so it was Java Hipster. You know, it was Java for hipsters. And for me, hipsters where people were doing Angular JS typically, and they wanted something. So when I say we, I was in a company, and many of us had similar issue. Basically, most of our customers, they were always saying, okay, we want to use Spring. But as Spring Boot did not exist, basically, we were like copying and pasting huge XML files all the time. And also we want the front-end and Angular JS is cool, we all want Angular JS. So at some point, we realized that we have like 20 clients, and they were all asking for the same thing, you know, like the same global Spring Boot configuration, and Angular JS on top of it.
So, after doing it for 10 times, we realized maybe we should automate that. Which might not be a good idea for consulting companies. You know, most consulting companies were very happy to sell the same thing over and over again to the customers. But my consulting company was good. We didn’t want to sell the same thing over and over to customers, so we wanted to automate it. So the original idea was just to automate what everybody wanted to do at that time. And so seven years ago it was always Spring and Angular JS. Since then it became completely crazy with JHipster. Today we support not only Angular but also React and Vue on the front-end. In the backend, we support Spring Boot, but we also support Quarkus and Micronaut. And we even support non Java languages like .NET or Node.js. So it became totally crazy.
Today JHipster is more of an organization. It’s a nonprofit organization. We’ve got lots of sub projects because of all those technologies. Most of my job today is trying to organize this and not coding anymore, just because it’s too big. There’s just too many people and too many different technologies. Nobody can know all of those, anyway. So, I got more work to organize all of this. I’m still following, I would say, the technology that I like most. So I’m still following Spring Boot. I’m doing more of Vue JS that wasn’t Angular. But for example, I have no idea what people in .NET do. I’m only trusting them that what they do is great.
[00:23:51] Henry Suryawirawan: So maybe there are some interesting stories as you created this and it becomes popular. What are some of the highlights that you can remember? When it got traction or become so big that you didn’t foresee before?
[00:24:03] Julien Dubois: Well, a few milestones that happened were totally game-changing to me. So at one time, I only remember it was a summer, and JHipster was going really big. I started to have some really good people. One of the co-leads of JHipster was Deepu. Deepu joined. I had some really good people joining, but I was working on it day and night. So I just couldn’t do it anymore. And also it was a summer. I went to go on holidays. And so at that time I had one moment where, what do I do? Do I go on holidays for two months? Oh, by the way, I was like the only one who was committing stuff to the main branch. So if I stopped, like everything was going to stop. So what do I do during the summer? Do I work all the summer? Which honestly is not that cool. Do I stop everything? But then the project is dead for two months, which is like really bad. Or do I give the power to all of those people? Which is weird because I didn’t know any of those. So, for example, for Deepu, but like most of the other contributors, I didn’t know him. I knew him through GitHub, but I had never met him. I don’t even know if we talked on the phone. He was living in Singapore at the time by the way. So, do I trust those people, and give them the key to JHipster? What should I do? And so well I just decided, yeah, it’s open source. All those people seem really nice.
That’s when we created the core team of JHipster. So I don’t remember how many people got access at the beginning, but it was like 10 people, and all of those people got commit rights to JHipster, and could do anything on it. And I went on holidays. So we had maybe a few weeks when it was a bit weird because we realize I was doing a lot of things that I didn’t tell people about, on testings and so on. So we had some bugs for a few weeks. And then everything fell into place. Everything worked perfectly very fast after that. People understood how it was working. Everybody was trustworthy. I don’t believe you go and commit an open-source code for doing bad things. It would be very strange. So everybody who came was nice and trustworthy. Well, that’s when we started like, I would say, the second phase of JHipster when we had more people than myself. And so we started to do stuff that I couldn’t have done alone. So it was for me a huge success. I have to be forced to do it because of the summer, but in the end, it was that one first phase of JHipster was like, I was doing everything. Then second phase is we’ve got tons of people owning it, and it’s not me anymore. And that was a very good decision. So that’s the first highlight.
The second highlight, which also saved us sometime later in JHipster, is that we made, I don’t know if it’s an agreement, a contract, with Open Collective. So Open Collective is a platform to gather funds for open source projects. It was being used by Webpack. I’m friends with some people from Webpack, so I heard about it thanks to them. So we decided, let’s try to find some sponsor. Let’s try to find some money for JHipster. Initially, we wanted like 50, maybe 100 Euro per month just to pay costs. We’ve got some costs, like paying the website. I was paying everything with my own pocket, by the way. So it wasn’t very expensive, but you know, at sometime, when the project grows, you say, okay, I’m going to try to find some new source so that I don’t pay everything with my own pocket. So we’re looking for maybe 100 Euro per months. Today, by the way, we’re doing 100,000 Euro per year. We’ve got a huge budget, which is maybe even too big now. So we started that. So now we’re making a ton of money with it, which wasn’t expected. And that has totally changed the way we are working now for JHipster. First of all, we’ve got money to pay for the legal stuff, bonding, all those stuffs. So the project is very well protected, which can sometimes be an issue. So we’ve got a good legal protection. Also, when we do a conference, we’ve got an insurance, everything is legal, everything is well done. So that’s the first thing. The second thing, I forgot to say, it’s that it’s owned by a nonprofit. I can’t make any money out of it. I’m just one of the member of the non-profit. There is no shares in some of nonprofits. I’m just one of the member of the nonprofit organization. That’s very important because I believe that if people start to make it a real job, it wouldn’t be a hobby and wouldn’t be fun anymore. It would break everything down.
And the third thing that happened and which really helped the project is that we started to give bug bounties. So, bug Bounty on JHipster is, for example, we’ve got a security issue. We’ve got something which is very complex and very annoying to do. Something which is very long. For all those things, we’re not very good. We’re very good at small and fun task. You know, you want to upgrade to the new version of another Spring Boot with this cool new feature, everybody wants to do this. Basically, you do it in two hours. It’s super fun. Everybody wants to do it. There’s no issue with it. But as soon as we’ve got something which is annoying, long or very urgent security issue, we’re bad because we’re hobbyist. So thanks to bug bounties, now we pay money to people when we’ve got something like this. It goes between $100 and $500. So it’s good amount of money, but it’s not enough to live normally. Because it’s not the goal. It’s just to push some people to do stuff that wouldn’t have been done easily otherwise, and it really opened up new possibilities for us. There was a huge number of things, we were totally stuck on them. And since we have that money, we get totally unstuck. Because we would tell people, okay, I give you $500, if you want to help me on this. And suddenly, thanks to the magic of money, some stuff became possible, which is impossible if you don’t pay people. Well, that was a good lesson because it’s not something that we prepared, we didn’t think of this. We never thought we would have that money. But clearly, that was like the second step of the project where we could do stuff that wasn’t possible before, just because we had the money to pay for it. So that definitely helps.
And I can’t thank Open Collective enough for doing all this and also managing the legal part of it. What people also don’t see is that behind it, so as a company, there’s Open Collective handle all the legal, tax, issues, everything. So, for example, if you’re in France like me, you need to pay taxes. We’re not doing this like some black market stuff. So they’re handling all the taxes and everything, so it’s really important for us that we have something which is fully legal, especially because now we’ve got some good amount of money. I couldn’t have done this alone, it’s just impossible. So I’m very happy with my collaboration with the company, Open Collective, because they have enable us to do so much and so easily,
[00:29:43] Open Source Tips
[00:29:43] Henry Suryawirawan: Hearing your journey, it’s been like a huge success and so many things that you didn’t predict before. There are so many open source projects these days as well, and people are trying to also build their open source to become a successful one, just like JHipster. So what will be some of your tips for those people who are doing open source project as well?
[00:30:01] Julien Dubois: So the first thing was JHipster, that made it work, was indeed that we didn’t want to make it work. You know, I wasn’t thinking about having anything serious. So like I often have people criticizing the name because it’s supposed to be fun, or it’s weird. But what is true is that it’s a very short word and very funny. Initially, a lot of people just had to look at it because it was unique and fun. The second thing that made it work is that I had a chance to have this community arriving. In the end, it’s all about the community. I couldn’t have done it alone. It’s not possible. So, in order to have the community, I would say there are two important things.
So the first thing we did and honestly it was random luck on this. Well, the next time I do it, now it’s not random luck anymore. But when I did it for JHipster, it was random luck. It’s that I took something which was very simple, so anybody could contribute. We had some competitors where much smarter, and they had a look at the system. It was incredibly smart. But then nobody can contribute because nobody would understand it when they start. The most important thing is that it’s easy to make people contribute. And the second thing we did on JHipster is of course, only on the human part is try to have as much people as possible. For that, it’s a question of community or you build a community, and what people do you want in your community? For example, we were one of the very first project to have a code of conduct.
I’m a huge fan of code of conduct for two reasons. The first one, as soon as we had the code of conduct, I saw a change in the way we were welcoming people. I believe we were always nice. But as soon as we add a code of conduct saying, when somebody comes, we need to be nice with that person. Well then we become nicer just because we said we would do it. That was really a change. And know, when people joins a project, you know, when you do your first pull request, you often have people saying, “Oh, congratulations! Thank you for your first pull request.” It feels weird maybe at the beginning, and that’s maybe why we were not doing it initially. But if you put yourself in the shoes of that new person, you know, maybe it’s the first time he’s contributing to any open source project. It can be very intimidating. And then you’ve got several people telling you, “Oh, thank you. That’s cool.” Well, it pushes those people to continue. That’s the first thing. It’s just being nice, but it’s important.
And then the code of conduct also is enforcing stuff. That’s a less nice part, but sometimes we’ve got people who, they’re just not nice. They’re toxic people. It happens. I have met a few of them, and basically, it’s a choice of governance for your project. But if you have one toxic person, even if he’s super good technically, in my opinion, he’s going to break everything. Everybody will quit, it will be a nightmare. So you need to identify those people as soon as you can, and just make them go away. There are different ways to make them go away. But thanks for the code of conduct, the most extreme thing is that when you’ve got somebody who is harassing other people, well, you can banish him from the project.
I’ve got different example. I’ve got an example which is, I would say, fun because the people who got kicked out were happy about it. So we got some sponsoring on the JHipster project from some company who push for some I would say, adult entertainment stuff. I mean, it’s logical and on their side. They know it has mostly men working open source, it’s a good target for them. So basically, they wanted to push advertisement for adult stuff on JHipster. Thanks to the code of conduct we have like a legal agreement saying, okay, this is what you can do, this is what you can’t do, and you’re totally in the second option. So we’re going to kick you out and they understood it. We paid them back, by the way. They sponsored us, so they gave us some money. We gave them money back, of course. I would say everybody was happy about it. But thanks to the code of conduct, we can officially limit what people do and can’t do. And it’s very important to remove toxic people or companies. Well, in that case, it wasn’t a toxic company. People behaving in a way you would not like in your community.
By the way, if there are any minorities, especially women in tech, it’s a huge issue in tech in general, but it’s even worse in open source. We’ve got that issue in JHipster like every other open source project. So if we ever look at our stats, they are very bad. But we’re a little bit better than other projects because it’s so bad everywhere. I would like to have more women contributing to open source and especially to JHipster. Of course, if we add some adult entertainment advertisement on JHipster, it will not work. That’s why the code of conduct is very important. If we want those women to join us, feel safe, feel welcomed. Well, we need to have an environment that makes them feel safe and welcome. So, that’s very important. Well, maybe that could be the next frontier for JHipster is finding a good way to have more diversity, especially women in our team. It’s something we’ve been pushing and working on for several years with some success. We have some women contributing. It’s not all bad. But I would have liked to have something much better than what we currently have today. So, if you are a woman and listening to this podcast, please join us. We will do everything to help you in terms of project. We will mentor you. We will do everything that we can to help you be part of the project. Because I really feel we have an issue here generally in tech. But the most impact I can have is on my own project. So, I’m going to push first for my project.
[00:35:31] Henry Suryawirawan: Thanks for sharing the importance of code of conduct. I think most of the open source creator won’t be thinking about that. And also thanks for sharing the fun story as well. It’s really interesting to hear that.
[00:35:42] Independent Developer Advocacy
[00:35:42] Henry Suryawirawan: So, let’s move on to the Developer Advocacy that you mentioned in the beginning. So you mentioned companies where you are at now, Microsoft, Oracle, right? In terms of development advocacy, one of the things that is very interesting is that they leave you totally free, in terms of stating opinions, and also credibility point of view, maybe you can share a little bit on that front. What is the purpose of having developer advocacy that is flexible and free to say things?
[00:36:09] Julien Dubois: Yeah. So first of all, not everybody has got the same definition of developer advocacy. I see a lot of companies typically in France, well, because I’m living here, and they make developer advocacy part of marketing. For them, it’s only people you pay for conferences, and then the person goes on stage, and tells how great your product is, and that’s all. It can be a definition. I believe it’s totally wrong to do that. But I respect that opinion. At Microsoft, it’s very different. So if I take my team, for example. Let me just share you what I was just doing. Like just before our meeting. I’m prepping SpringOne, which is a big Spring Java conference. So it’s very important for us. I’m going to speak there. I was selected through the CFP, and officially I should not as a developer advocate be selected through a sponsorship.
The goal in my team is that we are selected because of our own value. So it’s through CFP. Sometimes we do also sponsor stuff and probably we will do it at SpringOne, to be honest, because we also sponsor, so it’s sometimes a bit complicated. Microsoft is everywhere and probably the people from marketing who have paid for the sponsorship will be happy to have us talking. But officially, normally we should only be selected because of our own merit. So we go through CFP like everybody. We don’t pay. And there we can talk about everything we like or dislike on I would say Java and Microsoft, or even not Microsoft. It’s very open. The goal of Microsoft here is two levels. One level of course, just to show people that Microsoft is doing some cool stuff on Java. That’s how you attract people to Microsoft. That’s I would say, the most obvious reason why we do developer advocacy.
But then there’s another reason is that you want to have feedback from developers. If I go to a conference, what I’m also interested is to have people coming to me and telling me, “Okay. I’m not using Azure because of this. This is so bad. I don’t want to use it. Or I’m using Azure in a very strange way because that doesn’t suit me.” And that’s a lot more important to us because that’s how you fix the problems inside Azure. We can’t do it by ourselves. Basically, because we’re too into the product. If I talk to the engineers of Azure, they spent all their time doing Azure engineering, so they know it very well, but of course they are, I would say, locked inside their ideas and it’s starting to be the same with me. I’ve been at Microsoft for too long now. I start to believe Azure way of doing things is the best way of doing things. Because that’s what I’ve been doing for years. If I want to have new opinions, new ideas, I need to go to see those people who are going to tell me what’s wrong. That’s super important because that’s how you improve your product, and that’s why people then choose your product.
For me, it’s a part of marketing, but it’s in the good sense of way. Marketing is also finding a good product for the market. It’s not just, you know, advertisement. It’s also creating the best product for the market. And for that, you need to go and see the market and see what people want. I’m doing a lot of Terraform. It’s not a Microsoft product. Inside Azure, if you want to deploy your app to Azure, or if you want to generate your infrastructure, we’ve got ARM, which is our official language. We’ve got a new thing called Bicep, which is very close to ARM by the way. So we’ve got our own tools for that. Then this Terraform, which is a 3rd party tool, which is in my opinion, very good. It is not a Microsoft product. So if I only talk to Microsoft people, everybody going to tell me, use ARM, use Bicep, use Azure CLI, use Azure tools. Nobody is going to tell me use Terraform, because it’s not a Microsoft tool. But then if I go to conferences, I know I’m going to have 99% of people telling me, “Use Terraform. It’s a lot better.” If I don’t do conferences, I don’t have that feedback, and then I don’t know what we need to push.
That’s because of that. So if I take Azure Spring Cloud, so it’s our Spring offering. I’m working a lot on it. We have just released the first Spring Cloud. We have just released Terraform support. So why do we do Terraform support on Azure Spring Cloud? It’s that because we know that people want Terraform. But if we don’t do that initial work of seeing people, listening to them, well, we don’t know, and we wouldn’t have probably done that Terraform support. Same thing, if you look at IDE plugins. We do Visual Studio Code, so probably would mostly focus on Visual Studio. Well, we’ve got some great plugins, you know, Azure plugins for IntelliJ. Why do we do it for IntelliJ? It’s because we know developers use IntelliJ. But how do we know that? It’s because we have got that relationship with developers. We go where they are. We listen to them, and they tell us that most of the Java developers are using IntelliJ. So that’s also why we know that we need to do that work.
So developer advocacy is all about to have that connection with the developer community. Which is hard, and which can only happen truly if you are independent, and not what I was saying earlier, that if you’re not a marketing guy. If you’re only here for marketing, people don’t trust you or don’t listen to you. If you want to have that authentic connection where you have what really people want, you need to do something else. That’s what we’re trying to do, and I hope we do it well.
[00:40:28] Microsoft and Open Source
[00:40:28] Henry Suryawirawan: So, in terms of the last few years, Microsoft has been changing a lot in terms of open source adoption. Being open as well, regarding technologies and all that. Maybe a little bit of summary in the last, maybe few months or so, how is the open source culture in Microsoft actually becoming?
[00:40:45] Julien Dubois: So Microsoft has done a lot of open source. People don’t realize it, but stuff like Visual Studio Code is Microsoft, and it’s used by I would say, every developer on the planet. It might be one of the biggest open source project. And we also contribute to very big open source project, like Kubernetes. Lots of engineers working in Kubernetes. So there’s a huge Microsoft culture on open source today. Of course not for everything at Microsoft, but at least for Azure, a huge part of it. I was thinking about Windows, but Windows is not open source, but a big part of Windows are now. My favorite example is a Windows calculator. It’s open source. You can do pull request, and maybe the next version of Windows calculator will have your code in it. So, more and more open source at Microsoft, and also more and more Microsoft people contributing to open source. We’re pushed to contribute. We got something called the open source office.
But what I really like about their work is, so first of all, we’ve got a framework to open source what we do. Basically, it’s a self-service portal, which is open source by the way. So you can go to that portal and say, okay, I would like to take this GitHub repository, and publish it as open source inside the Microsoft organization on GitHub. And so depending on what you do, well, if it’s something very simple, it’s very easy. If you want to do something more complex, you need to go through several compliance steps for legal. They’re going to have a look at your trademarks. Maybe you took a name which is trademarked and you shouldn’t. So you’ve got different steps, but it’s all automated. There’s a workflow for this. Everything is done so that it’s very easy for you to publish stuff as open source. And in return also, the open source office has a grant, I think it’s every month. They’re granting $10,000 to an open source project. So at Microsoft, when you contribute to open source, during that month, you’ve got voting rights for this.
So basically they’re going to push you to contribute, because if you contribute, then you will have some benefits including voting for giving 10,000 dollar towards your open source project. There’s really a huge push for doing open source at Microsoft, which is just surprising for many people, but that’s how it is today. By the way, I believe everything I do is open source at Microsoft. Everything I can think of right now that I’ve done at Microsoft is open source. Maybe I fixed a few stuff, which weren’t. But I would say okay, 95% of what I’ve been doing at Microsoft is open source, which is yeah, very surprising.
[00:42:53] Henry Suryawirawan: Thanks for sharing that. I mean, like, I personally haven’t seen it in that way, but I know that Microsoft has been doing a lot of open source projects, products lately. So it’s really good to hear from you, yourself, working internally in Microsoft, some of the things that Microsoft has been doing for open source.
[00:43:08] 3 Tech Lead Wisdom
[00:43:08] Henry Suryawirawan: So, Julien, it’s been a pleasure talking to you. Unfortunately, due to the time we have to come to the end. But before I let you go, I normally ask one question that I always ask all my guests, which is to share three technical leadership wisdom for all of us to them. So could you share yours?
[00:43:23] Julien Dubois: Okay. So the first one I’d go for leadership tips. The first thing I got at Microsoft when I became a manager, and I realized it’s the same thing I’ve been doing at JHipster, but without thinking of it, but it’s better when you think of it first, is that when you become a manager, you’re not in charge anymore of doing things. You’re in charge of the people who are in charge of doing things. So I realized I’m doing the same thing at JHipster. You know, in JHipster, I was initially coding everything, and now I’m in charge of the people coding. That’s very important. I’m not a perfect person. I’m still contributing, doing code and doing conference talks. But then, if you want your team to succeed, you need to go out of the way, and help people succeed. So first thing is that you’re not in charge. You’re in charge of the people.
The second thing, we talked a little bit about it earlier. It’s about diversity. If you’re a manager, basically you’re building up a team, or you have an existing team, but you still have some impact on the people inside the team. If everybody thinks the same, works the same, acts the same, not only you’re not going to succeed, but you’re not going to go very far. If I take JHipster, we will still be doing Angular and Spring Boot only. We will not be doing React and Vue, we will not be doing Node.js. It wouldn’t be successful as it is today. So when I say diversity, it’s a very broad term, but having people from different background, different culture, different genders, etc, etc, helps you to have a different view on what you are doing. And in the end, it’s because we’ve got all sorts of different people who think differently that you got a project that is better for everyone. Because if you want a project that works for everyone, well, you need to build it with everyone.
It’s the same thing at Microsoft. When we talked about Azure, we’re talking, thanks to Azure you’re getting to be more efficient, more productive. You will be the best developer on the planet because you will be more efficient and productive than other people. Open source is all about inspiring people to go somewhere. Well, you need to have a “why?”. Why are you doing it? Why we’re doing it? Because we want to do the best thing in the world. Just for JHipster, we want to have developers build the most beautiful and efficient web application in no time. Or I will use a new Microsoft project called NubesGen. Going to production on Azure is only one Git push away. We’re telling you, you’re going to go to production very easily. That’s the goal. And we’re not telling, okay, if you want to use NubesGen, then you need to do some Terraform stuff, and some GitHub actions. We don’t go into the details like this. It’s not inspiring. Nobody’s going to be interested by having the best GitHub action and Terraform and Java code generator in the world. It’s not what you do, it’s why you do it, and why are you doing it? You’re doing it because you want to be more productive. Because you want to go to production very fast and very easily. And you’re not focusing on what you’re doing it because what you’re doing is boring.
[00:46:50] Henry Suryawirawan: Right. Thanks for sharing that tips. Focusing on the why instead of the what as a leader, right? I think that really sums it up really nicely. So thanks Julien for your time. So if people wants to connect with you, find you online, find your open source project, where they can find you, actually?
[00:47:04] Julien Dubois: So they can find me first on Twitter. It’s @JulienDubois on Twitter. They can find me on GitHub, but on GitHub, it’s small commits and stuff, so it’s not that fun. They can find me on LinkedIn, it’s more professional. But I would say, yeah, most of the time it’s on Twitter. I’m on Twitter all day long. So it’s probably the easiest way to find me and to interact with me. I love chatting on Twitter. I really see it as a social media. I don’t see Twitter as just me publishing stuff. I see it like chatting with other people. So it’s a two-way communication. So please don’t hesitate to ping me, mention me for all your questions about Azure or what you want to build. It’s always interesting.
[00:47:40] Henry Suryawirawan: Thanks. Julien, thanks again for your time. So wish you good luck with all the open source projects that you’re doing and all the developer advocacy that you’re doing at Microsoft as well.
[00:47:48] Julien Dubois: Thank you.
– End –