[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cdt-dev] CDT extensions Proposal

> 
> Hi Alain and David,
> I'm a bit uncertain of what the intent of the proposal is, at least in terms
> of the build model/build system. The documentation does not explain what
> deficiency the proposal is meant to address, nor whether it is being
> proposed as the "prefered way" to associate some, all, or just unique
> extensions with CDT projects.
> 
> More to the point, Doug asked the question that first question that I had
> when I saw the example of the QNX builder in your document: 
> 

The CDT extension proposal was not only targetting the builder, although
the example in the XML file was one presenting the builder.

> > I just made a quick pass through your proposal.  The first 
> > thing that came to mind was that it looks like some of what your 
> > are proposing here can be accomplished using Natures.  Certainly 
> > associating builders is usually done this way.  You could probably 
> > associate different tools with a project this way as well.  
> > Were there problems with Natures that you ran into?
> > 
> 
> David replied:
> 
> > Not quite the same as the nature since the extension behavior 
> > is not defined by its existent within the file but completely up 
> > to to one that put it there. The nature interface has a defined 
> > behavior wrt the project. The entries in the .cdtproject do not, 
> > its simply an extension point to project association.
> > 
> > The main idea behind this proposal is that as we define more 
> > extensions that fit a per-project use, then we have a mechanism 
> > that makes this very easy to do.
> > 
> 
> I am confused by this response. Natures associate tools with projects. That
> association exists on a per-project basis. Your extension points operate at
> the same level of granularity. I really don't see that you can make the case
> that we need a new mechanism on the basis of what they apply to. I do see
> that natures are a bit of a straightjacket since they get configured once,
> and the only way to "reconfigure" them is remove and add a new nature.
> That's a chore for some types of extensions. However, here are my concerns
> from the perspective of the build.
> 

The ".cdtproject" is not like the nature, it is a proposal to manage the
extension points on per project basis.  For example, the parser and help 
completion contributor are extensions points implementing particular modules
in the CDT.
# cat .cdtproject
...
    <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
    <extension id="com.qnx.tools.ide.doc.user.helCompletion" point="org.eclipse.cdt.ui.CCompletionContributor"/>

> 1. A builder needs information. The more work it has to do, the more
> information it needs. Clearly, converting between builders could be quite
> difficult depending on the "impedence mismatch". Storing the builder in the
> nature limits the number of ways a user can swap builders, so we (and other
> ISVs) have fewer use cases to support.
> 

The current proposal of the builder contains many extension points that can
be managed by the cdt-extension mechanims.  We just want to provide a way
to __ manage extension points ___.

> 2. If we have just introduced another way to associate a builder with a
> project, what does it mean if the user sets one builder in the nature and
> one as an extension? Which builder wins? Does removing the extension mean
> reverting back to the default? See point 1 for a small sense of the dread I
> am experiencing just thinking about this.

Maybe the proposal was not clear enough, the cdt-extension manages extension
points not builders.

> 
> 3. The way that natures work in team development is that the nature is
> configured once for a project, even if it is shared. I can see some users
> finding this a comfort and others a curse, but at least it makes sense; one
> person creates the project and configures its nature, and everyone else gets
> that project out of the repository, nature intact. How does your extension
> proposal work in a shared team setting?
> 

You are probably referring to the ICOwner class, the behaviour may look
similar to a the nature counterpart but its goal is to provide a way to reset
the default extensions for a project and also tie a platform to the project
which is currently use by the debug/launch.  For example a QNX project is :

Elf parser
QNX specific help contribution
platform qnx

if the user mucks with the settings(changing the binary parser) then we can
restore defaults. 


> This is my first thinking on your proposal. Maybe with a better
> understanding of what you want to do with this will make me feel better
> about how it will live and play with the build system.
> 

8-)
yes,  this is why we want to make proposals and make changes to the code
by iteration when having consencus/understanding.

To illustrate more, get the latest cvs, create a C project, bring in the
C editor the created ".cdtproject" and in the Property page change
the Binary parser extensiong from Elf <--> PE and see the ".cdtproject" file
adjust itself.

We have more scenarios coming later this week.