Contributor Guide - magma/magma GitHub Wiki

Introduction

This documentation provides insights into the Magma project to help newcomers and established contributors to understand better how the community operates and how they can participate and contribute. If you are looking for documentation about how the software works please check out the documentation pages.

What is Magma?

Software

Magma is an open-source software platform that gives network operators an open, flexible, and extendable mobile core network solution.

In more approachable terms, Magma is a collection of software that makes running things like a cellular network affordable and customizable. With Magma's current rate of growth, increasing stability and reliability of the platform are all huge wins.

There are three main components in the Magma software platform: Access Gateway (AGW), Orchestrator (Orc8r), and Federation Gateway (FeG).

Access Gateway

The AGW provides network services and policy enforcement. In an LTE network, the AGW implements an evolved packet core (EPC), and a combination of an AAA and a PGW. It works with existing, unmodified commercial radio hardware.

More generally, the AGW defines datapath rules for connecting subscribers through to the Internet. It pulls configuration from Orc8r, sets datapath rules, manages charging and accounting, reports state and metrics to Orc8r, and more.

Orchestrator (Orc8r)

The Orc8r is a centralized controller for a set of networks. In SDN terms, Orc8r handles the control plane. This means one Orc8r serves many gateways -- pushing configuration to the gateways and pulling state and metrics from the gateways.

One of the functions of the Orc8r is to expose a management REST API. The REST API is defined as an OpenAPI specification (aka Swagger specification), and made available to operators over mutually-authenticated HTTPS. The Orc8r also exposes a series of gRPC services which gateways can call to report state, receive config updates, etc.

Federation Gateway

The FeG serves as the interface to existing operator cores, affording a modern, flexible interface on top of existing protocols and architectures.

Community

Magma is an open source community working towards the mission to connect the world to a faster network by enabling service providers to build cost-effective and extensible carrier-grade networks.

Magma provides an ecosystem for collaboration. It has infrastructure for

  • Code review
  • Testing
  • CI
  • Version control
  • Documentation
  • a set of collaboration tools, like a wiki, Slack channels, Etherpad, etc.

Groups

The Magma community is organized into various groups and governance bodies to be able deliver the software components and further artifacts to fulfill the project's mission. The Community Structure and Governance chapter of this guide provides you with an overview and details about these groups.

What is a contribution?

In open source projects a contribution can be anything which helps the project to accomplish its mission. In addition to code contribution it can be testing, documentation, requirements gathering, bug reporting and so forth.

Table of Contents

  1. Community Structure and Governance
  2. Releases
  3. Communication
  4. Tools
  5. Accounts Setup
  6. Report, Track and Fix Bugs
  7. Adding and Tracking Proposals
  8. Contributing Code
  9. Contributing Documentation
  10. Security Overview for Contributors