[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[news.eclipse.technology.kepler] Thoughts on a Common Project Model

User-Agent: Unison/1.7.9

We have been doing some thinking on creating an extensible common project model.

Why do we need a common project model?

A large part of providing a holistic view of the community resources and technologies in play within a project is understanding broader information about the project. The Maven styled pom.xml adds a rich set of information that can be used to understand both the structure of the project, its dependencies but also additional information that would support a developer looking to work in a loosely coupled manager with a project.

With collaboration at the heart of Kepler we first need to be able to create a common set of meta-data from which we can work - linking out to existing Eclipse projects where applicable (ie. Mylyn or the SCM projects). This would benefit each of the toolings - and also we would be able to leverage their use within an Eclipse instance to help build a common collection of meta-data (an example being when you share a project over SCM that would enable the common model to gather information about the source repository).

Thoughts on the implementation are as follows:

a) There is a number of sources of project information currently in existence within projects, examples would be PDE files, MANIFEST.MF, .settings of the projects and also technologies such as Apache Maven.

b) Creating a single fixed common project model would be difficult as different tools not only provide difficult levels of information there is also information provided by some tools that are not provided by others.

c) We should look to identify the core aspects that we believe a common project model could hold - and then provide points where other types of meta-data can simply be extended from that.

d) We would need to provide a suite of converters that would allow one or more sources to be used to generate a representation of the common project model. This might mean that you could pass a project in Eclipse to the conversion and it would identify that meta-data is available from say PDE and Maven or Maven and .classpath. It would then allow these converters to build a representation of the common model based on the sources.

d) The extensions would be understood by the converters such that a simple .project might be able to provide core information (project id) and then an additional facet (such as source directories). While a Maven pom.xml would be able to provide core information (projectId), source structure facets and also community facets such as mailing lists etc.

e) Each converter would register which facets it is capable of both creating from its source meta-data and also which ones it is capable of storing.

f) A common project editor would allow you to then source this core information (including details of the converters) you could then add additional facets - these would then be stored in a Kepler project file.

Based on this concept we are thinking that the common model could be built as a core XSD with others importing the core and adding to it. We'll look to post information on the example schema, though using a schema would allow us to build the model using EMF for use within Eclipse.


A couple of questions for people about terms -

Is Common Project Model the right term?

Is using the term Converters - I have been wondering if this is a part of being adaptable? ie. can you adapt from whatever to this model? though the idea of being able to determine what facets can be adapted and what facets you can't handle would make this a little more complex?

Also is the term facet good - it does clash with the WTP facet concepts?

As always we are very welcoming of input and thoughts :)

Cheers

P