tobrien's blog
Here is my talk from Apachecon 2011. It was entitled "How to Talk to Your Boss about Open Source (Without Creating a Monster)". This post contains an embedded audio player which links to a SoundCloud recording of my talk.
I gave a deposition in a case involving contract law a few years back. It's a long story, but the company I worked for signed a vauge contract with an individual who didn't deliver a product in line with the expectations of the company. In addition to that point of contention, the contract was one of those vauge "Joint Development" contracts. I'm not sure who drew up the contract, but I was focused on technology issues. This company hired me to come in, rescue the project, and try to see if there was anything worth salvaging.
There wasn't.
There was a wide array of technologies, someone had written C code to handle web requests, drop a file on a filesystem and enter into an infinite loop waiting for another process to satsify a request. I came in, took one look at the approach and rendered my opinion - "no way I'm going to be responsible for this Rube Goldberg machine disaster".
Note: I can almost guarantee I'm going to catch some flack for writing this post. Someone's going to show up and tell me that it is unfair for me to say this when I haven't stepped up and contributed to the project. Also, I'm speaking for myself here, not as someone who has contributed to Sonatype's documentation efforts.
I’m sick of it. I’m sick of the fact that Maven developers have this absolute allergy to ease of use. Here’s a use case that I’ve had about a hundred time each month over the past four years.
-
Set up a new development machine
-
Install Maven
-
Configure your Maven instance to hit a URL in Nexus
If you use Maven, and if you use a repository manager, this is the best practice. It doesn’t matter if you’ve standardized on Nexus or Artifactory, you configure your build to hit a single repository manager, and if your build needs an additional repository you manage these additional sources of artifacts at the repository manager level. Repository Managers give you a single place to upload third-party artifacts, cache proxied artifacts from public repository, and start to enforce standards.
For this post, assume that the primary advantage of open source is the fact that someone, much smarter than you can show up and contribute code that extends your open source project. You might have a great idea for a repository manager (like Nexus), so you release the source code until some open source license, and someone else comes along and extends it to support an unexpected repository format (nexus-yum-plugin).