<div dir="ltr">Hey guys,<div><br></div><div>I&#39;ve been working on a project which is a (mostly) drop in replacement for Catalyst::Plugin::Session.  Here are the GitHub repos:</div><div><br></div><div><div><a href="https://github.com/bluefeet/Web-Starch">https://github.com/bluefeet/Web-Starch</a></div><div><a href="https://github.com/bluefeet/Web-Starch-Store-CHI">https://github.com/bluefeet/Web-Starch-Store-CHI</a></div><div><a href="https://github.com/bluefeet/Web-Starch-Store-AmazonDynamoDB">https://github.com/bluefeet/Web-Starch-Store-AmazonDynamoDB</a></div><div><a href="https://github.com/bluefeet/Web-Starch-Plugin-Sereal">https://github.com/bluefeet/Web-Starch-Plugin-Sereal</a></div><div><a href="https://github.com/bluefeet/Catalyst-Plugin-Starch">https://github.com/bluefeet/Catalyst-Plugin-Starch</a></div></div><div><br></div><div>The manual is a good place to start:</div><div><br></div><div><a href="https://github.com/bluefeet/Web-Starch/blob/master/lib/Web/Starch/Manual.pod">https://github.com/bluefeet/Web-Starch/blob/master/lib/Web/Starch/Manual.pod</a><br></div><div><br></div><div>I&#39;m using this @work and will be deploying it to production, replacing Catalyst::Plugin::Session, sometime next week if all goes well this week.</div><div><br></div><div>I&#39;ve not put these modules on CPAN yet as I&#39;d love some feedback before I do so.  I want to make sure the module names, the interfaces, and just the entire design are acceptable to people.  I want this to be a real step forward.</div><div><br></div><div>@work we&#39;ve made extensive use of Catalyst::Plugin::Sesssion for years now, and related modules such as Catalyst::Plugin::Authentication.  So far everything has &quot;just worked&quot; when I replaced Catalyst::Plugin::Session with Catalyst::Plugin::Starch.</div><div><br></div><div>Why do this?</div><div><ul><li>Catalyst::Plugin::Session (C:P:S) is slower in NYTProf reports than I would expect it to be.</li><li>C:P:S is tied into Catalyst.  This is unnecessary.  Catalyst should be used to glue things together, not as a platform to build whole technologies on.  By decoupling sessions from Catalyst many wins can be had in reusability and unit testing (etc?).</li><li>C:P:S can be difficult and messy to extend.  This is partly due to how Catalyst plugins work, but also due to the design of C:P:S.</li></ul></div><div>Aran<br></div></div>