Proposal for Engage services layer technologies
Colin Clark
colin.clark at utoronto.ca
Wed Jul 22 22:18:47 UTC 2009
Hi everyone,
Over the past few months, the development team has been doing a lot of
research and talking about potential technologies for the Engage
services layer. I've taken this information and distilled it into a
proposal for the database and Web tools I think we should use on the
server-side. I've tried to keep this page fairly succinct, focusing on
the core technologies, our motivations for selecting them, and the
context in which they will be used:
http://wiki.fluidproject.org/display/fluid/Engage+Server-Side+Technology
In short, the recommendation is to use Apache's CouchDB as our
database and Lucene for text searches. For Web service development,
the idea is to use JavaScript on the server, assembling a handful of
existing technologies into a new lightweight Web container called
Kettle. This environment will provide us with an extremely
approachable toolset, allowing us to get started quickly by using
Infusion to write code on both the client and the server. Infusion
will remain a completely server-agnostic framework for client-side
JavaScript development, and will be used unchanged in the Kettle
environment.
Throughout the process of evaluating and researching these
technologies, Antranig and I have compiled a pretty large set of notes
and ideas about the various technologies we looked at:
http://wiki.fluidproject.org/display/fluid/Fluid+Engage+Server-side+Technology+Notes
This page provides a rich source of information, benchmarks, and
background thinking about the technology landscape for Engage. It
covers issues like hosting, the schema-less approach, and the other
technologies we evaluated. It's pretty dense, but there's a lot there
that you may find useful.
In preparation for last month's Engage All Hands meeting, Antranig put
together a first draft implementation of the Kettle server-side
environment using Rhino, Jetty, and Env.js. While this is still very
much in development, it shows the viability of the approach and
associated toolset (including debuggers!). This code is available in
the Incubator source code repository:
https://source.fluidproject.org/svn/incubator/engage-sketches/trunk/
Yura has set up an instance of CouchDB with Lucene on our build server
and populated it with a small sample of data from the McCord Museum's
collection. It is available here:
http://build.fluidproject.org:5984/_utils/database.html?mccord
I'm quite enthusiastic to hear your thoughts, comments, and ideas
about this approach.
Colin
---
Colin Clark
Technical Lead, Fluid Project
Adaptive Technology Resource Centre, University of Toronto
http://fluidproject.org
More information about the fluid-work
mailing list