Razvan00Rusu / SOMAS2022-Team6

Self Organising Multi Agent Systems 2022 Team 6
Mozilla Public License 2.0
2 stars 0 forks source link

Self Organising Multi Agent Systems 2022

Specifications

Programming Language

Get Started

Quick Start

git clone git@github.com:SOMAS2022/SOMAS2022.git
cd SOMAS2022
make

If running a team experiment, eg for team 0, set the MODE env variable in .env

MODE=0

Project Structure

Following some Golang Standards [1] , [2] and previous year project structures (2021)

.
├── cmd
│   └── (Executable Outputs)
├── docs
│   └── (Documentation Files)
├── web
│   └── (Frontend/Backend Implementation)
├── pkg
│   └── infra
│       └── (Infrastructure Implementation)
|       └── teams
|           └── (Individual Team Agents/Experiments)
├── .env (Environmental variables for Infrastructure)
└── scripts
    └── (Automation/Execution scripts)

Project Management

Contribution Guidelines

A lot of these guidelines are from the SOMAS2021 and SOMAS2020 repos :)

Coding Rules

  1. You're encouraged to use VSCode with the Go extension.
  2. Trust the language server. Red lines == death. Yellow lines == close to death. An example where it might be very tempting to let yellow lines pass are in structs:
type S struct {
    name string
    age  int
}
s1 := S {"pitt", 42} // NO
s2 := S {"pitt"} // NO (even though it initialises age to 0)
s3 := S{name: "pitt", age: 42} // OK, if we add fields into S, this will still be correct
s4 := S{name: "pittson"} // OK if `pittson`'s age is 0
  1. Write tests where required. There are many guides online on how to do this in Golang. Tests will be run alongside CI when you pull into the main repo. If anyone breaks anything, it's easy to observe that if you have tests. Otherwise, your code will be broken unknowingly.

  2. DO NOT TOUCH code you don't own unless you have a good reason to. If you have a good reason to, do it in a separate PR and notify the owners of the code.

  3. Do not use panic or die - return an error instead!

  4. Do not use system-specific packages (e.g. internal/syscall/unix).

  5. Use the superior errors.Errorf to create your errors so that we have a stack trace.

Code Reviews and PRs