..
    This file is part of Invenio.
    Copyright (C) 2017-2018 CERN.

    Invenio is free software; you can redistribute it and/or modify it
    under the terms of the MIT License; see LICENSE file for more details.

Overview
========

The goal of the maintainer system is to share the load of maintaining Invenio,
spread Invenio experise and mentor new contributors. Overall maintainers are
key to ensuring that Invenio has a welcoming, responsive, collaborative open and
transparent community.

The maintainer system is designed to allow contributors to progressively take
more and more responsibility in the project, while allowing for mistakes and
providing contributors with training, support and mentorship they need in order
to perform their tasks.

What is a maintainer?
---------------------
Maintainers are first and foremost service people. They help drive Invenio
development forward and ensure newcomers as well as long-time contributors have
a great experience when contributing to Invenio, which is key to Invenio's
longterm success.

Maintainers are not only developers. We also need maintainers for translations,
the website, forums, interest groups etc.

**Taks:**

- Help contributors get their contributions integrated in Invenio.
- Answer questions and help users in e.g. the chat rooms (see
  :ref:`communication-channels`).
- Manage issues, assignments and milestones.
- Review and merge pull requests.
- Prepare releases.
- Participate in feature development, bug fixing and proactively verfies if
  nightly builds are failing.
- Be the domain expert on a specific topic (e.g. know the architecture of a
  module and how it fits into the rest of Invenio).
- Help scout for and train for potential new maintainers.

What is an architect?
---------------------
Architects are like normal maintainers, they just maintain many more
repositories and have larger overview over the Invenio architecture and
ecosystem. Architects shapes and drives the overall Invenio technical
architecture.

**Tasks (in addition to maintainer tasks):**

- Provide mentorship for maintainers.
- Determine the overall Invenio architecture and ecosystem and ensure coherence
  thoughout the Invenio development.
- Be the Invenio experts and know of use cases and interdependencies between
  different modules.
- Signs off on new releases in their respective repositories.

Becoming a maintainer
---------------------
Don't forget: being a maintainer is a time investment. Make sure you will
have time to make yourself available. You don't have to be a maintainer to
make a difference on the project!

Still sounds like something for you? Get in contact with one the Invenio
product manager, one of the architects or one of the project coordinators. They
will help you through the process. See :ref:`communication-channels`.

Stepping down as maintainer
---------------------------
Don't have enough time? Changing jobs? No problem, all we ask is that you step
down gracefully. Try to help find a new maintainer (if you don't alrady have a
co-maintainer) and help hand-over pending tasks and knowledge to the existing
or new maintainers.

As soon as you know you want to step down, please notify the Invenio product
manager or one of the architects team members so we can help in the transition.
