Research_guidelines

Dirk’s Guidelines for Project Code Repositories

Safe, Portable, Reproducible, Robust and Literate

Projects need to be Safe

Projects must prioritize safety in terms of data handling, ethical considerations, and compliance with legal and institutional standards. All members of Dirk’s Project teams must read and follow MSU usage guildines.

Projects needs to be Portable

Portability means that the project can be moved between users and systems.

Projects need to be Reproducible

Reproducability means that the code generates the same results for everyone. This allows people to start where someone else leaves off.

Projects need to be Robust

Robust means that the code isn’t sensitive to small changes which will make it easy to update.

Projects need to be Literate

Literate means that the project is well documented and communities what it is supposed to do and why.

AI / LLM Usage in Projects

LLMs (such as ChatGPT, Claude, Copilot, and similar tools) may be used as part of project development. These tools can be helpful for brainstorming ideas, debugging code, explaining concepts, and generating initial drafts of implementations or documentation. However, LLM output should always be treated as a starting point, not a final solution.

Code should prioritize simplicity and clarity. LLMs often produce solutions that are more complex than necessary, so users of LLMs are expected to simplify generated ideas, remove unnecessary abstractions, and prefer direct and readable implementations. Good engineering practice favors solutions that are easy to understand, explain, and modify.

If an LLM meaningfully contributes to a commit, include a brief note in the commit message using:

LLM: short description of how it was used

This helps preserve a clear development history and makes it easier to understand how ideas evolved over time.

For example, an LLM may help identify a bug, suggest an initial approach that is later simplified, or assist in debugging a specific issue. In all cases, the final implementation should reflect the developer’s understanding and design decisions, not just generated output.

The key principle is that LLM output is part of the design process, not the final artifact. The quality of the work is determined by clarity of reasoning, simplicity of design, and correctness of implementation—not by the use of AI tools.

Use Git as Git was intended

Use Jupyter as Jupyter was intended

NOTE: There are exceptions to every rule. However, it is important to understand why the rule exists before you can understand when it is okay to make an exception.


Written by Dr. Dirk Colbry, Michigan State University Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.