First, it should be noted that Bread::Board and IoC are not
universally useful. Smaller applications and one-off scripts would
be overburdened by the abstractions of Bread::Board. But the larger
your application becomes, the more something like Bread::Board
As applications grow so the management of resources and their
dependencies becomes more of a burden. Making sure all your
components are properly initialized, in the right order and at all
times that you need them, can become a twisty maze. Bread::Board
is intended to help you manage this twisty maze and remove the need
for you to manage this manually.
Take your typical Catalyst application, the Catalyst framework
itself contains its own mini IoC framework through the
component subsystem. Catalyst will manage your models and views
making sure that they will be available when you need them in
the controllers. Catalyst makes all this easy to manage through
its configuration system. This is great inside your Catalyst
application, but what about outside of it? Any sufficiently
complex web application will have a set of scripts and/or
command-line applications to help support it. At this point
you are left to your own devices and must manage these
components and their dependency chains on your own.
By decoupling IoC into its own stand-alone subsystem it
becomes possible to get that same ease-of-use you get inside
something like a Catalyst application, outside of it.
This, in a nutshell, is what Bread::Board aims to provide.