Skip to content

Notes on Model Czar Process

Jacob Kelter edited this page Jan 28, 2026 · 5 revisions

Outline of the full process

  • Someone submits a model to czars@ccl.northwestern.edu usually someone affiliated with CCL/NetLogo but not always.
  • Pre-review: do a quick check for the following
    • They seem to be following the NetLogo Style Guide. If not, tell them to fix that and resubmit. If it is just one or two very small things, you could just fix it yourself.
    • Functionality is as described. If not, ask them to improve description.
    • The model is interesting, informative, and does not duplicate existing models in the library. If not, tell them it isn't a good fit for that reason.
  • Send to a reviewer: Ask someone in CCL/NetLogo to review (cc czars@ccl.northwestern.edu). Adapt Template Letter for Requesting a Review of a Model as appropriate.
    • We want to spread the work out, so don't always ask the same person
    • Ideally the person has some understanding of the disciplinary content in the model
  • Send review back to the modeler: If the model was accepted, sometimes there are changes that are requested before going into the library. The modeler should send back an updated model to czars@ccl.northwestern.edu and any other responses they have (e.g., maybe they disagree with a suggestion from the reviewer and then the Czar can decide what to do).
  • Add model to the repo once it has passed review by following the instructions below.
  • Update wiki: update both Changes Since Previous Release to include the newly added model and remove it from Models in Review or Coming Up if it was there.

note: all models library related communications should have czars@ccl.northwestern.edu cc'd on the emails.

Reviewing a Model Before it goes in the library

  • Sample Models go through full review (Reviewing a Model for the Library) and can be rejected from the library.
  • Curricular models should have a review, but the standard is lower (Curricular models are typically only submitted by CCL people)
  • Code examples don't need external review

Adding a model to the repo (after it has been reviewed)

  • Go to NetLogo/models repo
  • Make sure you are on the main branch
    • pull from main: git pull origin main
  • put model file(s) in the proper folder (e.g., Sample Models/Social Science)
  • Run the Notarizer to notarize the model
    • The Notarizer is what automatically fills in the HOW TO CITE and COPYRIGHT AND LICENSE information in the info tab based on an HTML comment at the bottom of the model. Those sections don't need to be there when the model is submitted, and if they are, they will get overwritten by the Notarizer. See here for details on the HTML comment and how to run the Notarizer.
  • Start running tests, and they will then remind you what steps to fix all the tests. (see Running tests section below)
  • After all tests are passing, then:

Running tests

To test all the models (often a good idea before adding the model):

  • run sbt to enter sbt (from the models repo)
  • run test

To test an individual model:

  • If the model name has no spaces in it, run testOnly * -- -Dmodel=name from inside sbt, where name is the name of the model
  • If the name has spaces wrap the whole command in double quotes: testOnly * -- "-Dmodel=name with spaces" where name with spaces is the name of the model.

To run a single test on all the models:

  • RuntestOnly *NameOfTest where NameOfTest is the filename of the test such as LegalInformationTests

More info at Automated Tests

Handing certain failing tests and exceptions to tests

Preview images for models library

There are three options for model previews

  1. manual (add a .png file)
  2. default - created by running the model
  3. create commands in "Tools > Preview Commands Editor" for commands to run to create preview image

If you are using option 2 or 3, need to go to .gitignore and add the model's .png preview, because it will be autogenerated and you don't want your local version won't get committed.

adding fake words that are okay

There are tests to check for spelling errors which will get triggered by "fake" worlds. If there is a fake word that is needed, go to models/src/test/resources/modelwords.txt and add it.

Adding exceptions forbidden primitives, lowercase exceptions

Some primitives are forbidden from the models library by default. If they are really needed in a specific model, add the model in src/test/scala/org/nlogo/models/CodeTests.scala.

Continuous time models

Models are required to use updates "On Ticks" by default. If the model really needs to view updates continuously, add it here to src/test/scala/org/nlogo/models/UpdateModeTests.scala.

Cross-listing models

If a model should be listed in more than one folder, update crossReference.conf with where it should be cross-listed. See Models Cross Referencing

Non-tick based updates

Models should use tick-based updates by default. If a model is an exception, add it to src/test/scala/org/nlogo/models/UpdateModeTests.scala.

Updating tests after a release

After a release, NetLogo version should be changed in test files:

Clone this wiki locally