TL;DR
Biff has launched biff.core, a library that simplifies system composition for Clojure web apps by providing a clean way to integrate modules and manage lifecycle functions. This development aims to improve modularity and reduce boilerplate in Biff projects.
Biff has released the initial version of biff.core, a library designed to streamline system composition and interface management in Clojure web applications, marking a significant step in modularizing the Biff framework.
The biff.core library introduces a concept of “init functions”—functions that take a collection of modules and return a map to be merged into the system map. These init functions are stored in the :biff.core/init key within module maps, enabling a clean, modular approach to system setup.
One key feature is that init functions operate on a var of the modules vector, not the vector itself. This allows for dynamic updates—such as changes to handlers—without restarting the web server, leveraging Clojure’s late binding capabilities. The design minimizes boilerplate and keeps the main namespace clean, requiring only modules and components to be added.
The library also addresses lifecycle management, suggesting that components can be organized as simple sequences of functions, avoiding complex dependency graphs. This approach simplifies understanding and control, especially for projects with many stateful resources.
Enhanced Modularity and Lifecycle Control in Biff
This development matters because it offers Clojure developers a more modular, flexible, and maintainable way to compose web applications. By reducing boilerplate and enabling dynamic updates, biff.core can improve development speed and application robustness, especially in complex projects with many components.
It also aligns with Biff’s goal of simplifying web app architecture, making it easier for teams to manage stateful resources and lifecycle events without intricate dependency management.

Web Development with Clojure: Build Large, Maintainable Web Applications Interactively
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
Biff’s Modular System Structure and Evolution
Previously, Biff used a ‘modules and components’ structure where each namespace exposed a module map, which was then combined into a system map. This process involved boilerplate code and manual assembly, often leading to repetitive setup. The new biff.core library aims to abstract this complexity, providing a first-class solution for system composition.
The release is part of a broader effort to split Biff into multiple libraries, each handling different aspects of web app development, with biff.core serving as the foundational glue for system configuration.
“The new biff.core library simplifies system composition and lifecycle management, making it easier to build modular Clojure web apps.”
— Anonymous Hacker News contributor
“Using var-based init functions allows for dynamic updates without server restarts, which is a significant convenience.”
— Anonymous Hacker News contributor

Fundamentals of Musical Composition
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
Unresolved Questions About biff.core’s Adoption
It is not yet clear how widely adopted biff.core will become within the Clojure community or how it will integrate with existing projects. Details about its performance at scale and compatibility with various deployment environments are still emerging.

Application Lifecycle Management on Microsoft Power Platform: A comprehensive guide to managing the deployment of your solutions
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
Next Steps for biff.core Development and Adoption
Further development will likely include more lifecycle management features and dependency resolution. The author plans to gather community feedback and possibly release additional libraries that layer on top of biff.core for more complex dependency handling and orchestration.
Monitoring community adoption and real-world use cases will be essential to assess its long-term impact.

Practical Module Development for Prestashop 8: Create modern, customizable, and dynamic online stores using efficient modules
As an affiliate, we earn on qualifying purchases.
As an affiliate, we earn on qualifying purchases.
Key Questions
How does biff.core improve system composition in Clojure web apps?
It provides a standardized way to define and manage modules and lifecycle functions, reducing boilerplate and enabling dynamic updates without restarts.
Can biff.core handle complex dependency graphs between components?
Currently, it encourages simple sequences of functions for lifecycle management rather than complex dependency graphs, but layering solutions on top is possible.
Is biff.core compatible with existing Biff projects?
Yes, it is designed to integrate smoothly, replacing or supplementing previous system assembly methods.
Will biff.core support hot-reloading of handlers?
Yes, by using var-based init functions, handlers can be updated dynamically without server restarts.
What are the future plans for biff.core?
Future updates may include enhanced dependency management, lifecycle orchestration, and community-driven features based on feedback.
Source: Hacker News