<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Dive into Dancer&#8217;s code: core and extensions</title>
	<atom:link href="http://www.sukria.net/fr/archives/2010/02/02/dive-into-dancers-code-core-and-extensions/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sukria.net/fr/archives/2010/02/02/dive-into-dancers-code-core-and-extensions/</link>
	<description>I will press many keys on my keyboard causing an implementation to occur.</description>
	<lastBuildDate>Wed, 18 Jan 2012 22:14:04 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Dancer&#8217;s development update, near to release 1.140 &#124; My Perl Path</title>
		<link>http://www.sukria.net/fr/archives/2010/02/02/dive-into-dancers-code-core-and-extensions/comment-page-1/#comment-46097</link>
		<dc:creator>Dancer&#8217;s development update, near to release 1.140 &#124; My Perl Path</dc:creator>
		<pubDate>Mon, 08 Feb 2010 17:40:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.sukria.net/fr/?p=1407#comment-46097</guid>
		<description>[...] my last post about Dancer, Tatsuiko Miyagawa suggested to build Dancer&#039;s standalone server upon a PSGI-aware [...]</description>
		<content:encoded><![CDATA[<p>[...] my last post about Dancer, Tatsuiko Miyagawa suggested to build Dancer&#39;s standalone server upon a PSGI-aware [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sukria</title>
		<link>http://www.sukria.net/fr/archives/2010/02/02/dive-into-dancers-code-core-and-extensions/comment-page-1/#comment-46096</link>
		<dc:creator>sukria</dc:creator>
		<pubDate>Thu, 04 Feb 2010 15:04:20 +0000</pubDate>
		<guid isPermaLink="false">http://www.sukria.net/fr/?p=1407#comment-46096</guid>
		<description>HTTP::Server::Simple::PSGI sounds pretty good. I like that idea. If I can help in a way or another, tell me!</description>
		<content:encoded><![CDATA[<p>HTTP::Server::Simple::PSGI sounds pretty good. I like that idea. If I can help in a way or another, tell me!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tatsuhiko Miyagawa</title>
		<link>http://www.sukria.net/fr/archives/2010/02/02/dive-into-dancers-code-core-and-extensions/comment-page-1/#comment-46095</link>
		<dc:creator>Tatsuhiko Miyagawa</dc:creator>
		<pubDate>Wed, 03 Feb 2010 18:46:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.sukria.net/fr/?p=1407#comment-46095</guid>
		<description>Yeah, your Dancer::Request accepts PSGI $env, which is good, but Dancer::Handler::Standalone doesn&#039;t use that interface but instead accepts CGI.pm object by using HTTP::Server::Simple::CGI. You can just eliminate this abstraction by writing your own HTTP::Server::Simple-based PSGI handler (just like Plack::Server::ServerSimple but without Plack dependency).

The change would not really be huge -- since you already abstract out the Standalone - PSGI difference in some way. The proposal is to step the abstraction further down to the lower layer (i.e. PSGI). 

The benefit is that the developers can assume it&#039;s always running in PSGI mode and has access to PSGI $env. There won&#039;t be any gotchas like &quot;This plugin only works / doesn&#039;t work if you run in PSGI mode&quot; etc.

I&#039;m happy to help -- actually I plan to ship the HTTP::Server::Simple::PSGI which doesn&#039;t depend on Plack at all.</description>
		<content:encoded><![CDATA[<p>Yeah, your Dancer::Request accepts PSGI $env, which is good, but Dancer::Handler::Standalone doesn&#8217;t use that interface but instead accepts CGI.pm object by using HTTP::Server::Simple::CGI. You can just eliminate this abstraction by writing your own HTTP::Server::Simple-based PSGI handler (just like Plack::Server::ServerSimple but without Plack dependency).</p>
<p>The change would not really be huge &#8212; since you already abstract out the Standalone &#8211; PSGI difference in some way. The proposal is to step the abstraction further down to the lower layer (i.e. PSGI). </p>
<p>The benefit is that the developers can assume it&#8217;s always running in PSGI mode and has access to PSGI $env. There won&#8217;t be any gotchas like &#8220;This plugin only works / doesn&#8217;t work if you run in PSGI mode&#8221; etc.</p>
<p>I&#8217;m happy to help &#8212; actually I plan to ship the HTTP::Server::Simple::PSGI which doesn&#8217;t depend on Plack at all.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sukria</title>
		<link>http://www.sukria.net/fr/archives/2010/02/02/dive-into-dancers-code-core-and-extensions/comment-page-1/#comment-46094</link>
		<dc:creator>sukria</dc:creator>
		<pubDate>Wed, 03 Feb 2010 07:31:25 +0000</pubDate>
		<guid isPermaLink="false">http://www.sukria.net/fr/?p=1407#comment-46094</guid>
		<description>OK, I&#039;m glad we share a common view here. Your idea regarding supporting PSGI even without depending on Plack makes sense, but I&#039;m not sure I follow you on the technical details.

What do you mean by saying &quot;&lt;em&gt;update the Dancer::Handler::Standalone to still use HTTP::Server::Simple but run the app in an PSGI mode&lt;/em&gt;&quot; ? I&#039;m not sure I see what&#039;s behind this idea.

Is it about supporting all PSGI $env keys, or is it something more than that?

Thanks a lot for the precisions.</description>
		<content:encoded><![CDATA[<p>OK, I&#8217;m glad we share a common view here. Your idea regarding supporting PSGI even without depending on Plack makes sense, but I&#8217;m not sure I follow you on the technical details.</p>
<p>What do you mean by saying &#8220;<em>update the Dancer::Handler::Standalone to still use HTTP::Server::Simple but run the app in an PSGI mode</em>&#8221; ? I&#8217;m not sure I see what&#8217;s behind this idea.</p>
<p>Is it about supporting all PSGI $env keys, or is it something more than that?</p>
<p>Thanks a lot for the precisions.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tatsuhiko Miyagawa</title>
		<link>http://www.sukria.net/fr/archives/2010/02/02/dive-into-dancers-code-core-and-extensions/comment-page-1/#comment-46093</link>
		<dc:creator>Tatsuhiko Miyagawa</dc:creator>
		<pubDate>Tue, 02 Feb 2010 23:36:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.sukria.net/fr/?p=1407#comment-46093</guid>
		<description>Yes I understand what you mean. I&#039;m *NOT* saying Dancer should depend on Plack and do nothing else. It makes sense to have a development option without relying on Plack, but can use the full Plack/PSGI middleware stack if developers want to. Perfectly reasonable, especially considering Plack isn&#039;t 1.0 yet.

And yeah, having Dancer logger/session adapters and even default to Plack backends in PSGI mode sounds like an excellent solution.

The great thing about PSGI/Plack is, though, while using Plack means you go PSGI-only, the other way round is not necessarily true. i.e. You can still implement everything to interface with PSGI, without relying on Plack at all. (examples are Web::Simple, or CGI::Application::PSGI)

So one thing you can do in the near future, even without waiting for Plack 1.0, is to update the Dancer::Handler::Standalone to still use HTTP::Server::Simple but run the app in an PSGI mode, which is probably a modified version of Plack::Server::ServerSimple. Since your standalone server (Handler::Standalone) is HTTP::Server::Simple, the code change should be fairly minimal. And that wouldn&#039;t add any new dependencies and developers can run Dancer app without installing Plack.</description>
		<content:encoded><![CDATA[<p>Yes I understand what you mean. I&#8217;m *NOT* saying Dancer should depend on Plack and do nothing else. It makes sense to have a development option without relying on Plack, but can use the full Plack/PSGI middleware stack if developers want to. Perfectly reasonable, especially considering Plack isn&#8217;t 1.0 yet.</p>
<p>And yeah, having Dancer logger/session adapters and even default to Plack backends in PSGI mode sounds like an excellent solution.</p>
<p>The great thing about PSGI/Plack is, though, while using Plack means you go PSGI-only, the other way round is not necessarily true. i.e. You can still implement everything to interface with PSGI, without relying on Plack at all. (examples are Web::Simple, or CGI::Application::PSGI)</p>
<p>So one thing you can do in the near future, even without waiting for Plack 1.0, is to update the Dancer::Handler::Standalone to still use HTTP::Server::Simple but run the app in an PSGI mode, which is probably a modified version of Plack::Server::ServerSimple. Since your standalone server (Handler::Standalone) is HTTP::Server::Simple, the code change should be fairly minimal. And that wouldn&#8217;t add any new dependencies and developers can run Dancer app without installing Plack.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sukria</title>
		<link>http://www.sukria.net/fr/archives/2010/02/02/dive-into-dancers-code-core-and-extensions/comment-page-1/#comment-46092</link>
		<dc:creator>sukria</dc:creator>
		<pubDate>Tue, 02 Feb 2010 23:08:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.sukria.net/fr/?p=1407#comment-46092</guid>
		<description>@miyagawa: You&#039;re right, my work on Dancer is heavily based/inspired on Sinatra, from the Ruby world. You&#039;re also right when you say that Sinatra does rely entirely on Rack. This being said, I have some divergence with Sinatra that I&#039;d like to explain.

But first, I want to underline that I&#039;m a big fan of PSGI/Plack, this is maybe one of the best thing that happened in the Perl ecosystem regarding web applications.

My point of view on Dancer is that it should behave like a cameleon, I see Dancer as a step-by-step framework that can be used alone at first, and will evolve with the developer according to their needs. That means of course, relying on Plack when necessary. 

But I still want that a Dancer app can be developed without installing Plack. This should be an option for the developer, not a development-dependency. I hope you can see what I mean.

There is absolutely nothing against Plack here, but more something about how can I use the goodness of PSGI/Plack, provide it to my users and still, let them discover/use Dancer as a standalone framework if they like.

I could say that&#039;s a matter of user-freedom, in a way.

On the other hand, as I said, Plack is a kickass rock to build upon, and be sure as soon as Plack provides logger and session support, I&#039;ll write the corresponding Dancer classes. Then on PSGI mode, a Dancer app will be able (or may defaults to) Plack::* engines.

I think both approaches can coexist.</description>
		<content:encoded><![CDATA[<p>@miyagawa: You&#8217;re right, my work on Dancer is heavily based/inspired on Sinatra, from the Ruby world. You&#8217;re also right when you say that Sinatra does rely entirely on Rack. This being said, I have some divergence with Sinatra that I&#8217;d like to explain.</p>
<p>But first, I want to underline that I&#8217;m a big fan of PSGI/Plack, this is maybe one of the best thing that happened in the Perl ecosystem regarding web applications.</p>
<p>My point of view on Dancer is that it should behave like a cameleon, I see Dancer as a step-by-step framework that can be used alone at first, and will evolve with the developer according to their needs. That means of course, relying on Plack when necessary. </p>
<p>But I still want that a Dancer app can be developed without installing Plack. This should be an option for the developer, not a development-dependency. I hope you can see what I mean.</p>
<p>There is absolutely nothing against Plack here, but more something about how can I use the goodness of PSGI/Plack, provide it to my users and still, let them discover/use Dancer as a standalone framework if they like.</p>
<p>I could say that&#8217;s a matter of user-freedom, in a way.</p>
<p>On the other hand, as I said, Plack is a kickass rock to build upon, and be sure as soon as Plack provides logger and session support, I&#8217;ll write the corresponding Dancer classes. Then on PSGI mode, a Dancer app will be able (or may defaults to) Plack::* engines.</p>
<p>I think both approaches can coexist.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tatsuhiko Miyagawa</title>
		<link>http://www.sukria.net/fr/archives/2010/02/02/dive-into-dancers-code-core-and-extensions/comment-page-1/#comment-46091</link>
		<dc:creator>Tatsuhiko Miyagawa</dc:creator>
		<pubDate>Tue, 02 Feb 2010 22:48:09 +0000</pubDate>
		<guid isPermaLink="false">http://www.sukria.net/fr/?p=1407#comment-46091</guid>
		<description>Nice work. 

Did I tell you that Plack 1.0 / PSGI 1.1 (in dev process, close to be done) are defining interfaces for Session and Logger though? They are all accessible through psgix.session and psgix.logger in $env, so if you go PSGI all the way, we wouldn&#039;t need to duplicate our effort of writing all of those session managers and Logger extensions for each framework.

At least you can create Dancer::Session and Dancer::Logger subclasses to interface with those $env values, so if you run Dancer in the psgi mode, users can chose whatever sessions and loggers that are supported as Plack middleware.

(Well, Templating would be another thing which would be interesting to add to Plack middleware stack so most frameworks can share, but that&#039;s another story :))

You&#039;ve been mentioning Sinatra to defend Dancer a lot, which is reasonable, but if you really want to clone Sinatra, you should go Plack all the way, like Sinatra does for Rack :)</description>
		<content:encoded><![CDATA[<p>Nice work. </p>
<p>Did I tell you that Plack 1.0 / PSGI 1.1 (in dev process, close to be done) are defining interfaces for Session and Logger though? They are all accessible through psgix.session and psgix.logger in $env, so if you go PSGI all the way, we wouldn&#8217;t need to duplicate our effort of writing all of those session managers and Logger extensions for each framework.</p>
<p>At least you can create Dancer::Session and Dancer::Logger subclasses to interface with those $env values, so if you run Dancer in the psgi mode, users can chose whatever sessions and loggers that are supported as Plack middleware.</p>
<p>(Well, Templating would be another thing which would be interesting to add to Plack middleware stack so most frameworks can share, but that&#8217;s another story :))</p>
<p>You&#8217;ve been mentioning Sinatra to defend Dancer a lot, which is reasonable, but if you really want to clone Sinatra, you should go Plack all the way, like Sinatra does for Rack :)</p>
]]></content:encoded>
	</item>
</channel>
</rss>

