Hello Roman,
I think I will include usecases and what I think is simplicity for the developer.
So first scenario (or community scenario): Plugin developer
A user wants to develop a plugin for Eclipse Che. First, it shouldn't have to download or clone the source of Eclipse Che. (it's like when developing a webapp, you're not downloading Tomcat sources or Wildfly or TomEE to begin)
So what is required in maven world for something easy for the developer of the plugin : having a maven archetype for creating a plugin + BOM (so that all dependencies are set for him)
Also it needs to include a maven-plugin in the plugin-lifecycle : or better set packaging to 'eclipse-che-plugin'. Then the eclipse-che plugin is launching the assembly with the plugin inside.
to sumup : I create my plugin with an archetype and I use 'mvn eclipse:che start' for example and voila I've my custom IDE including my plugin
I should also be able to create my plugin using online Eclipse Che (like proposed by
codenvy.com) so I do all stuff remotely without installing something on my computer.
In this usecase, we've seen that we don't need to clone the sources of Eclipse Che.
another scenario: Eclipse Che developer
in that case, we may be either developing a plugin (so we can use the first usecase) or the API/server side.
So for server side, we should only have to clone platform-api component and then we could run this project that will provide server side components.
We should do also like we do for other subprojects. We can specify the remote host when using a client component.
So for example I could run a local IDE using any remote server
So if there are 5 developers that need to use a new API as consumers, these 5 persons could work without the need to recompile the server API implementation, they could just use it remotely.
So in that case we don't need also to clone all repositories in order to work and we have something very simple.
In my two usecases, mave artifacts are also provided by Nexus instance so I don't need a all-in-one repository
about your #2 point
you think that plugin should be all gathered to an external assembly while I think that each plugin could be run directly from it's location. In my case I just have to specify the dependency (bom) of my Eclipse Che version for which I need to work.
Also I don't see problem in automation because releasing a new assembly can be automated.
About your point #3 I think it's because development process is too complex as you are still rebuilding the whole stuff (and then one or multiple repository is not changing much) while I say that we may work by only using and recompiling a subpart of the projects. (Decoupling client and server or using different remote from local che IDE)
Florent