Hi Carlo and Malintha,
I am CCing java-devel so that this information can be easily pointed to in future, if needed.
Mikolaj has asked to be co-mentor on this one. He is the author of xmvn, which is a similar tool. Before we move on, we need to establish the scope of fmvn vs xmvn. If there is no differentiation then there is no need to work on fmvn. :-) For one I still see the main goal for xmvn to be 'simplifying packaging on Fedora' vs fmvn's 'build from a sanctioned repository'.
I think that there are many similarities. But first let me introduce XMvn.
XMvn is a project with similar, but wider scope than Maven FOSS Repository Extension (FRE). You can see its Maven-generated website [1], git repository [2] and github mirror [3].
I have never used FRE before, but I looked briefly at the code. From what I suppose XMvn can do all that FRE can. A short comparison follows.
Scope
FRE seems to have a very precise goal: resolve all dependencies from local repository. XMvn goes beyond that. Besides doing what FRE does XMvn also:
* allows to blacklist some artifacts (whenever they are used as dependency or plugin they are removed from POM during validation); this is especially useful for plugins (for eg. you don't want to use bugreport plugin to build Fedora packages, so it's best to ban it)
* provides MOJO to create JPP-style repository from artifacts in reactor (it creates layout that follows Fedora packaging guidelines, creating JPP depmap files and so on)
* provides information for building RPMs (like outputing list of files so they can be used in RPM %files section, or list of direct dependency artifacts that can be used to generate BuildRequires)
* enforce other rules when building projects (for example force minimal Java source format; older formats are not supported with newer JDKs)
* provides other useful tools (xmvn-resolve, xmvn-bisect)
Implementation details
Both FRE and XMvn are pure-Java implementations. They both provide Plexus components that override default Maven components and this way can redefine standard Maven behaviour. To ease maintenance XMvn tries to redefine as few Plexus components as possible and delegate real work to default Maven components.
Configuration
FRE is configured by defining environmental variables and system properties. Configuration of XMvn 0.4.0 and later is specified in XML format [4].
System-interdependence
Both XMvn and FRE are system-independent. They can be successfully used on non-Fedora systems. (For example I use XMvn on Debian.)
Licensing
XMvn is licensed under ASL 2.0 license, which is exactly the same as upstream Maven. FRE is licensed under BSD license. Although both licenses are good, in my opinion it's better to keep the same licensing as Maven itself (i.e. ASL 2.0).
Code style
XMvn uses maven coding guidelines, FRE uses different style. In my opinion Maven coding style should be followed when developing extensions for Maven.
XMvn is already packaged for Fedora (currently F-19+, but could be easily added to F-17 and later). It is behind the implementation of mvn-rpmbuild and mvn-local scripts as well as %mvn_build macro. All Maven packages in Fedora 19 and later are built with XMvn.
I think that FRE and XMvn have a lot of similarities. Instead of developing and maintaining separate projects we should combine our efforts. I am open for discussion, suggestions, RFEs and contributions.
Because XMvn has more generic approach and it's already packaged and used in Fedora, I think that any future development should rather focus on XMvn.
Please let me know what you think and correct me if I'm wrong somewhere about FRE. I have never used it before so thanks for understanding.
-- Mikolaj Izdebski IRC: mizdebsk
[1] http://mizdebsk.fedorapeople.org/xmvn/ [2] http://git.fedorahosted.org/git/xmvn.git [3] http://github.com/mizdebsk/xmvn [4] http://mizdebsk.fedorapeople.org/xmvn/site/xmvn-core/config.html