There are two important aspects to the programming style of the CNMAT MMJ Depot. First, it should be relatively easy for developers to add new patches and second, it should invite users to copy and paste elements into their own patches. To facilitate these, the number of required elements are minimal. Specifically:

  • Every patch must assert [cnmat:node/2994|authorship] (if known) and some form of [cnmat:node/2994|UC License or Disclaimer].
  • Every "main" patch must have a [cnmat:node/2995|help patch].
  • Every patch have the proper [cnmat:node/2992|extension] (eg .pat) and follow the [cnmat:node/2992|naming conventions].
  • Every patch or package must have it's own [cnmat:node/2993|version number].

Another important consideration is avoiding duplication. Whenever there are two copies of a piece of software, inevitably one ends up changing (like when a bug is fixed), and then the other copy doesn't get updated, so they go out of synch. (This is called "version skew" and it drives people like Matt and Michael crazy.) So never have two copies of the same patch in two different places in the Depot; instead move that useful patch into a module or the baseline. And before you add something new to the Depot, see if you can find something already there that does the same job.

Finally, we are recommending that patches accept control parameters in the form of OSC-style Max messages. This is especially relevant in Modules -- groovewrap is a good example.