Skip to main content

Welcome

Welcome to the FL-Net contribution guide.

This guide is for developers who want to change the FL-Net software itself:

  • the Client and Platform services including the frontends
  • the federated communication layer
  • the Tool handling
  • this documentation itself

Who this is for​

  • Backend developers working on the Java/Quarkus services (Learning APIs, Orchestration API).
  • Frontend developers working on the Angular workspace that contains the local (Client) and global (Platform) frontends.
  • Developers of the federated communication layer, the Go-based controller and relay server.
  • Developers of the Tool handling, e.g. via the Python Tool API and the Tool Build Pipeline.
  • Documentation writers improving this site.

If you want to contribute by building a Tool for the network rather than changing FL-Net itself, see Tool development instead.

How the codebase is organized at a glance​

  • FL-Net is not a monorepo. Each component lives in its own repository in the FedLearnNet GitHub organization, with its own README, CI, and Docker images.
  • The Client and the Platform are built using shared repositories: for example, the local-learning-api and global-learning-api modules both live in Learning-APIs, and the local and global frontends both live in Frontends.
  • The federated communication layer also uses shared repositories: the controller and relay-server modules both live in Federated-Learning-Communication-API. -The CLI securely assembles the published Docker images into a running Client or Platform.

See the Repository map to find out which repository owns which part.

Quickstart​

If you wish to contribute, please make sure you read in any case the Development workflow!

For a Quickstart, jump directly to what you need:

However, we recommend the following reading order for new contributors:

  1. Welcome (you are here)
  2. Read the general welcome page for FL-Net
  3. Optional: Understanding the architecture
  4. Repository map
  5. Quickstart
  6. Development workflow
  7. Documentation workflow
  8. One of the detailed sections, depending on your change: