Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

We explored a variety of potential technologies for the Engage services layer. In each case, we considered both a programming language and an accompanying Web framework, recognizing that much of the advantage of a particular language comes from good tools we can reuse. Here's a short list of the options major technologies we considered:

  • PHP
  • Ruby + Merb
  • Python + CherryPy
  • Server-side JavaScript: a) JVM + Servlets + JSGI, and b) V8CGI or other next-generation runtime + Apache module

We explored each of these options through a series of conversations with the Engage development team and the wider Fluid community. An in-depth set of notes and ideas from these conversations is available at the Fluid Engage Server-side Technology page.

Some Background Thinking

< intro to the process >

...

Our Process

Making technology decisions early in a cutting-edge project can be fuzzy and difficult. The goal here was to look at a range of potential server-side languages and Web frameworks, narrowing in on an approach that provides our community with enough flexibility to adapt and change over the course of the project.

Arguably, our evaluation wasn't particular particularly scientific, though we did perform some fairly comprehensive performance benchmarks as we started to narrow down our choices. In general, our process involved carefully examining It's hard to quantify many of the criteria of a successful development environment; our aim was to find a language and accompanying framework that fit both the technological needs of our users and the culture of our development community. Throughout the process, we carefully examined both the features and the context of a particular technology: what it has to offer both in terms of technical solutions as well as the associated community, documentation, and support.

MVC Frameworks

Many of the most familiar Web framework, regardless of language, tend to take a roughly similar approach to structuring code along the lines of Model, View, and Controller (MVC). This particular style of Web MVC can broadly be described as Rails-inspired, and is shared by technologies such as Django, Merb, and others. In short, this approach tends have the following characteristics:

...

While much has been said about the alternative MVC approach we've taken in Infusion...

Web Framework Standards

  • MVC and the proliferation of controllers
  • Goal of ubiquity
  • Infrastructure and being at the bleeding edge

...