State of the Ecosystem

At least 15 new plugins saw their first CPAN release in 2016 bringing the total number of Dancer2 plugins beyond the 70 mark.

2016 also saw many plugins converted to the new Plugin2 architecture. When using the new Dancer2::Plugin plugins can now use other plugins and have their DSL directly available. At the last count 20 plugins have been released that use Plugin2 but there is still work to do. If you want to help out checkout the related GitHub issue.

Thankyou to everyone for contributing your code, and your time, to help make the Dancer2 ecosystem even better.

New Plugins in 2016


Mario Zieschang gave us Dancer2::Plugin::Auth::ActiveDirectory in April. Thanks Mario!

I haven't played with this one myself as I don't have any Windows servers but it could be a good option for AD environments. See also Dancer2::Plugin::Auth::Extensible::Provider::LDAP.


In October Jason Lewis asked about an IMAP provider for Dancer2::Plugin::Auth::Extensible on the #dancer IRC channel. I like a challenge so decided to create one that afternoon. The result was released as: Dancer2::Plugin::Auth::Extensible::Provider::IMAP.


Although this existed in a git repo, it had no tests, was AD-specific and was not released to CPAN. In October I released a shiny new Dancer2::Plugin::Auth::Extensible::Provider::LDAP which tries to be a little more LDAP server agnostic (and also has a good number of tests). Thanks to J. Stebens (corecache) for feedback and testing it against OpenLDAP.


Released whilst this article was being written on 29th November by Константин Матюхин (KVENTIN), Dancer2::Plugin::Auth::SAFE brings authentication via Thomson Reuters SAFE SSO to your Dancer app.


Michael CH Vu released his first Dancer2 version of his plugin Dancer2::Plugin::BeforeRoute in August. This plugin allows you to add before hooks to specific routes.


Need a simple and flexible cart in your Dancer2 app? Need something that can work with a new or existing database? Maybe the new Cart plugin is for you.

Andrew Baerg and Ruben Amortegui made the first release of Dancer2::Plugin::Cart in July, and Andrew went on to give a talk about it at the Perl Dancer Conference in Vienna in September. You can find a demo app that Andrew created for his talk on GitHub.


More than just a plugin, Dancer2::Debugger brings Stevan Little's Plack::Debugger to the Dancer2 ecosystem with extra Dancer-specific panels.

If you've ever used Marcel Grunauer's excellent Plack::Middleware::Debug with your Dancer1 apps then this is what you'll want to use with Dancer2.

I'm not completely happy with the internals of this thing but I needed it in a hurry and hopefully I'll find time soon for a cleanup. Released in April, you can find my conference talk here.


Rakesh Kumar Shardiwal's Dancer2::Plugin::EncryptID, released in July, makes it easy to obfuscate internal IDs when using them in a URL given to users. Instead of seeing users will instead see This prevents nosy users from trying to iterate all items based on a simple ID in the URL.


Theo van Hoesel released Dancer2::Plugin::HTTP::Auth::Extensible in January. This plugin is a fork of Dancer2::Plugin::Auth::Extensible but with authentication via WWW-Authenticate header instead of using form + session.


Part of the Interchange6 e-commerce project, Dancer2::Plugin::Interchange6 was released in May. Interchange6 is a project founded by long-time Interchange developer Stefan Hornburg (Racke).

The Interchange6 project has so far released the following components:

We're still working on a demo shop, due out Christmas. ;-)


Dancer2::Plugin::Minify is a wrapper for HTML::Packer, JavaScript::Packer and CSS::Packer. Released in April, thanks David Zurborg!


A port of my old Dancer1 plugin, Dancer2::Plugin::PageHistory was released in June. The add_to_history keyword which is exported by this plugin allows you to add interesting items to the session-based history lists which are returned using the history keyword.


Back in April, Lucas Tiago de Moraes released Dancer2::Plugin::Pg, another twist on relational database plugins.

See also: Dancer2::Plugin::Database and Dancer2::Plugin::DBIC.


Something I'd like to play with, Dancer2::Plugin::Swagger2 was released by Daniel Böhmer in March. This plugin creates routes directly from a Swagger (AKA OpenAPI) file. Neat.


Released in August, Jack Bilemjian's Dancer2::Plugin::Tail allows you to tail a file from within your Dancer2 application.


Dancer2::Plugin::TemplateFlute, along with its sister distro Dancer2::Template::TemplateFlute, brings Racke's Template::Flute forms to Dancer2. Released in May 2016, we needed this in order to port the Perl Dancer Conference website code from Dancer1.


This article has been written by Peter Mottram for the Perl Dancer Advent Calendar 2016.


No copyright retained. Enjoy.

2016 // Peter Mottram (SysPete) <>