Contributing to the source code

Which files do I have to focus on?

Modifying the source code can seem daunting at first: this repo contains a lot of directories, subdirectories and files. Don't fear: this section will clarify which are the "important" files, i.e. the few files that actually do something — most of the files in here exist just because they're required by Django, or because they are static files needed by the HTML interface.

So here are the files that actually count:

Structure of the repository

To have an idea of the big picture, the repo is structured like this. The DBNsim directory contains the source code, while the docs directory contains all the documentation needed by the users, administrators and developers. (By "users" we mean the end users of the web app, while the administrators are users of the server (those serving DBNsim from a machine) and developers maintain the source code.)

The DBNsim directory contains two main subdirectories, which are actually Python packages (they have a __init__.py file that marks them as packages). They are:

More specifically, DBNlogic is a Python package that is totally independent from the rest of the application: you can use it as a command line library for handling and training DBNs, if you like. DBNtrain uses DBNlogic for satisfying the clients' requests and is itself a Python package.

DBNtrain is centered around the views module, where the developer has to define a function for each request (URL) that the server can accept; adding a function to views.py requires adding a line in urls.py, so that Django knows that a particular URL has to be mapped to this new Python function.

Things to do

If you want some ideas about how to improve DBNsim, here are some: