Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 321708

Summary: Modularize XMPP provider WRT to remoteservices and datashare dependencies
Product: [RT] ECF Reporter: Markus Kuppe <bugs.eclipse.org>
Component: ecf.providersAssignee: Markus Kuppe <bugs.eclipse.org>
Status: RESOLVED FIXED QA Contact:
Severity: enhancement    
Priority: P3 CC: slewis
Version: 3.3.0   
Target Milestone: 3.4.0   
Hardware: All   
OS: All   
Whiteboard:
Bug Depends on:    
Bug Blocks: 321691    
Attachments:
Description Flags
split provider.xmpp into provider.xmpp, xmpp.remoteservice, xmpp.datashare
none
mylyn/context/zip
none
frament projects
none
mylyn/context/zip none

Description Markus Kuppe CLA 2010-08-04 08:43:43 EDT
provider.xmpp depends on remoteservices/provider.remoteservices as well as datashare/provider.datashare just to implement an adapter that gets activated iff consumers use the xmpp provider for remoteservices or datashare. Following the divide and conquer metapher, those two dependencies should be refactored into fragements that allow consumers to add remoteservice/datashare functionality at deploy time.
Comment 1 Markus Kuppe CLA 2010-08-04 08:47:21 EDT
Created attachment 175833 [details]
split provider.xmpp into provider.xmpp, xmpp.remoteservice, xmpp.datashare
Comment 2 Markus Kuppe CLA 2010-08-04 08:47:23 EDT
Created attachment 175834 [details]
mylyn/context/zip
Comment 3 Markus Kuppe CLA 2010-08-04 08:47:45 EDT
Created attachment 175835 [details]
frament projects
Comment 4 Scott Lewis CLA 2010-08-04 12:27:38 EDT
I don't have any fundamental objections to modularizing the xmpp provider, but I want to ask a couple of questions:

1) What's the main motivation/use cases for this?  Is it reducing the runtime size of the provider (for some uses)...use on the server...just reducing dependencies...something else?  One possible side effect of doing this is that for some consumers it creates the extra complication of having to build/deploy additional bundles.  I know this is easily overcome if we create features/repos for such use cases (and we should do so, I believe), but it still may make the xmpp provider slightly harder to use.

2) I'm not really sure about the use of fragments for this modularization.  It seems to me that having separate bundles would be better.
Comment 5 Markus Kuppe CLA 2010-08-04 14:49:08 EDT
(In reply to comment #4)
> I don't have any fundamental objections to modularizing the xmpp provider, but
> I want to ask a couple of questions:
> 
> 1) What's the main motivation/use cases for this?  Is it reducing the runtime
> size of the provider (for some uses)...use on the server...just reducing
> dependencies...something else?

Exactly, for consumers that just want to use XMPP as a presence container it's just to coarse grained. Dragging datashare and remoteservices in just to implement and adapter is disappropriate.

> One possible side effect of doing this is that
> for some consumers it creates the extra complication of having to build/deploy
> additional bundles.  I know this is easily overcome if we create features/repos
> for such use cases (and we should do so, I believe), but it still may make the
> xmpp provider slightly harder to use.

[0] is a new feature that contains provider.xmpp, smack as well as both fragments.

> 2) I'm not really sure about the use of fragments for this modularization.  It
> seems to me that having separate bundles would be better.

Contrary to bundles, fragments share the life cycle with their host and thus make deployment for consumers easier. Given that the two fragments just add an adapter, I do not believe we need a separate life cycle for them.

[0] http://git.eclipse.org/c/ecf/org.eclipse.ecf.git/tree/releng/features/org.eclipse.ecf.xmpp.feature?h=origin
Comment 6 Markus Kuppe CLA 2010-08-05 03:25:23 EDT
Fix released to HEAD
(If we find that the fragments need a bundle life cycle of their own, please reopen and I will turn them into bundles.
Comment 7 Markus Kuppe CLA 2010-08-05 03:25:25 EDT
Created attachment 175906 [details]
mylyn/context/zip
Comment 8 Scott Lewis CLA 2010-08-07 12:15:52 EDT
(In reply to comment #7)
> Created an attachment (id=175906) [details]
> mylyn/context/zip

In my local workspace, I'm getting the following error

Description	Resource	Path	Location	Type
Project 'org.eclipse.ecf.provider.xmpp.datashare' is missing required source folder: 'src'	org.eclipse.ecf.provider.xmpp.datashare		Build path	Build Path Problem
Comment 9 Markus Kuppe CLA 2010-08-08 02:10:59 EDT
Although src/ exists in CVS, Eclipse's CVS implementation appears to skip empty folders. Thus I have just removed src/ from the .classpath/build.properties.