Conor,

At 11:02 15.03.2001 +1100, Conor MacNeill wrote:
>Ceki,
>
>I would like to give you some feedback on the common directory layout
>http://jakarta.apache.org/site/dirlayout.html
>
>This is mostly from my Ant perspective and somewhat from my impression of
>some other common practices in the Jakarta sub-projects. I do realize that
>these are just recommendations.
>
>docs directory
>=================
>I have noticed a trend to put the sub-project's web pages into this area. I
>wonder is that is a good thing since the web pages and the user
>documentation are two different things, IMHO. The web pages are potentially
>much more ephemeral than the product documentation that accompanies a
>release. When you build a release, it may not make much sense to include
>that ephemeral information (such as sub-project news) with the project docs.
>
>For Ant, I made a separate directory for the webpages (webpage). I had to do
>this anyway since there was already an index.html file in the Ant docs
>directory, although I have subsequently moved that.

As Jon pointed out earlier, I do not see the advantage for distinguishing between 
documentation and the web pages. It is quite pleasant to be able to browse a project 
web site locally on a file system without requiring a network connection.

>build directory
>================
>Many of the Jakarta projects put the build files in the project's root
>directory and use the build directory for build results, such as build
>classes which will be jarred up into the distribution

So by build/ you actually mean the dist/ directory of the dirlayout.html document. As 
far as I can see there is nothing wrong with that except that if we make a choice 
regardless of what it is we should stick to it, a bit like indentation I guess.

>build/lib
>==========
>If this is a non-binding recommendation, I don't see why it supports two
>locations to put the binary jars. It should either be lib or build/lib,
>IMHO.

Jon, explained that the build/lib is for building (compiling) and lib/ for runtime. I 
confess that I don't really understand the difference... See also the last paragraph 
of this note.

>dist
>=========
>I believe this should be a distribution "image" and it is therefore not
>really appropriate to place the distribution binaries (.zip, .gz files) in
>this location. For Ant, I create the distributions into a directory called
>distribution. It contains the source and binary distributions, the latter
>being equivalent to the dist directory.

Why are you making a distinction? What's wrong putting the distribution images, src, 
birnary, documentation or otherwise in dist/ and the javac generated classes under 
dist/classes?  


>dist/classes
>=============
>I don't believe we want generally want raw classfiles in the dist directory.
>Many projects put this into build/classes and place just jars in the dist
>directory.

Why? What's the rationale? Moreover, in the classes directory there might be more 
classes than in the jars.

>Other
>======
>
>I think that there should be a recommendation that any file/dir not under
>CVS control should go into the .cvsignore file.

There is no need to adding any files to .cvsignore if you add files to CVS control 
individually as in

> cvs add x.java y.java

instead of

> cvs add *

or am I missing something? 

>Do we want to make recommendations about the structure of the dist
>directory? This is what end-users will actually use and there may be
>benefits in a common approach here too. In Ant, for example, we create a
>dist/bin directory to contain scripts and executables useful for running
>Ant. we also place all generated jars in the dist/lib directory. Perhaps
>they are similar or the same as these recommendations.

Restricting the dist/ directory to the binaries that the end-users will actually use 
is a nice abstraction imho. 

How about:

dist/lib   for generated jar files and extraneous libs
dist/bin/   for scripts (generated or not)
dist/image  for actual project distributions (tar.gz or zip files)


The project distribution files are for those that actually make releases not for the 
casual user Jon Doe.

As I understand it, there will be build/lib for libraries used only during build and 
not during runtime, and dist/lib  for libraries used in both build time or run time. 
(dist/lib is perhaps what Jon meant by lib/)

Is that reasonable? Cheers, Ceki
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to