Skip to content

Copyright and Citation Info

[email protected] edited this page May 26, 2021 · 2 revisions

Copyright & citation info

The HOW TO CITE and COPYRIGHT AND LICENSE used to not be included in models stored in the GitHub repository. As of June 2015, they are (see https://github.com/NetLogo/models/pull/67 for details).

Coded information about how to generate these sections is now stored as an HTML comment at the very end of the info tab. E.g.:

<!-- 2008 NIELS Cite: Sengupta, P. -->

We call this the "legal snippet". You shouldn't have to touch it yourself.

What it means for you:

  • If HOW TO CITE and COPYRIGHT AND LICENSE sections are already there, don't touch them. If you make any accidental changes, an automated test will complain when your model is pushed back to the repo. (No big deal. We'll just roll back the changes.)

  • If it needs to be changed, tell the current Models Czar about it. We'll take care of modifying the legal snippet and/or the generation script.

  • If it's a new model, don't put anything there. We'll take care of it.

There are five pieces of information that are automatically generated and checked for library models. One is:

  • The copyright notice at the end of the code tab.

The other four are in the info tab:

  • The HOW TO CITE section.
  • The COPYRIGHT AND LICENCE section.
  • For IABM Textbook and Alternative Visualizations models: the ACKNOWLEDGMENT section.
  • For IABM Textbook that are simplified versions of regular library models: the last part of the CREDITS AND REFERENCES section.

All this information is stored directly in the model file.

Here are the main things about which you need to know:

  • The legal snippet is needed to specify some of this information.
  • Once you have a legal snippet, this information can be automatically generated using the Notarizer.
  • Once the information is generated, automated tests check that it is not accidentally modified.

The legal snippet

(Note: before https://github.com/NetLogo/models/pull/54, things were very different. This page describes the New Way.)

The legal snippet tells the Notarizer and the automated test what copyright and citation information should look like. The legal snippet should be the very last line of the info tab. It should be contained in an HTML comment tag and look something like this:

<!-- 2008 NIELS Cite: Sengupta, P. -->

Since it is an HTML comment, it will only be shown when the info tab is in "edit" mode.

Here is the regex used to validate the format of the snippet:

<!-- (\d\d\d\d)( \d\d\d\d)?(( \w+)*)( Cite: .*)? -->

The content of the legal snippet is as follows:

  • The copyright year of the model.
  • Optionally, a second year. This is only for models converted from StarLogoT. In this case, the first year is the original's copyright year (which becomes the NetLogo version's copyright year as well) and the second year is the year of conversion.
  • Zero or more special keywords (see below).
  • Optionally, the keyword Cite: , which should always appear last and be followed by a colon and the names of the collaborators: <lastname>, <firstinitial>. It is OK to add multiple names in a single line. Uri need not be included if is the only author or the last author: he will be added automatically. He needs to be specified explicitly only if someone else is the last author, e.g.: <!-- 2006 Cite: Wilensky, U., Rand, W. -->.

Special keywords

  • specialCE: in Code Examples directory, but gets normal copyright
  • MIT: created at MIT, Resnick ref
  • Steiner: Creative Commons license, includes code by James Steiner
  • MAC: credit the MAC grant
  • NIELS: copyright & cite info both include Pratim
  • ConChem: include how-to-cite info for the curriculum
  • Stroup: copyright & cite info both include Walter
  • Wilensky: created at MIT, Wilensky ref
  • 3D: 3D models that were directly converted from existing 2D models. They should already have the same name as the 2D model with 3D attached to the end.
  • ConChem: citation for the Connected Chemistry curriculum
  • PNoM: citation for the Particulate Nature of Matter curriculum
  • MTG: citation for the Mind the Gap curriculum
  • GenEvo: citation for the Mind the Gap curriculum
  • CTSTEM: citation and acknowledgements for any CT-STEM curricular model.
  • MAM****: acknowledgements for any models made in the Multi-agent Based Modeling course at NU (**** represents the year)
  • CC0: Public domain license.
  • BYSA: Creative Commons license.

Special cases

(This section needs a lot more detail. Look at the code if needed.)

Some models are automatically handled specially, depending on their name or the folder that they're in. Here is a short list:

  • IABM Textbook models;
  • Alternative Visualization models;
  • Code Examples (unless it has the specialCE keyword);
  • HubNet Activities (these automatically get the HubNet citation added);
  • Curricular Models (Most models in "Curricular models" are copied at release time from other directories. These copyrights only affect the models that are directly committed to "Curricular models".)

The Notarizer

There are three main reasons why you would need to run the Notarizer:

  • To notarize a new model;
  • To undo accidental changes to a model's notarized info;
  • To update all models after a change to the way they should be notarized.

In any case, it should be as simple as running:

sbt "runMain org.nlogo.models.Notarizer"

from the models repo.

There are no options to notarize a single model (although you could do it from the Scala console): since all models should always match the output of the notarizer, it's better to run it on all models and catch any discrepancies right away (usually with git diff). It runs quick anyway.

The automated tests

Any time a commit is pushed to the models repo, GitHub Actions should run the automated tests. Actions sends an email to the committer if tests fail, but you can also see the results at https://github.com/NetLogo/models/actions.

The tests we are interested in here are defined in https://github.com/NetLogo/models/blob/master/src/test/scala/org/nlogo/models/LegalInformationTests.scala.

If "Model file should be identical to output of Notarizer" fails, there are two possibilities:

  • The model is wrong. Just re-notarize it. (See above.)
  • The Notarizer is wrong. Ask the current Czar to fix it.