2008Q4 Grant Proposal: Squatting On Everything

Synopsis: Squatting is unique among web frameworks, because it has the ability to embed itself into other frameworks. This ability has been demonstrated with the Squatting::On::Catalyst module that shows that you can take a whole Squatting application and embed it directly into a Catalyst application. (To see an example of this, take a look at the Pod::Server documentation.) I'd like to expand Squatting's range by writing adapters for more frameworks and environments.

Name
John Beppu

Project Title
Squatting On Everything

Synopsis
Squatting is unique among web frameworks, because it has the ability to embed itself into other frameworks. This ability has been demonstrated with the Squatting::On::Catalyst module that shows that you can take a whole Squatting application and embed it directly into a Catalyst application. (To see an example of this, take a look at the Pod::Server documentation.)

I'd like to expand Squatting's range by writing adapters for more frameworks and environments.

Benefits to the Perl Community
Imagine that you built a web application, and then imagine you wanted to add a blog, or a forum, or a picture gallery, or a store to your site. What's a Perl programmer to do? Web applications haven't historically been conducive to modular composition.

However, Squatting can change all this for the better. Not only will Squatting let you embed whole web applications into your existing site, it'll even let you replace the layout of the Squatting application so that you can keep a common look and feel across the entire site. The best part is that you don't have to throw away all your old work and join the Squatting cult. You can keep all your old work and make Squatting adapt to you.

Unfortunately, these hypothetical, embeddable, Squatting applications have yet to be written, but even before we get to that part, I'd like to make sure Squatting can be embedded in as many places as possible.

This will lay the groundwork for a future where adding major functionality to your web site will be as easy installing a module from CPAN and adding a few lines of glue code to your existing application.

Deliverables

Squatting::On::MP13

Squatting::On::MP19

Squatting::On::MP20

Squatting::On::HTTP::Engine

Squatting::On::Mojo

Squatting::On::Jifty

Project Details
This project is fairly straightforward. For each framework, I have to translate the HTTP request info from their world view into terms Squatting can understand. Then, after I let Squatting handle a request, I have to take the output and translate it back into terms that the original framework can understand. Most of the difficulty in this project comes from having to learn how the foreign framework handles HTTP requests and responses.

Project Schedule
5 weeks to implement and test the modules mentioned above is my conservative estimate, and I can begin work immediately.

Bio
I am a programmer who has been using Perl for 10 years, now. However, for the last 2 years, I took a trip into the worlds of Ruby and JavaScript to see what they had to offer. I have recently returned to Perl, because I decided that it was time to implement the idea for a language learning site that my friend and I have been sitting on, and I believed that Perl (the language created by our favorite linguist/programmer) would be the most appropriate tool for the job. I wrote Squatting so that I could write the language learning site with it, but now Squatting seems to have taken on a life of its own.

Amount Requested
$1000.00

Categories:

Tags:

2 Comments

Can the proposer please comment on whether the Mojo or HTTP::Engine projects have any bearing on this? That is, can Squatting be the backend for a another framework, or does the embedded app have to be written to the Squatting API?

If I've misunderstood and there is no relation, that's valuable information too.

Since HTTP::Engine and Mojo are both HTTP server abstractions, Squatting can be made to run on top of either of them. In fact, when I send in the revision to this proposal, Squatting::On::HTTP::Engine and Squatting::On::Mojo will be added to the list of deliverables.

PS: Squatting::On::CGI will be taken off the list, because I already implemented it, and Squatting::On::FastCGI will be taken off, because I think the Mojo and HTTP::Engine FastCGI implementations are already better than whatever I'd come up with.