Making new modules available in an Odoo instance so they can be installed is something that newcomers to Odoo frequently find confusing. But it doesn't have to be so, so let's demystify it.

There are many Odoo modules available on the Internet. The Odoo apps store at apps.odoo.com is a catalogue of modules that can be downloaded and installed on your system. The Odoo Community Association (OCA) coordinates community contributions and maintains quite a few module repositories on GitHub at https://github.com/OCA/ .

To add a module to an Odoo installation, we could just copy it into the addons directory alongside the official modules. In our case, the addons directory is at ~/odoo-dev/odoo/addons/. This might not be the best option for us since our Odoo installation is based on a version-controlled code repository, and we will want to keep it synchronized with the GitHub repository.

Fortunately, we can use additional locations for modules so we can keep our custom modules in a different directory, without having them mixed with the official ones.

As an example, we will download the code from this book, available in GitHub, and make those addon modules available in our Odoo installation.

To get the source code from GitHub, run the following commands:

$ cd ~/odoo-dev
$ git clone https://github.com/dreispt/todo_app.git -b 10.0

We used the -b option to make sure we are downloading the modules for the 10.0 version.

After this, we will have a new /todo_app directory alongside the /odoo directory, containing the modules. Now we need to let Odoo know about this new module directory.