This page describes some ideas we have for the Workspace components in Eclipse 4.0.
Disclaimer: What follows is not to be considered a commitment to address any of the mentioned issues in 4.0. It is only meant as a place to discuss the possibilities.
Eclipse File System
Push Down IResource functionality
The Eclipse File System (EFS) was introduced in Eclipse 3.2 and is used as the file abstraction on which the IResource model is based. There are other facilities available at the IResource level that could be pushed down to the EFS level, including:
- local history
- editor associations 120602
- session and persistent property caches
- deltas/change notification
- repository providers
In addition, it would be nice to have transaction support at the EFS level
Decouple Workspace from Client/UI
Currently, the Eclipse workspace and its related facilities are run in the same executable as the customers of the workspace including the UI. We would like to investigate the possibility of decoupling the workspace functionality from its clients in order to support the following things
- Support access to multiple workspaces simultaneously. Whether being run in the same executable or a separate process, it would be desirable to work with multiple workspaces within a single client UI without suffering the overhead of the current Switch Workspace operation.
- Support remote workspaces (e.g. remote build and search). In some cases, the file resources being worked on are not located on the client machine. In these cases, it would be beneficial to also have workspace related functionality, such as build and search, run on the server where the workspace resides.
- Decouple the concept of the workspace w.r.t the application from the concept used by the Resources plug-in. Currently, the workspace concept is overloaded to mean both the data area for the running application and the default root for projects.
Support for multiple workspaces also has the attribute that it allows developers to divide their work into isolated units (i.e. a change in a particular workspace would only need to build the projects in that workspace.
Flexible Project Organization
Although the Eclipse project model has evolved over the lifespan of Eclipse, there are still several restrictions (see bug 35973). Here is a list of some things that are not currently supported by the Eclipse Project model.
- sharing of settings above the project level but below the workspace level (or through project associations as indicated in bug 202263.
- repository root above the project level but below the workspace level
- separate name spaces within a single workspace to support development on multiple project versions (or would this be solved by support for multiple workspaces). Another aspect of this is to be able to easily identify, when multiple copies of the same project are available, the desired instance of a Java class.
- configure location of project meta-data either at the workspace level or at some level above the project(bug 78438)
- Support scenario where two source folders within a single project can have a one way dependency (comment 54 of bug 35973)
- Ensure Maven2 is well supported. This will most likely involve support for nested projects in some form.
Currently in Eclipse, repository providers are mapped to a project. This works well in many cases but is problematic if a project contains links from other repositories. In this scenario, only the repository provider associated with the project can contribute actions. Possible solutions include:
- the ability to associate a repository provider with a project or link root.
- the ability to associate a repository provider with the underlying EFS which would require repository providers to use a custom sandbox EFS for their projects (e.g. all projects mapped to CVS would have a target EFS that was provided by the CVS client. Such an EFS would wrap the local file system EFS).