back to all blogsSee all blog posts

Meet our open source champions: Andy McCright, Web Services Architect

image of author image of author
Andy McCright and Grace Jansen on Nov 15, 2021
Post available in languages:

In this blog series, we’re highlighting some of the amazing individuals who contribute to Open Source software (OSS). We’ll delve into their contributions within OSS, their career journey, how OSS involvement has helped them, and their advice to others for getting involved.

Introduction:

Andy has worked for IBM as an Enterprise Java developer for around 20 years. In that time, he’s worked on various projects, but mostly around WebSphere Liberty Application Server – and currently on Open Liberty. Andy is now a Web Services Architect. He enjoys open source software and contributes to many projects, including Open Liberty, Apache CXF, RESTEasy, Jakarta RESTful Web Services, and MicroProfile ™ (specifically the Rest Client and GraphQL). 

Cartoon Illustration of Andy McCright

Tech introduction:

Jakarta RESTful Web Services, MicroProfile Rest Client and MicroProfile GraphQL are all specification projects. That means that the projects don’t produce anything that is directly usable by an end user, but rather provides APIs for users and rules/guidelines for other projects to implement and provides a compatibility test suite (TCK) for verifying that implementing projects are compatible. These other projects can implement things beyond the specification or simply differentiate themselves by performance or footprint, etc. This allows users to code to the specification APIs, but choose an implementation that best fits their needs.

Jakarta RESTful Web Services (formerly known as JAX-RS) is a specification/API for developing Java RESTful services, primarily using annotations to mark which classes/methods should be invoked when a client makes a specific REST request over HTTP. While it contains some client-side APIs, the MicroProfile Rest Client takes a different and perhaps more user-friendly approach to consuming RESTful services. MicroProfile GraphQL uses a similar annotation approach to JAX-RS, but implements an alternative to the REST architecture that features a query-language allowing clients to specify exactly the data they want to see, saving bandwidth and client-side processing.

Apache CXF and RESTEasy are two different implementations of Jakarta RESTful Web Services and the MicroProfile Rest Client. CXF actually implements many other specifications. Both are modular, so you can choose which pieces of these products you need (i.e. JAX-RS client only vs full JAX-RS server implementation). SmallRye GraphQL is an implementation of the MicroProfile GraphQL specification. It was founded by RedHat and IBM.

All of these technologies are packaged as part of Open Liberty. For developers who want to pick and choose, they can use Liberty’s feature manager to specify only the features they want. This can reduce footprint as well as server startup performance.

Q&A:

What projects have you worked on since joining IBM?

Mostly WebSphere Application Server (WAS).  I started IBM in 2000 on a specialized systems integration testing team for WAS. Since then, I’ve worked in various different development and support groups, with a brief stint in WebSphere eXtreme Scale. After WXS, I moved back to the WAS org, but mainly focused on WebSphere Liberty and a lesser-known (and now extinct) project called WAS Community Edition (based on Apache Geronimo). Now I primarily work on Open Liberty.

What encouraged you to get started with open source projects? How does working on an open-source community project like this compare to working on a proprietary project?

To be honest, open source software was a little frightening for me at first. It’s one thing to write code that only a few of your peers can see. It’s another thing to write code that the whole world can see (and critique!). What helped me to get started was an experienced mentor who would pre-review my changes before I submitted them to the community. This helped to build my confidence - similar to training wheels when learning to ride a bike. Eventually, the training wheels came off and I was part of the community.

I think open source and proprietary projects really aren’t that different anymore. Even proprietary projects use a lot of open source paradigms - like reporting issues in trackers like JIRA, and document their projects using wikis, and track source code changes using Git, etc. Probably the biggest difference between open source projects and proprietary projects is the culture. In proprietary projects like WAS or WXS, there was a single culture, set of tools, etc. But when you work with different open source projects, you may end up using different tools - one project might want to communicate over email lists while another may prefer Slack or Gitter. You end up working with people from different companies in different countries and timezones.  

How has your involvement in open-source projects impacted upon your work or impacted you personally?

In a way, I think it has made me more worldly. I’ve built professional (and in some cases personal) relationships with people from multiple continents. I’ve learned a lot, like how to use new coding practices, improved tooling, and working with different personalities. I’ve also enjoyed the direct interaction with users.

How has your role changed since getting involved in open-source? What impact have you been able to have within IBM through your role/involvement?

Early in my career, I got some great advice (if a little buzzwordy…​): build your brand; "be the guy". A few years ago, my management team asked me to lead the JAX-RS team for IBM. I had to learn a lot about REST and how we implemented it in a short time. This got me involved in the Apache CXF project, where I’ve carved a small niche - mostly JAX-RS and later MicroProfile Rest Client. I’m starting to create a similar niche with RESTEasy. I’ve also become IBM’s representative to the open source specification projects for Jakarta RESTful Web Services (the new name for JAX-RS) and MicroProfile Rest Client. In effect, I’ve become the "REST guy".

Andy presenting about JAX-RS

My role has definitely changed from one that primarily fixed bugs to one that creates new features. My role has also added new facets, like advocacy. I’ve been doing a lot more work-related social media (Twitter, LinkedIn, blogging) in concert with open source development. I’ve really enjoyed that aspect of my job. It’s also now super-easy to create a new feature and then demo it on GitHub and blog about it with links to the source code. I think that really helps our users out - they know what our products can do and can see it working - and if they run into problems, they can talk directly with us over GH issues or StackOverflow, etc.

What is involved in being a web services architect? What are your favorite parts of this role?

More meetings…​ :-) Aside from the meetings, there is a lot of flexibility in my role. Some days, I’ll work on product defects, while others I might help write documentation, and still others I might try to hype some new feature that our team recently delivered. It definitely involves working with a lot of people . For a generally introverted person like me, it’s strange, but I kinda like that.  There’s a lot to like about my role. I like writing blog posts - more the how-to stuff than the marketing stuff, but I like both.  I also like the feeling of accomplishment when completing a new feature, particularly when it is one that solves a real user problem.

How did you get involved in GraphQL? Why did you select this particular API to become involved with within the MicroProfile specification?

Our chief architect went to a conference where an attendee asked about GraphQL. He said, "we’re planning to work on that". When it was almost time for the same conference the next year, he pulled me aside and said, "can you work on this so that when I see this user again, I won’t be a liar?" I did a little research into GraphQL and found it to be a very interesting technology.  It seemed to have a large following in languages like JavaScript, but not so much in Java. I considered just adding a GraphQL implementation directly in Open Liberty, but I figured that it would be better to get more buy-in from others in the industry, and I found a few folks who were interested in GraphQL who had already posted on the MicroProfile mail list. We got together and built a sandbox implementation of GraphQL, and eventually built a fully supported release.  Now users can develop GraphQL applications in Java and run them in Liberty, Wildfly, Quarkus and Helidon. 

In fact, if you’d like to learn more about MicroProfile GraphQL, then check out my IBM ExpertTV Episode.

Andy presenting on GraphQL

As someone who creates many blogs, tutorials, and presentations about these OSS technologies, what motivates or inspires you to create these? What do you gain from these additional advocacy activities?

I enjoy writing. I’m sure that in some alternate universe, I ended up as a bestselling novelist instead of a software engineer. But aside from the sheer enjoyment of writing, I like to blog or write tutorials to share my knowledge and help people. I suppose it’s a bit like giving back. I also like to blog as it helps with my brand, as I mentioned earlier. That certainly helps my career. While I’m not really looking for a new job at the moment, if things changed, it should certainly help my prospects if a potential employer can google my name and find a bunch of blog posts and links to projects I’ve worked on, etc.

Andy’s blogs on Dev.to

  I get less enjoyment from presentations - and quite honestly, that’s a stretch for me as I have a bit of stage-fright.  But I do that for a few different reasons. (1) I think it is an expected part of my job. (2) It certainly helps with my personal brand, and (3) I also enjoy traveling - so this provides a great way to visit some amazing locations. On that point, I’ve been extremely fortunate at IBM to have been able to travel to conferences or user groups in Vienna, Paris/Toulouse, Beijing, Johannesburg, New York, Las Vegas, San Jose, and Minneapolis.

What inspired/motivated you to co-author your new book, Practical Cloud-Native Java Development with MicroProfile? What does this book offer developers?

I hope I’m not sounding like a broken record by this point, but I really like to write! :-) Emily Jiang had been in communication with Packt Publishing and had worked out a rough plan for a book on MicroProfile development. This is one example where "personal brand" pays off, as Emily recognized me as "the REST guy" and asked me to help with some of the chapters related to JAX-RS, MicroProfile Rest Client, GraphQL, etc. I was thrilled to accept! The book offers deep advice for developing with the MicroProfile APIs and technologies, but also the best practices for building, deploying, monitoring and maintaining applications in the cloud. My co-authors bring a lot of depth in their subject areas, and we use a real-world application to demonstrate MicroProfile.

If you’re interested in reading this book, then head over to Packt’s website.

Andy’s book "Practical Cloud-Native Java Development with MicroProfile

What advice would you give to developers that are interested in getting started with an open-source project? 

(1) Be patient. It will take a while - and usually a lot of contributions over an extended time before a project will make you a committer. (2) Set realistic goals and expectations. If your goal is to suggest improvements for a product that you use (but not actually implement the improvement yourself), you might need to adjust expectations for when that new feature might be implemented. (3) Be willing to do jobs nobody else wants to do. For many open source projects, that will probably be documentation or testing. Most people want to write the code, and that’s great, but for an open source project to succeed, it will need some quality assurance, documentation, and people answering user questions in the mail lists, forums, etc. 

Some Fun Questions…​

Favorite food?

Pizza - yep, I’m in my early 40s but I still eat like a college freshman…​ :)

Music you’re listening to?

Right now, I’m pretty hooked on a band called Remedy Drive - they’ve got an Imagine Dragons vibe.

What do you do when you’re not coding/blogging/etc.?

My wife and three kids keep me pretty busy. I’m also pretty active in my church. I play electric bass on the praise team and try to manage the scheduling - ironically, I do a bit of RESTful programming to interact with the church’s scheduling software! I also play recreational volleyball. 

Where do you blog?

My personal blog site is https://andymc12.net/, but I also have blog posts on the Open Liberty blog, DZone, and DEV.

Favorite tools?

I code in VS Code (favorite) and Eclipse. I like Git and GitHub. For diagnosing problems with REST and GraphQL, I really like tcptunnel. It’s a simple proxy-like tool that will display the HTTP data sent over the wire, but less invasive than things like WireShark. I’m a big fan of Slack - it’s basically replaced email for me. 

Mac, Windows or Linux?

Mac. I used Linux before that - it’s more customizable and more hard-core nerdish, but I think Mac is a little more polished - and fewer kernel rebuilds. :-)

Getting started with open source

If this article has helped inspire you to get started contributing to open source, why not consider contributing to Open Liberty? It’s easy to get started: https://openliberty.io/contribute/.