*Code*

   - github repo: https://github.com/djsegal/julz
   - (see readme.rst as well as included dummy Julia project)

*Summary*

Julz is a command line utility for creating ambitious Julia applications. 
Its goal is to remove many of the petty decisions involved in starting a 
project and establish a standard that can be adopted by the entire Julia 
ecosystem. In this way it channels Ruby on Rails’ mantra of “convention 
over configuration”: tell people where files should go, but allow them to 
tweak it if they so desire.

*Description*

The problem Julz attempts to resolve is architecting a Julia project that 
is resilient to both the frequent on-boarding/turnover of engineers as well 
as the mass accumulation of files. In this way, a person reading a codebase 
for the first time does not get bogged down by the sheer number of files 
that have accumulated over time inside a shallow depth src directory.

The way to alleviate this problem is to treat the src folder and the test 
folder as boxes that hold smaller boxes of like content. In a Julia 
context, this means that the src and test folder each have corresponding 
subdirectories for: methods, types, functions, macros, etc. Each 
subdirectory then has an associated generator command that can be used to 
make files of that format. For example, generating a Rational type with two 
integer fields from the command line would use boiler-plate templates to 
compile:

   - a working rational.jl file in the ‘src/types’ directory
   - an associated rational_test.jl in the ‘test/types’ directory

This may not seem like a big idea at first, but getting every project to 
adopt this level-deeper folder structure is the cornerstone to a successful 
framework. With it, packages can be created that expand on the native 
collection of data structures, i.e. to produce singletons, compilers, etc. 
Here, the addition of generators just make everything less user-error prone 
and promotes adequate test coverage of code.

Reply via email to