Announcing Flower 1.19.0

The Flower team is excited to announce the release of Flower 1.19 stable, packed with new updates!
Flower is a friendly framework for collaborative AI and data science.
It makes novel approaches such as federated learning, federated evaluation,
federated analytics, and fleet learning accessible to a wide audience of researchers and engineers.

Thanks to our contributors

We would like to give our special thanks to all the contributors who made the new version of Flower possible (in git shortlog order):

Adam Tupper, Andrej Jovanović, Charles Beauville, Chong Shen Ng, Daniel J. Beutel, Daniel Nata Nugraha, Dimitris Stripelis, Haoran Jie, Heng Pan, Javier, Kevin Ta, Mohammad Naseri, Ragnar, Robert Steiner, William Lindskog, ashley09, dennis-grinwald, sukrucildirr

What’s new?

  • Revamp messaging system with content-addressable object model (#5513, #5477, #5424, #5379, #5353, #5372, #5507, #5364, #5517, #5514, #5342, #5393, #5508, #5504, #5335, #5341, #5430, #5308, #5487, #5509, #5438, #5369, #5354, #5486, #5380, #5496, #5399, #5489, #5446, #5432, #5456, #5442, #5462, #5429, #5497, #5435, #5371, #5450, #5384, #5488, #5434, #5425, #5475, #5458, #5494, #5449, #5492, #5426, #5445, #5467, #5474, #5527)

    Introduces a content-addressable messaging system that breaks messages into a tree of uniquely identified, SHA256-hashed objects. This model allows objects to be pushed and pulled efficiently, avoiding redundant uploads and enabling scalable message streaming and broadcasting. Core enhancements include the new InflatableObject abstraction and ObjectStore for storing and retrieving message content, with Array, Message, and *Record classes now inherit from InflatableObject. New utilities and RPCs facilitate recursive object handling, ID recomputation avoidance, and safe deletion. The framework’s servicers, REST, and gRPC layers were refactored to integrate this system, improving real-world deployment scalability and communication efficiency.

  • Improve user authorization and access control (#5428, #5505, #5506, #5422, #5510, #5421, #5420, #5448, #5447, #5503, #5501, #5502, #5511)

    Improves user authorization feature that integrates with the existing authentication protocol. When authentication is enabled, commands like flwr ls, flwr log, and flwr stop are restricted to displaying or affecting only the runs submitted by the authenticated user. This is enforced using the Flower Account ID. Additionally, fine-grained access control can be enforced for CLI operations based on assigned roles (RBAC).

  • Add Floco baseline for personalized federated learning (#4941)

    Introduces Floco, a method that enhances both personalized and global model performance in non-IID cross-silo federated learning. It trains a shared solution simplex across clients, promoting collaboration among similar clients and reducing interference from dissimilar ones. Learn more in Floco Baseline Documentation.

  • Add FEMNIST support to FedProx baseline (#5290)

    Adds FEMNIST dataset to FedProx with preprocessing matching the original paper—subsampling ‘a’-‘j’ and assigning 5 classes per device. More details: FedProx Baseline Documentation

  • Upgrade StatAvg baseline to new Flower App format (#4952)

    The StatAvg baseline is updated to use the new Flower App format. Changes include removing Hydra, switching to pyproject.toml configs, using ClientApp and ServerApp, and saving results via a custom Server class. More details: StatAvg Baseline Documentation.

  • Add guide for running Flower on Google Cloud Platform (#5327)

    The documentation now includes a detailed guide on deploying and running Flower on Google Cloud Platform (GCP). It provides step-by-step instructions for managing Flower workloads in a GCP environment. For more information, refer to the official guide.

  • Implement ServerApp heartbeat monitoring (#5228, #5370, #5358, #5332, #5322, #5324, #5230, #5325)

    Adds heartbeat support to ServerApp processes, enabling the SuperLink to detect crashed or terminated processes and mark them as finished:failed when no final status is received.

  • Extend NodeState to improve SuperNode state management (#5470, #5473, #5402, #5521)

    Extends the NodeState interface and implementation to manage all SuperNode state.

  • Refactor SuperNode for improved robustness and maintainability (#5398, #5397, #5443, #5410, #5411, #5469, #5419)

    Ongoing refactoring of SuperNode improves modularity, simplifies client execution, removes gRPC bidirectional streaming and unused code, and centralizes connection logic. These changes align SuperNode’s behavior more closely with SuperLink to make Flower the best platform for robust enterprise deployments..

  • Restructure Flower (#5465, #5476, #5460, #5409, #5408, #5396, #5389, #5392, #5461)

    Reorganizes infrastructure code into dedicated submodules to improve maintainability and clarify the separation from user-facing components.

  • Improve CI/CD workflows (#5498, #5265, #5266, #5328, #5500, #5346, #5318, #5256, #5298, #5257, #5483, #5440, #5304, #5313, #5381, #5385, #5316, #5260, #5349, #5319, #5296, #5294, #5317, #5482, #5282, #5223, #5225, #5326)

    Refines CI workflows, templates, and automation; improves Docker, dependency, and version management; removes legacy jobs and adds proactive maintainer tools.

  • Improve documentation and examples (#5345, #5400, #5406, #5401, #5283, #5416, #5337, #5436, #5373, #5471, #5395, #5279, #5288, #5457, #5305, #5365, #5491, #5463, #5367, #5360, #5374, #5361, #5063)

    Adds documentation for the Flower Components Network Interface and Communication Model, updates the Deployment Engine page, and clarifies the distinctions between simulation and deployment. The custom-mods example has also been revised.

  • Build FAB in memory with new utility function (#5334)

  • Add logging for incoming and outgoing messages in size modifiers (#5437)

  • Bugfixes (#5340, #5366, #5478)

  • General improvements (#5516, #5499, #4927, #5310, #5343, #5359, #5413, #5299, #5433, #5390, #5427, #5350, #5394, #5295, #5315, #5468, #5412, #5348, #5444, #5522)

    As always, many parts of the Flower framework and quality infrastructure were improved and updated.