Subject: Re: gitweb, FastCGI and PSGI/Plack

From: Jakub Narebski <[email-masked]>
Date: Tue, 11 May 2010 11:29:07 +0200

On Mon, 10 May 2010, Tatsuhiko Miyagawa wrote:
> On Mon, May 10, 2010 at 2:10 PM, Jakub Narebski <[email-masked]> wrote:
> >
> > Well, the support for 'plackup' in git-instaweb is / would be done not
> > by converting gitweb from CGI to PSGI app, but by using gitweb.psgi
> > wrapper.
> 
> Wrapping gitweb.cgi with gitweb.psgi is a legitimate way to say
> "converting CGI to PSGI app".

I have misunderstood you then, I'm sorry.
 
> > I also wonder how running via wrapper script affect performance, as
> > compared to modified gitweb running as FastCGI script, using CGI::Fast
> > and FCGI.
> 
> Based on my experience CGI::Emulate::PSGI doesn't have much of an
> overhead because it's just swapping STDIN and STDOUT handles and
> doesn't require stuff like tie or overload which tends to be slower.

Nice to know.

Unfortunately I don't have mod_fcgid / mod_fastcgi installed, so I can't
do a benchmark comparing PSGI wrapper + FCGI handler with modified
gitweb running as FastCGI script (using ab, ApacheBench).  Do you know
any pure-Perl FastCGI server with minimal dependencies, and pure-Perl
HTTP server benchmarking tool (like ab and httperf)?
 
> > P.P.S. One of constraints to gitweb development is that it should run
> > with minimal set of non-core modules.  Some people even complain that
> > gitweb (or was it about git in general?) requires at least Perl 5.8.6 or
> > about (because of Encode module and Unicode support).
> 
> I know, but git-instaweb is a different story, since you rely on the
> fact that the system has one of web servers like apache, lighttpd or
> mongrel.
> 
> And that's exactly why I've been suggesting to you use WrapCGI
> (CGI::Emulate::PSGI + CGI::Compile) instead of converting gitweb.cgi
> to natively support PSGI. We're on the same page and I don't
> understand why you keep disagreeing with me :)

I might have misunderstand you as arguing against modifying gitweb to
add FastCGI support via CGI::Fast...

P.S. discussion != disagreeing ;-)
-- 
Jakub Narębski
Poland