edw on 16 Jul 2007 13:46:47 -0000

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

[philly-lambda] Re: Projects people are working on...


I'd like to share some of my thoughts on the current state of Magic.
In specific senses, I wholeheartedly agree with you that Magic is not
generalized enough. It's currently for Scheme48 only, and there's
nothing motivating me to make it more portable. Second, it uses SCGI
to speak to web servers, making deployment straightforward only on
Lighttpd AFAIK.

But in other ways, Magic is too generalized. It uses an Emacs hook-
procedure approach to processing requests, which makes adding features
such as session support very straightforward. It's about equally easy
to do just about anything, which leads me to wonder how easy it is to
do anything.

I'm currently doodling some code for a version 3 of Magic, with the
following thoughts in mind:

It should be easy to deploy Magic. Ideally it should speak HTTP
natively, allowing it to service requests directly or be proxied
behind another server. The downside of such an approach is my desire
to avoid writing a fully compliant HTTP/1.1 server. I do not want to
reinvent the wheel.

It should be written in a more functional style. I've cleansed much of
the imperative, cycle-shaving kludgery from the current version of
Magic, but I'd like to make a clean break with the legacy Magic 2
code. I am aware of what Joel Spolsky would say about that[1], and I
may to a more evolutionary approach to evolving Magic i.e. I may never
do a ground up re-write.

It should support the development of contemporary web-based
applications. I'm interested in doing things like creating Javascript
proxies for server-side Scheme procedures and data structures. I'm
writing a new version of the Transmogrify Resource Repository[2] as an
exercise to help me figure out what Magic needs to support to make
developing ajax web apps a breeze.

It shouldn't be SQL-dependent. While there's nothing in Magic that
requires a database, I did write PostgreSQL glue for it, and I use it
quite a bit. Talking with Toby, I've recovered memories of programming
before 1998, back when the first tool everyone reached for was *not*
Oracle, MySQL, or PostgreSQL.

It should be i18n-friendly. I am a 7-bit ASCII guy at heart, and I
have a lot of trouble embracing this Unicode stuff, but it's here to
stay, so I better deal with it. Sigh.

It should be porting-friendly. Because *I* do not want to port it.

So there you go: my thoughts on the Magic, where it is, and where I'd
like to take it.


[1]: <http://www.joelonsoftware.com/articles/fog0000000069.html>
[2]: The original is available at <http://magic.xmog.com/
repository.html>, while the incomplete proof of concept is currently
available at <http://assets.xmog.com/repository.html>. The first is
completely an on-the-metal implementation of an ajax web app, while
the second builds atop JQuery and the collective wisdom of the Ajax
"best practices".

You received this message because you are subscribed to the Google Groups "Philly Lambda" group.
To unsubscribe from this group, send email to philly-lambda-unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/philly-lambda?hl=en