Skip to content

Newcomers Guide

Intended audience

The guide is intended as a crash course for new core developers of InvenioRDM with prior experience in running and installing InvenioRDM.

Scope

The guide covers how we collaborate, the essential communication channels and key tools we use.

Overview

Following is a quick overview over what you need to know in order to participate in the InvenioRDM development.

Join communication channels

Development iterations

We run iterations of 6 weeks and each iteration produces a new release. We use one sprint board per team to keep track of the current iteration.

We use a product roadmap in GitHub to keep track of high-level features and plan the release.

Board workflow

See board workflow

Iteration schedule

The high-level sprint schedule usually looks like this:

  • Week 1: Kick-off and design week.
  • Week 2-5: Development
  • Week 6: Integration, QA, testing
    • Tuesday: Feature locking.
    • Thursday: Release, deployment and announcement.
    • Friday: Review, retrospective & triaging of stale issues.

Daily tasks/meetings

You daily schedule looks like this:

  • Sprint notes: daily before the standup, please post your sprint notes into #rdm-sprint-notes channel.
    • Focus on blockers, tasks completed.
    • The sprint notes are very important for cross timezone collaborations.
  • Standup: daily at 14:15 CET on Discord #rdm-internal voice channel.

Developing with InvenioRDM

Setup your system

See Setting up your system

Tools

Invenio-CLI is the primary tool you'll use for development. See the CLI reference documentation. In particular, you'll need the following commands to install development versions of libraries in your InvenioRDM instance:

invenio-cli install ...
invenio-cli assets build
invenio-cli assets watch
invenio-cli assets install
invenio-cli assets watch-module

Above commands, works when you install development versions of modules into InvenioRDM (i.e. integration testing). Often, you'll work on a specific Invenio modules, these modules you'll usually work on in the following way:

cd ~/src/invenio-<amodule>
mkvirtualenv <amodule>
# postgresql,elasticsearch7 only needed for certain modules
pip install -e ".[all,postgresql,elasticsearch7]"
./run-tests.sh

Run tests uses docker-services-cli to boot up needed services (like database, cache and search engine). To run tests individually, you can use:

# Copy/paste the following line fro ./run-tests.sh
eval "$(docker-services-cli up --db ${DB:-postgresql} --search ${ES:-elasticsearch} --mq ${CACHE:-redis} --env)"
# Run single test:
pytest tests/test_somemodule.py::test_sometestfunc -s

Design

Architects

Invenio has four principal architects. All architects have:

  1. Previously designed and built at least one larger repository from scratch.
  2. Large knowledge of the existing codebase and vision of the project.

Architects are there to help you succeed in contributing, but also have a final say on all design choices made in Invenio (this is to ensure a coherent product and coherent decisions).

RFCs

All larger design work is subject to an RFC. Invenio RFCs are a communication tool, to:

  • Coordinate the design process
  • Document design decisions
  • Produce consensus among Invenio stakeholders

It's a collaborative process.