Scott Penrose

Web Applications

Scott Penrose is a perl hacker with an interest in home automation. He has been playing with electronics since he was old enough to burn his fingers with a soldering iron.

(work in progress)

Discussion on web applications, and particularly web frameworks.

We have Catalyst and many others in perl, Rails of course, and many more...

Why !

The problem is that all these applications attack the problem from the same space - the language and libraries.

Web applications should be just like desktop applications, you use the operating system to do that separation of authentication and configuration etc.

There are two operating systems in the web:

  • The internet
  • The web server

The internet is a bit of a silly one, but in this case you can think of Mashups as a way of separating applications.

The real answer is the web server.

Yes there are a few web servers... Apache, Fast HTTP, many others.

But when you design an authentication system (and you can build one that works reasonably portably across at least a few of those) you have just written an authentication and authorization system that work for all languages, all frameworks, even static content.

How many operating systems have you used which build authentication into each application !

This is an early work in progress, but my previous attempts, like http://zaltana.org/ have been a long time in growth of understanding as well as code.

My early attempt at breaking down the main areas you need to create, and can the be moved:

  • Authentication & Authorization
    • The act of logging in
    • Supporting multiple schemes, including: cached cookies; cryptographic cookies; etc...
    • Support the lookup of basic user data
    • Integration of 3rd party login (usual suspects: Facebook; google; OpenID; Shibboleth)
    • NOT: The creation or management of users ! (see below)
  • User management
  • Dispatching
  • Templates
    • Specifically static files with a bit of code
      • Like ASP, PHP, Mason
      • Yes you can write whole apps in these
      • Even when large apps are written in classes, they need static files with a bit of server side code !
  • Caching, Compression, ...
    • A well covered area in web servers
  • Content modification
    • Broad idea of adding things like CSS to headers on the fly !
    • Plenty of XSL type modules to do this
    • Can also run Perl and PHP as a post filter in Apache to do it...

Some great benefits:

  • Each component can be written in any language (that is supported by the web server - our OS)
  • Each component can be re-written or extended
  • The vast majority of frameworks out there, will already work, or can be made to work with these models by adding effectively pass through modules.
  • Ability to integrate an existing application in another language (want to add Wordpress to your Perl app ! Easy).

Keys to success: