Hello. My name is Brian and I'm a Maven developer. You may know me from the community. This is how I got there...
I've spent my entire career developing Enterprise level, mission critical software systems. You know, the kind that run electric grids phone companies, or detect and track massive public health outbreaks? I've worked in companies ranging from 10 employees all the way up to 160,000 (same job, multiple acquisitions). You can certainly learn a lot of good things working with "5 9's" in mind. The trouble with such large, mission-critical projects is that you don't get a lot of end-user interaction. When you sell two or three massive systems in a banner year, you are less focused on user experience and more focused on function and quality.
Fortunately, I had the opportunity to lead several projects in which I had a close relationship with the end-users of the software systems we were creating. Those where my most enjoyable and successful projects by far. Not much overhead BS, room to make features the users needed and wanted...and oh yes, on time and under budget. Ok, one was on time, the other was under budget.
Throughout my career I always seemed to have a penchant for the Infrastructure. I often found myself "fixing up" the builds...even Visual Studio builds can use some work once in a while. Somehow I managed to learn make and rewrite some massively hosed "make.rules.simple" from scratch. Then due to the Telecom bubble bursting, I moved into the Java world and Ant. Ant was interesting but like those so-called simple make rules, there is plenty of rope in there to make an elegant build system, and most people just hang themselves with it. Except it was missing the ability to really build only the minimal stuff in a non clean fashion like you can do with a well written Make script.
A little while later, we started some major process improvements where I worked. Since I had strong opinions on the infrastructure, I lead the Configuration Management team. We evaluated several technologies and ultimately settled on converting from Ant/Cvs to Maven 2(alpha-ish)/Svn. And so it began...
I started with a few bug fixes here and there, but before long jumped head first into my "copy-unpack" plugin at Codehaus' Mojo project. Fortunately Dan T. had some better naming skills than I and it became known as the "dependency-maven-plugin". After a few releases, that plugin got pulled into the Apache Maven project as the maven-dependency-plugin. and I came along for the ride. About a year later I was accepted into the Apache Maven PMC and around the same time started working on the maven-enforcer-plugin.
I found working on Maven very enjoyable as I could finally get immediate feedback about changes, fixes and features. It really scratched that itch I mentioned earlier about lack of end user interaction in the Enterprise system world. It was also nice to keep my coding skills fresh as I was mostly development management by now in my day job. For two years I imagined how enjoyable it would be to work on a project like Maven full time.
Several months ago Jason gave me that chance. I joined Sonatype and now have the chance to bring my full attention and experience building mission critical systems to the Maven project and to tools so desperately needed to use Maven effectively in the Enterprise world. The first of these tools is Nexus, our Maven Repository Manager, but that's another blog...
Written by Brian Fox
Brian Fox is a software developer, innovator and entrepreneur. He is an active contributor within the open source development community, most prominently as a member of the Apache Software Foundation and former Chair of the Apache Maven project. As the CTO and co-founder of Sonatype, he is focused on building a platform for developers and DevOps professionals to build high-quality, secure applications with open source components.
Explore All Posts by Brian FoxTags