April 2008 -- This is a discussion about how the cooperation between the CAPS team and the NetBeans team can be improved.
High level issues
- Stability: we've experienced a number of broken builds and a number of instances where functionality no longer works going from one NetBeans build to the next.
- Plugin isolation: one plugin can easily affect the correct working of another plugin. Issues appear to be centered around the system classloader. Example: one plugin packages common-logging of an older version that stops other plugins to work correctly because they package and require the newer version. We're very concerned that CAPS customers will install third party plugins that will interfere with CAPS plugins. An example of this issue is this ticket. This ticket has been filed against NetBeans core.
- We like to be involved in architectural discussions and be aware of major changes before they happen. For example, the project sharability feature came as a surprise to many when it suddenly appeared in NetBeans. There is too much traffic on the mailing list to stay up to date efficiently.
- It's difficult to add facets to projects without changing the projects themselves. For example, JAXB is a facet of a project that allows the user to specify an XSD and when the project is built, it will generate the Java code and compile it. To add this facet, we needed to change every project that could use this facet, e.g. the EJB project, Web project and class library project.
- CAPS customers typically end up with hundreds of NetBeans projects for integration solutions. This is probably a different use than most pure software development. We need to add support to make the management of these large numbers of projects easier. See Specific features below.
Specific features
- Managing large number of projects: subprojects, hierarchical project structure support, or workspaces support as in Eclipse
- Supportability: Import/export: make it easier for a solution developer to zip up a project and send it to Support.
- Perspectives: Eclipse makes it easy for a partner to turn the IDE with a click of a button into the IDE that that partner wants the user to see; NetBeans shows too much stuff on the screen that distracts from what the partner wants to display, or from what the user wants to focus on.
- Projects often reuse artifacts from other projects, e.g. XSD, WSDL files. We should make this easier to accomplish.
- Java EE tooling: we have developed JCA support; this should probably be merged into the existing JMS feature in NetBeans
- Ability for modules to add dynamically generated source roots to Code completion classpath. A uniform API across Java SE, EJB and Web projects. ticket
- Ability for modules to add Palette items/category w/o impacting ones added by other modules. This is needed especially for Java Editor. ticket
- Ability for other modules to manage update their build scripts in nbprojct, imported in build-impl.xml, thru Ant build extension API. This is similar to updating build-impl.xml, like storing check sum and identifying whether user has customized the scripts. Not assuming modules will be generating the their build scripts using XSLT transformation is helpful.