Hello Juergen, Karl, *

[instead of answering every individual mail, I collect here my opinions.]

* all code should be on a respository, this is better for development. Sources 
can be tagged and for every OOo release zip files can be generated for the API 
end-user

* Java sources and IDE's projects should be separeted on the respository; the 
projects should be only "skeletons", only containing project files; java 
sources should contain the sources and all common files (resources, config. 
files, etc.) This is the better way to maintain *only*  a set of sources and 
not one for every project type.

* for the API end-user, the zipped projects should contain ready-to-user 
projects: no separated sources, no need to download anything else.
This not only for the ease-of-use (relative sources may be confusing), but 
also becuase NB plugin (and Eclipse) does not support relative sources for UNO 
components.

This means:

* the packager zipping the projects will have to find a way to put all the 
separated sources inside the respective project

* the developers working on the source code and the projects development, will 
have to find a way to design the projects so that they are configured as if the 
sources where inside the projects (otherwise the projects won't work for the 
end-user). 

In Linux I've found the solution for the later using symbolic links: NB treats 
the sources as if they where inside the project, cvs does not mess with the 
symlinks (don't know how portable this is to other plataforms...)

For the packaging problem, I think the solution is in the repository design: 
with a structure like the following:

/api/examples/java/sources/$TYPE/$EXAMPLE_NAME
/api/examples/java/$IDE/$TYPE/$EXAMPLE_NAME

for example 

/api/examples/java/sources/text/DevGuideTextDocumentExamples
/api/examples/java/netbeans/text/DevGuideTextDocumentExamples
/api/examples/java/eclipse/text/DevGuideTextDocumentExamples

is very easy to write a script to copy everything from 
/api/examples/java/sources/$TYPE/$EXAMPLE_NAME to 
/api/examples/java/$IDE/$TYPE/$EXAMPLE_NAME

and while copying, the script can rename according to the respective IDE 
requisites; for example, the extension manifest must be named 
"uno-extension-manifest.xml" for the NB plug-in, ...

-------------------------------------------------------------------------------------


Another point for better maintenance is separating what's common in every 
sources: for UNO components, the component loader/registration code; for 
client applications, the installation finder and class loader code.

Something like the following could work:

/examples/java/source/common

with two folders

clientapp
unocomp

mmm...well about the later I'm not so sure, because the component registration 
code is different in NB plugin and Eclipse plugin, so they could also be in

/api/examples/java/$IDE/common/unocomp


-------------------------------------------------------------------------------------

Concerning the repository (and final zip) structure, I propose to group by 
application, where possible, and in the other cases follow the respective 
Dev's Guide chapter. For example:

examples/java/source|$IDE/writer
examples/java/source|$IDE/calc
examples/java/source|$IDE/drawing
examples/java/source|$IDE/database
examples/java/source|$IDE/chart
examples/java/source|$IDE/math

not applications, but forming a closed group are

examples/java/source|$IDE/forms
examples/java/source|$IDE/ucb
examples/java/source|$IDE/configuration
examples/java/source|$IDE/gui

the rest follow the Dev's Guide chapters

examples/java/source|$IDE/FirstSteps
examples/java/source|$IDE/ProfUno
examples/java/source|$IDE/Components
examples/java/source|$IDE/OfficeDev
examples/java/source|$IDE/ScriptingFramework


-----------------------------------------------------------------------------------

Concerning how many projects we should make out of the examples, IMHO one 
project for client appl. with a class with main method is a non-sense.

So I'd vote for grouping, where possible, the client appications in only one 
project/JAR. 

For example, all client apps. in 
/opt/openoffice.org/basis3.1/sdk/examples/DevelopersGuide/Spreadsheet

grouped in
examples/java/source|$IDE/calc/DevGuideSpreadsheetExamples

all client apps. in /opt/openoffice.org/basis3.1/sdk/examples/java/Spreadsheet

grouped in
examples/java/source|$IDE/calc/SDKJavaSpreadsheetExamples


In the future, new examples could be grouped in new projects, or in its own 
project, but for the existing examples this way makes clear where the example 
comes from (from the Dev's Guide, or from sdk/examples/java)

For UNO components, of course, it only make sense a single project for 
component.



Regards
-- 
Ariel Constenla-Haile
La Plata, Argentina


"Aus der Kriegsschule des Lebens
                - Was mich nicht umbringt,
        macht mich härter."
                Nietzsche Götzendämmerung, Sprüche und Pfeile, 8.

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to