instant Lisp web application publishing



Catchy title, ye?

I've got idea to implement something like that about 1.5 years ago, but
actually tried to implement it this New Year (yes, I was actually coding in
New Year's night, I'm kinda freak).

So, what this actually is:

* it has sort of global database of a special kind -- a triple store, that
is a list of triples:

(subject predicate object).

or in Object Oriented terminology: (object property-name propert-value).

People who follow modern trends already know that it is related to RDF,
heart of Semantic Web, or Web 3.0 as some people call it.

But we do not want buzzwords here, for practical purposes it's just a very
flexible database that can be easily mapped into OOP terminology (so you
work with database like you do with CLOS objects), but it also has very
powerful query language -- comparable to SQL, but more of Prolog style.

(it's also possible to have some database schema (i.e. RDFS) and
inferencing, but I didn't bother to deal with it so far)

* Lisp functions (and macros) are stored in this database and are persisted
in this way.

* it provides web access to (some of) this function. i.e. you call:

http://example.com/myfunction

and myfunction is called to generate page dynamically. If you call

http://example.com/add?a=1&b=2

function add will be called with parameters a and b.

(of course these are only examples, it can be a bit more complex to validate
variables etc).

* people can create and edit functions via web, and create new pages

* people can edit database via web (certainly editing functionality can be
provided via functions published).

And that's actually all. With such functionality it's possible to create
dynamic web sites of arbitrary complexity with just web browser.
And it's also possible to create new "frameworks" and instantly share them
with other people.
For example, one can publish macros that will make certain kind of DB
queries in easier way and do automatical formatting.
Other people can create, for example, Visual Programming Framework that will
allow others to make pages w/o Lisp programming.

I think at this point attentive reader would say: "That's nice, but it would
be chaotic. What's about security?".
Yes, this stuff needs access control for functions and data, and a lot of
security. Possibly private databases too.
I haven't implemented this stuff yet, but i believe it's possible. For now I
assume it will be used by sane people only (Lisp programmers are sane,
right?), so I'm leaving security stuff for future.

And at this point should be a link to try the beast in action. But
unfortunately there is no -- I haven't deployed it yet.
It's not actually an vapourware -- I've actually implemented it and tried in
action by New Year, but it needs to be polished a little (at least) and
deployed on a server, and I postponed it since that time.

Actually I hope to recieve some feedback that will motivate me to finally
deploy the thing -- more feedback I'll recieve, more likely deployment will
happen :).
If I'll get no feedback, I'll freeze this project for indefinite time, I
have some other stuff to do too..

Also I don't have a good candidate server to deploy it too. I'm considering
deploying it to vmware virtual machine on my friend's machine which is
generally available to internets -- but i'm not sure if my friend will like
this idea :), and machine is not in datacenter so it doesn't have 100%
uptime.
So if somebody has server resources to donate and is not scared by insecure
beast running in vmware (I believe even if it will be totally hacked only
virtual machine will be lost, but there's always subtle chance to skrew
whole thing..) -- I'd be very grateful.

As for implementation details, it's based on ABCL-web and is very simple --
DB access and web engine are already implemented as part of ABCL-web (and
they are simple too), so the "publishing platform" is just a thin layer on
top of this. I know some people will consider ABCL-web a bad platform -- but
if it's already deployed and works, who cares? :)

Of course, the way it works now is just like a conceptual prototype -- it
has little practical usage, other than prototyping some stuff maybe. But I
believe it can evolve into something really useful and cool. And it seems to
be a good demonstration of Lisp -- "code is data" and macros are used. There
are many things it can evolve into:

* Lisp webapp easy hosting and development
* Lisp webapp development/deployment/management platform (this assumes
there is no central server but people install the thing on their own servers
and manage them)
* Semantic Web application wiki (this assumes it should have some easy
programming interface -- macros for simplicity, HTML templates, visual
designers etc)
* a global database for everything (same as above + massive data hosting)

And I'm not sure what is best way... My original idea was a "global database
for everything", but I've found it too ambitious :), so I think it can solve
some utilitary needs too.
I'd be very glad to here what people think would be the most useful thing --
for Lisp community and for mankind :).

with best regards, Alex 'killer_storm' Mizrahi.


.



Relevant Pages

  • Re: instant Lisp web application publishing
    ... flow of control (e,g. first log in the user, then show page x, than ... of Lisp if they want) ... flexible database that can be easily mapped into OOP terminology (so you ... Also I don't have a good candidate server to deploy it too. ...
    (comp.lang.lisp)
  • Re: MS Access 2003 Deployment not working with SBS 2003
    ... Your planned deployment is a very bad one. ... Database in a share on the server. ... SBS 2000: microsoft.public.backoffice.smallbiz2000 ...
    (microsoft.public.windows.server.sbs)
  • Errors with Nant deployment.
    ... "The database BizTalkMsgBoxDb_2S on the server ENTAAP271S\INST4 is ... Develpoment machine is running Biztalk SP2, deployment machine is SP1. ...
    (microsoft.public.biztalk.general)
  • Re: Errors with Nant deployment.
    ... BizTalk Solution Developer ... Microsoft Certified Technology Specialist: BizTalk Server 2006 ... I am new to Biztalk and helping out on a deployment when we ... "The database BizTalkMsgBoxDb_2S on the server ENTAAP271S\INST4 is ...
    (microsoft.public.biztalk.general)
  • Re: Which Database
    ... deployment will be running it's own database or do you mean that an ... application will be deployed that will connect to a central database ... client server databases and, although you can install the server on ... included in the list MySQL, SQLite, PostgreSQL, IBMs DB2 and Oracle ...
    (comp.databases)