I just submitted a pile of changes to master to make sure Maven does
the right thing by default. If you want the build to go faster you
need to add the magic flags necessary to skip the slow parts. If you
don't have AsciiDoc installed on your system, its your responsibility
to figure out how to make Maven not package the documentation.
Moving away from Maven is hard, but innovation is based on experiments - trial and error - and is necessary to make things better, even if that means getting some new scars on our face.
Everybody agrees that Maven is really painful, and m2e is even worse :-O ... so why don't we try to use the new build system and, if we have problems (o course we'll have plenty of them) just do as Saša and the others did: get everybody's help to sort it out collectively !!!
I would vote to stay on the innovation track for Gerrit 2.8 (shall we call it 3.0 then ?) with a new Build system.
Moving away from Maven is hard, but innovation is based on experiments - trial and error - and is necessary to make things better, even if that means getting some new scars on our face.
Everybody agrees that Maven is really painful, and m2e is even worse :-O
... so why don't we try to use the new build system and, if we have problems (o course we'll have plenty of them) just do as Saša and the others did: get everybody's help to sort it out collectively !!!
I would vote to stay on the innovation track for Gerrit 2.8 (shall we call it 3.0 then ?) with a new Build system.
There are three key problems with Buck as a build tool that aren’t going to be solved soon.
1. It doesn’t work on Windows. This may not be an issue if you do all your builds on OSX, but cross-platform compatibility has always been an important part of Java based open-source projects, and cutting off Windows users will alienate some from contributing.
2. There’s no direct integration with Eclipse or other IDEs. Yes, Maven has been around a long time, and is very regimented in the way that it works – but almost all IDEs support Maven out of the box for inter-project references and ability to resolve assets. Given that the average developer spends >90% of their time in their IDE and <10% of their time executing a build, the trade-off should be to focus on making the IDE experience better.
3. There isn’t a standard build which is widely available and has been used by the community for some time. ‘Build it yourself so you can build Gerrit’ is not a great trade-off, and only discourages contributions. Not only that, but not everyone has an open choice about which build tools to use; integration points with build systems (e.g. Jenkins) and artefact repositories (e.g. Nexus) are widely understood and used, and have subtle restrictions that may not be present for developers that have unfettered access to the internet.
In short, whilst Buck may have some advantages (and a build time of ‘about twice as fast’ may be one of them) it also brings a significant number of disadvantages to some. If the disadvantages can be overcome then it may be a worthwhile trade-off in the end, but it would be much better if time were spent building Gerrit than building a build system for Gerrit.
BTW the problems of having to refresh Eclipse periodically – especially when switching branches – would be dramatically reduced if the .project and .classpath files were checked into the repository as well. The fact that they aren’t is one of the key problems in projects disappearing and/or causing conflicts when switching between branches where one project exists and the other doesn’t.
Alex
There are three key problems with Buck as a build tool that aren’t going to be solved soon.
1. It doesn’t work on Windows. This may not be an issue if you do all your builds on OSX, but cross-platform compatibility has always been an important part of Java based open-source projects, and cutting off Windows users will alienate some from contributing.
2. There’s no direct integration with Eclipse or other IDEs. Yes, Maven has been around a long time, and is very regimented in the way that it works – but almost all IDEs support Maven out of the box for inter-project references and ability to resolve assets. Given that the average developer spends >90% of their time in their IDE and <10% of their time executing a build, the trade-off should be to focus on making the IDE experience better.
3. There isn’t a standard build which is widely available and has been used by the community for some time. ‘Build it yourself so you can build Gerrit’ is not a great trade-off, and only discourages contributions. Not only that, but not everyone has an open choice about which build tools to use; integration points with build systems (e.g. Jenkins) and artefact repositories (e.g. Nexus) are widely understood and used, and have subtle restrictions that may not be present for developers that have unfettered access to the internet.
In short, whilst Buck may have some advantages (and a build time of ‘about twice as fast’ may be one of them) it also brings a significant number of disadvantages to some. If the disadvantages can be overcome then it may be a worthwhile trade-off in the end, but it would be much better if time were spent building Gerrit than building a build system for Gerrit.
BTW the problems of having to refresh Eclipse periodically – especially when switching branches – would be dramatically reduced if the .project and .classpath files were checked into the repository as well. The fact that they aren’t is one of the key problems in projects disappearing and/or causing conflicts when switching between branches where one project exists and the other doesn’t.
Alex
From: repo-d...@googlegroups.com [mailto:repo-d...@googlegroups.com] On Behalf Of Saša Živkov
Sent: 07 May 2013 09:33
To: Luca Milanesio
Cc: Shawn Pearce; repo-discuss
Subject: Re: gerrit builds and future directions
On Tue, May 7, 2013 at 8:30 AM, Luca Milanesio <luca.mi...@gmail.com> wrote:
Moving away from Maven is hard, but innovation is based on experiments - trial and error - and is necessary to make things better, even if that means getting some new scars on our face.
Everybody agrees that Maven is really painful, and m2e is even worse :-O
Yes, I cannot count how many times I had to:
1. refresh projects in eclipse (because errors were reported where they don't exist)
2. after the 1. doesn't help: select-all-projects > right-click > Maven > Update Project ...
3. sometimes, remove and (re)import everything when 1 and 2 don't help
Just as a side question (and apologies if this has been covered in a thread which I missed), was Buck chosen for any particular reason to try over another build tool? For instance we use Gradle for our builds of our application - would that be suitable for the build process for instance?