the parrot directory structure is large and a bit disorganized.
let me give you some examples:
* build_tools/, util/, and tools/*/ each contain utility perl
  scripts. these should be grouped together under tools/, which
  already contains subdirectories
* there are multiple dirs containing C source code (charset,
  classes, io, etc.) these should be grouped together under src/
* the editor/ directory contains files for text editors and has
  a generated makefile. there is no reason for this to be a make
  target. a perl script should be created to replace makefile,
  and the dir moved with the other tool & utility scripts.
* imcc test files are not grouped with other tests (this is
  already on my TODO list and should be done RSN.)
i propose reorganizing the tree to improve clarity and cohesion.
here is an annotated picture of the current tree (extra info
<snip>ped as shown.)

. trunk
+---ast
+---blib
|   +---lib
+---build_tools                   # move to tools/build/
+---charset                       # move to src/charset/
+---classes                       # move to src/classes/
+---compilers
|   +---pge
|   |   +---PGE
|   +---tge
|       +---TGE
+---config
    <snip config/ subdirs>
+---debian
+---docs
    <snip docs/ subdirs>
+---dynclasses                    # move to src/dynclasses/
+---dynoplibs                     # move to src/dynoplibs/
+---editor                        # move to tools/editor/, get rid of
Makefile, convert it to perl
+---encodings                     # move to src/encodings/
+---examples
    <snip examples/ subdirs>
+---imcc
|   +---docs
|   +---examples
|   +---t                         # move to t/compilers/imcc/
        <snip imcc/t/ subdirs>
+---include
|   +---parrot
|       +---oplib
+---io                            # move to src/io/
+---jit                           # move to src/jit/
    <snip jit/ subdirs>
+---languages
    <snip languages/ subdirs>
+---LICENSES
+---ops                           # move to src/ops/
+---pf                            # move to src/packfile/
+---runtime
    <snip runtime/ subdirs>
+---src
+---t
|   +---compilers
|   |   +---pge
|   |   |   +---p5regexp
|   |   |   +---p6rules
|   |   +---tge
|   +---doc
|   +---dynclass
|   +---examples
|   +---library
|   +---native_pbc
|   +---op
|   +---perl
|   +---pmc
|   +---run
|   +---src
|   +---stress
|   +---tools
+---tools
|   +---dev
|   +---docs
+---types                         # move to src/types/
+---util                          # move to tools/util/


below is the modified tree, which groups related directories,
and reduces the number of top-level directories from 28 to 15.


. trunk
+---ast
+---blib
|   +---lib
+---compilers
|   +---pge
|   |   +---PGE
|   +---tge
|       +---TGE
+---config
|   <snip config/ subdirs>
+---debian
+---docs
    <snip docs/ subdirs>
+---examples
|   <snip examples/ subdirs>
+---imcc
|   +---docs
|   +---examples
+---include
|   +---parrot
|       +---oplib
+---languages
|   <snip languages/ subdirs>
+---LICENSES
+---runtime
|   <snip runtime/ subdirs>
+---src
|   +---charset                   # moved from charset/
|   +---classes                   # moved from classes/
|   +---dynclasses                # moved from dynclasses/
|   +---dynoplibs                 # moved from dynoplibs/
|   +---encodings                 # moved from encodings/
|   +---io                        # moved from io/
|   +---jit                       # moved from jit/
|   |   <snip jit/ subdirs>
|   +---ops                       # moved from ops/
|   +---pf                        # moved from pf/
|   +---types                     # moved from types/
+---t
|   +---compilers
|   |   +---imcc                  # moved from imcc/t/
|   |   |   <snip t/compilers/imcc/ subdirs>
|   |   +---pge
|   |   |   +---p5regexp
|   |   |   +---p6rules
|   |   +---tge
|   +---doc
|   +---dynclass
|   +---examples
|   +---library
|   +---native_pbc
|   +---op
|   +---perl
|   +---pmc
|   +---run
|   +---src
|   +---stress
|   +---tools
+---tools
|   +---build_tools               # moved from build/
|   +---dev
|   +---docs
|   +---editor                    # moved from editor/, no Makefile,
converted to perl
|   +---util                      # moved from util/


this work can and should be done one piece at a time to prevent
widespread panic. if this proposal is accepted, i will create
todo tasks for each unit of work. then, they can be assigned one
at a time, until the task is complete. of course, a realclean /
configure / make test cycle should be done after each change to
ensure it has gone smoothly.

thoughts?
~jerry

Reply via email to