We are pleased to introduce pmanage, a utility that leverages Robert Picard's project to efficiently detect when code needs to be run and avoid running it when it's not necessary.

At a high level, pmanage is a series of 4 ado-files: init ('initialize' a dofile), puse ('project use': import CSV/Excel/DTA), psave ('project save' to CSV/Excel/DTA), pexit ('exit' a dofile). These commands substitute respectively: 'clear'/'cd ...'/'log open ...', 'use'/'import delimited ', 'save'/'export delimited', and 'exit'/'log close ...'. By using our pmanage utility you let STATA intelligently decide whether dofiles that are called from a central or master dofile need to be run. Dofiles are run only if at least one condition is met:
  1. The code itself changed
  2. The inputs that the dofile uses changed
pmanage effectively acts as an API that communicates to STATA how input and outputs interact with each other. Our adofiles can be installed through ssc install pmanage. Or by cloning our open-source repository at https://github.com/economic-research/open-ado.

Three big advantages of using pmanage are:
  1. Speed: in our tests we've measured up to 70x speed improvements when our utility determines that no code needs to be run
  2. Allow collaborators in different computers to set local routes to directories without having to modify the code. As long as all input/outputs are in the same places relative to the root directory (the directory that contains the master dofile) you're good to go.
  3. Detect I/O errors: if your code uses an input that is generated later pmanage will detect that error and complain.

For our latest code, bug reports and contributions please check our repository at https://github.com/economic-research/open-ado

Sincerely,
Jose Andres Jurado