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