The m2eclipse Project Proposal
Background and Overview
The m2e project is a proposed open source project under the Eclipse Technology Project. This document describes the content and the scope of the proposed project. This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process document) and is written to declare its intent and scope. You are invited to comment on and/or join the project. Please send all feedback to the http://www.eclipse.org/newsportal/thread.php?group=eclipse.technology.m2e newsgroup.
Maven is a widely used tool for build and release engineering which focuses on headless operation to facilitate automation. Maven is language agnostic and has tool chains for working with Java, .NET, and C/++. The Apache Maven project also has sub-projects which deal specifically with binary artifact repositories (Maven Artifact), SCM abstraction (Maven SCM), Testing abstraction (Maven Surefire), and rapid project prototyping (Maven Archetype). Eclipse is the most widely used IDE, users demand parity between the IDE and headless operations, and so it is natural that users are also demanding seamless integration between Maven and Eclipse. The m2eclipse project's primary focus will be creating this seamless integration between Maven and Eclipse, and we would like to bring this effort to the Eclipse Foundation.
The longest standing effort to unify the Maven and Eclipse worlds has been m2eclipse project at Codehaus. The m2eclipse (m2e) project has rich integration with Maven features, a large community of users, and collaboration with key Maven community members responsible for critical pieces of technology. Examples include the Maven Embedder (Jason van Zyl), Archetype (Jason van Zyl, Raphael Pieroni), and Proximity (Tamas Cservenak). The m2eclipse lead developer, Eugene Kuleshov, is also a committer on projects like Subclipse, and Mylyn which affords us the opportunity for great integration with these tools. So from the perspective of diversity, the m2eclipe project is positioned to create solid integration between Maven and Eclipse.
- Extensibility: We recognize both the common need for Maven tooling infrastructure and the desire to extend the tools in new and innovative ways. To support these efforts, our components will be designed for, and make good use of, extensibility mechanisms supported by Eclipse.
- Community Involvement: Success for m2e, as with other eclipse.org projects, is as much a factor of community involvement as the technical merit of its components. We strongly believe that m2e will achieve its full potential only as the result of deep and broad cooperation with the Eclipse community. Thus, we will make every effort to accommodate collaboration, reach acceptable compromises, and provide a project management infrastructure that includes all contributors, regardless of their affiliation, location, interests, or level of involvement. Regular meetings covering all aspects of m2e, open communication channels, and equal access to process will be key areas in driving successful community involvement.
- Transparency: As with all projects under the eclipse.org umbrella, key information and discussions at every level - such as requirements, design, implementation, and testing - will be easily accessible to the Eclipse community.
Short Term Goals
- Execution of Maven inside Eclipse with an in-process, and out-of-process model
- Integration with Maven repositories
- Rapid project creation using Archetype and extensible project customization for other Eclipse tools
- Headless builds for OSGi-based projects using Maven
- Create services and extension points to allow 3rd parties to access all of Maven's capabilities
- Project materialization using Maven metadata
- Intuitive POM editing and refactoring
- Dependency visualization and analysis
- PDE, WTP, and Mylyn Integration
Long Term Goals
- Full bridge from Maven's runtime to Equinox's runtime (Plexus to Equinox bridge)
- Eclipse plugin deployment to Maven repositories
- Eclipse provisioning and updating from Maven repositories
- Natively building OSGi-based projects (look mom, no pom.xml)
The m2eclipse project currently has rudimentary integration which allows the issueManagement element of Maven's POM to help bootstrap a typical developer's Mylyn setup. We have many plans for richer integration and look forward to working with the Mylyn team.
The m2eclipse project would like to work with the P2 team to provide integration between Maven repositories and P2. This would allow provisioning runtimes and Eclipse environments from Maven repositories that have been populated with OSGi bundles and Eclipse plug-ins.
The m2eclipse project would like to work with the PDE team to create headless build support for OSGi bundles and Eclipse plug-ins from Maven. We have an initial first form on this system in the Tycho sub-project of m2eclipse that was created by Tom Huybrechts. This initial form requires a POM and some magic swizzling of Eclipse installations, but we would ultimately like to provide a way to directly build native PDE projects with Maven.
The m2eclipse project being driven by its users needs to provide WTP integration. It is one of the popular requests from users. Raghuraman Ramaswamy has prototyped some parts of WTP integration that we plan to include with m2eclipse. We would really like to work with the WTP team to provide first-class integration between Maven and WTP.
- Ed Merks (IBM)
- Chris Anisczcyk (IBM)
The initial committers are:
- Eugene Kuleshov (Sonatype)
- Wes Isberg (Sonatype)
- Dmitri Platinoff (Sonatype)
- Jason van Zyl (Sonatype, Maven Founder)
- Oleg Gusakov (EBay)
- Igor Fedorenko
- Hervé Boutemy (Maven Committer)
- Raghuraman Ramaswamy (Xebia, WTP Integration)
- James Ervin (Eclipse Committer, Groovy Monkey)
- Tom Huybrechts (AGFA)
- Vincent Siveton (Maven Committer)
- Lukáŝ Křečan
The following projects have expressed interest using the tools, contributing ideas, guidance and discussion. Key contacts listed.
- AppFuse (Matt Raible)
- Codegear (Ravi Kumar, Karl Ewald)
- E*Trade (Durai Arasan)
- EBay (Oleg Gusakov)
- Intuit (Gill Clark)
- IONA (Oisin Hurley, Bruce Snyder)
- LinkedIn (Arnold Goldberg)
- MuleSource (Ross Mason, Dan Diephouse)
- NexB (Philippe Ombrédanne)
- Qualcomm (Mike McSherry)
- Webtide (Greg Wilkins, Jan Bartel)
- XWiki (Ludovic Dubost, Vincent Massol)
- Polarion (Igor Vinnykov)
The vast majority of the work done on m2eclipse thus far has been sponsored by Sonatype, but we are rapidly gathering a following and foresee many of the interested parties getting involved in the development to benefit their organization, or integrate with their commercial offerings. Five of our committers are actually non-Sonatypers so we are already achieving some diversity.
We have the largest community of any Maven/Eclipse integration project, we get more patches then we can deal with, and we are starting to get substantial contributions from the community. The WTP integration from Raghuraman Ramaswamy, the Maven service API developed by Oleg Gusakov and James Ervin, and the Subversive integration for project materialization created by Polarion are the first examples of this type of community involvement. We expect a lot more community involvement in the near future.