Experience in giving DFDL training via daffodil is that our standard schema project layout <https://daffodil.apache.org/dfdl-layout/> is much too deep (directory wise) for many users to conveniently navigate and use. It gets in the way of learning.
Our layout was designed to follow sbt conventions that enable automated dependency management, packaging, etc. It is easy to use if you are accustomed to using an IDE like Eclipse or IntelliJ. It is also extraordinarily valuable (and underappreciated) that 'sbt test' does a built-in-self-test on a schema, and that 'sbt publishLocal' creates a Jar of a DFDL schema for managed dependencies use between schemas. But new users are mostly coming to DFDL/Daffodil from a command-line prompt and a text editor (e.g., VIM). I am wondering if we can have our cake and eat it too, without too much added sbt complexity, and without losing 'sbt test' and 'sbt publishLocal' working their magic for us. E.g., what if a simplified layout was: mySchema/schema - takes the place of src/main/*. Also no package-style directory folder structure. mySchema/test - takes the place of src/test/*. No package-style directory folder structure. It would be optional if users want to user mySchema/test/data and mySchema/test/infosets to separate infosets and data, or just put all those files in the same place and use file extensions (.dat vs. .dat.xml vs. .tdml, etc.) to distinguish the kinds of content. Such a flattened tree structure requires that the schema file names are well chosen to be unlikely to conflict with other users chosen names, so a name like common.dfdl.xsd or main.dfdl.xsd would be no good as there is no package directory structure to make them unique. But names like common-mySchema.dfdl.xsd and main-mySchema.dfdl.xsd would still be quite convenient to use, particularly if the mySchema name is well chosen. (Note how I've put the unique part of the name first, so that name-completion will work most easily on command line.) I think this would still work with sbt if we simply override the default paths (and perhaps file patterns) used for specifying source and resources. Thoughts?