Here is a small excerpt from the interview, and to read the full interview click here.
Scott: The first time I bumped into design patterns, which seem to be at the core of what you were talking about, I was at a software conference down in San Francisco, and one of the gang of four was giving a presentation on design patterns.
He was talking about how they were sitting around lamenting the notion that Smalltalk developers seem to solve the same problem the same way, because there were design patterns baked into the language, whereas C++ developers might solve the same problems in a whole bunch of different (and often horrific) ways, because they could go off in any direction they want.
As a result, there was a big push about factoring problems in terms of the patterns that you were looking at. It sounds like that’s really entrenched in Maven: that when you’re building software, there are certain patterns that repeatedly arise, and if they’re codified in the build system, then the same things are done the same way, even across a wide group of people who never talk to each other.
Jason: Maven is opinionated, and I designed to be this way. I don’t think it’s possible to have a tool work for such a large number of people unless you restrict some of the options and provide some guidelines.
Some people at first railed against Maven conventions and the fact that you have to do things a certain way, but if you follow those patterns, you generally can get a software project up and running in a day.
That’s evidenced by the traffic from Maven central, which has become the de facto standard central repository for Maven artifacts in the open source community. We get on the order of 250 or 300 million hits a month against it. In 2008, we had about 1.9 million unique visitors to Maven central. In 2009, we had almost four million.
So, even though Maven’s opinionated, it seems to work for a lot of people. Even though you’re restricted in some of the things you do, it provides more value by limiting what you can do than it would in providing ultimate freedom to give you as much rope as you want.
Cities that are designed well usually have structural patterns in common. Look at cities that don’t have much infrastructure or don’t copy other cities. Lots of cities in North America do that, and they have horrible infrastructures. A lot of developers and organizations tend not to look at what’s happened in the past, and they often repeat mistakes over and over again.