Live data from Hacker News

Why Everyone Eventually Hates or Leaves Maven

nealford.com

11–20 of 168 posts

Re: Why Everyone Eventually Hates or Leaves Maven

#11
post #3

I don't hate Maven, and I haven't left it yet. But he is absolutely correct about the key observation: a basic tool with "plugins" is simply NOT the way to create a build tool. A built tool should allow (when needed) the full flexibility of a Turing complete programming language. Because eventually your project is probably going to need it.

You should take a look at http://www.gradle.org/ if you haven't already. I worked on an ant project and decided we needed to convert to a better build system. I started down the path of Maven, but Gradle changed my mind because of the conciseness. It uses the groovy language so hopefully it doesn't fall into the same trap as described in the post.

> It uses the groovy language so hopefully it doesn't fall into the same trap as described in the post.

The article mentions Gradle :-P Need to read the whole article ;-)

Re: Why Everyone Eventually Hates or Leaves Maven

#13

Earlier quoted context omitted.

You should take a look at http://www.gradle.org/ if you haven't already. I worked on an ant project and decided we needed to convert to a better build system. I started down the path of Maven, but Gradle changed my mind because of the conciseness. It uses the groovy language so hopefully it doesn't fall into the same trap as described in the post.

> It uses the groovy language so hopefully it doesn't fall into the same trap as described in the post. The article mentions Gradle :-P Need to read the whole article ;-)

Hrmm that's embarrassing... well it's mentioned below the fold and everyone knows people don't pay attention to that stuff. :)

Re: Why Everyone Eventually Hates or Leaves Maven

#14
post #3

I don't hate Maven, and I haven't left it yet. But he is absolutely correct about the key observation: a basic tool with "plugins" is simply NOT the way to create a build tool. A built tool should allow (when needed) the full flexibility of a Turing complete programming language. Because eventually your project is probably going to need it.

So...the way that you do that in Maven is to create a plugin, which is very easy to do. There's your full flexibility, as soon as you want it.

Your plugin has to play by the rules, which is a good thing.

Maven's useful for more than the beginning of a project. If you're working on real-world software, you're probably not the only person who has to understand your bespoke build, if that's the way that you've chosen to go.

Re: Why Everyone Eventually Hates or Leaves Maven

#15

I'll take rigid maven any day. Much preferable to some cobbled together build system that is undocumented and hard to reliably reproduce. I'm curious what people are doing with Maven that they manage to get into such a fight with it? Although to be fair, due to issues in its dependency resolution mechanics, it can pull in incorrectly versioned artifacts without ever telling you anything.

How are you ending up with anything other than the version you specify? Dependency mismatches on versions?

Re: Why Everyone Eventually Hates or Leaves Maven

#17
I enjoyed the article but I feel it overlooks one of the biggest reasons to use something like maven:

It gives us the language to efficiently reason about and discuss build concepts with colleagues.

This is a big thing, think about the most recent new starter situation you experienced, about how communication of these common build tasks was expressed. Chances are if it was with a more composable tool, the discussions were fairly detailed, the words 'just like' frequently appeared. If it was with a more rigid tool, the conversation would have been in terms that tool commonly defines.

Re: Why Everyone Eventually Hates or Leaves Maven

#18
I was surprised to see him include ant with maven. I always thought of ant as more a set of composable tools than a maven-like context, and for that reason I preferred it.

That said, I recently had to use ant after many years doing Ruby, and I was surprised to find how many old annoyances were still there, like scarce/painful support for conditional execution. I wanted a task to `cp` in development and `scp/rsync` in production, and I wound up having to duplicate a lot of code. Also I'd have thought that someone would have added the copy task's filter support to scp by now. (If anyone knows a clean way to do any of this, I'd love to hear it.)

Re: Why Everyone Eventually Hates or Leaves Maven

#19
The compromise of composabilty is that if you don't already understand the problem domain, you don't know how to structure your code. Frameworks are brilliant for paving a golden path for us to follow - we get to reuse someone elses knowledge and experience, codified into the framework.

A great example is the present state of browser development t. Google "backbone sucks site:news.ycombinator.com" and you find tons of comments from people who struggle with backbone - a supercomposable library, not a framework by design.

Composabilty pays off huge in the long, but you need experienced leadership to wield it.

There's also a happy medium in things like Play Framework, a functional scala framework but designed almost as a collection of composable libraries so you can lean on Plays opinions for most things but since it is designed to be composable (compare to "pluggable", or "extensible") so you can swap different pieces out if you like. That is my experience, at least.

Re: Why Everyone Eventually Hates or Leaves Maven

#20

Oh wow. I just raged at my manager for exactly this type of problem. I'm not sure if it's due to someone's lack of technical ability, or if they get distracted by other externalities, but we always tend towards something that seems really simple at first but instead incurs a lot of technical and process debt later on. Brilliant read.

My experience is this is caused by a lack of refactoring/ rewriting code when it can no longer support easily modification into the desired functionality.
Post reply on HN