Friday, January 18, 2008

Sling in the new year

After I had my first release of Bunkai up and running, I was contact by Lars Trieloff , of the Apache Sling project. We discussed whether Bunkai could be used as a resource editor for Sling.

I've mentioned Sling a bit in a previous post, but to sum it up (from my perspective :); Sling is the following;

1) Can be deployed as stand-alone or as Servlet (It includes Jetty - which is a nice, slim application server)
2) It's OSGi compliant, and can be configured with the OSGi Admin Service
3) It's a generic resource tree, stored in Jackrabbit, a JCR implementation.
4) All resources (web pages, pictures, scripts, et.c. are referenced using REST principles, leveraging HTTP GET, POST, DELE, et.c. to manage resources.
5) All resource stored in Sling can be scriptable *in JavaScript (or JRuby, et.c.)* on the server.
6) All resources can be accessed using standard WebDAV

So what Sling looks like to me, right now is the perfect thin-server. Sling can be a JSP/ish Server-side Web framework, if you want, but it also fits perfectly into a role where the server-side scripts only implement business logic, and format data, which is requested by the client.

So if you're experimenting with JavaScript RIA building, and are trying out different thin-server alternatives, do not miss Sling.

What I'm doing at the moment, is to modify my Bunkai Dojo Javascript widget editor to have an extra "Resource" tab, which list Sling resources on (currently) localhost. The idea is to store Bunkai inside Sling (I just copy files over WebDAV which I've mounted locally on my Kubuntu), let the user access a Bunkai url on localhost:8080/bunkai.. or something.

Then all HTML files or *server-side javascripts* you'll be making, will be saved at the place in the resource tree where you've created your node (add/deleet/modify of nodes is very simple in Sling as well, being RESTive). So you get a thin-server, REST-like database, and a simple client/server IDE in the same box! :)

Stay tuned. Further bulletins as events warrants.

4 comments:

philip said...

Hi, How does one install Sling?
I went to its website and I can't find out how to do it. I'm just a programmer and didn't want to spend a week to work it out, do you know how?

Peter Svensson said...

If you are used to Subversion and Maven, do the following;

You need to checkout http://svn.apache.org/repos/asf/incubator/sling/trunk/

and run "mvn clean install" in there, to build the Sling main modules.

Then go down to microsling/microsling-core/ and build that with mvn
clean install.

Then move to microsling/microsling-standalone and do the same - that
creates a zip file in the "target" subdir, which contains a standalone
version of microsling-core with a README file.

If you're not used to subversion, it is quite easy, and exists for all major platforms.

The install maven, which is well documented (and quite simple) on the maven homepage.

Cheers,
PS

philip said...

Hi, thanks for the help, I will try it out...

They REALLY need to make it EASY for dumb people like me who is just a Java programmer and just wants to get the server up and running and changing things. I've seen many technologys not adopted because the getting started wasn't made dumb enough (eg, Suns JXTA was too hard for people to get started). Otherwise, more simple things such as Amazon SimpleDB will take over and Sling, although very interesting just won't have the number of users.

Peter Svensson said...

Hi Philip,

I agree. It's kind of complicated at the moment, because Sling is in heavy development. I've been having trouble myself to get basic server-side Rhino to work with the latest revisions.

Sling is indeed very generic, so what's really interesting is uSling or Sling Launchpad as it's now called, which is just a self-contained repository which can be easily manipulated REST-wise with some good Ajax examples.

Se Lars Trieloffs screencast here for a demo; http://weblogs.goshaky.com/weblogs/lars/entry/%C2%B5jax_in_30_minutes

But I would suspect it takes the Sling team another couple of weeks to get everything stable, so I'll blog again when that happens :)