[plt-scheme] off topic: FlapJax vs Backbase

From: Hans Oesterholt-Dijkema (hdnews at gawab.com)
Date: Fri Oct 20 16:17:48 EDT 2006

Dear Shriram,

Thanks for your prompt reply. I had some discussion
about this with a colleague at work. His argument was
that Backbase had a language on top of javascript.
So I told him I'd consult the expert on this :-).


Shriram Krishnamurthi schreef:
> Hi Hans,
> Backbase and Flapjax are very different beasts.
> The simplest way to think of Backbase is as:
> - a set of widgets that make screen content prettier (but also make
>  programs a bit "heavier" -- now you're learning a new widget set
>  rather than dealing with plain HTML + CSS)
> - a new event model on top of the JavaScript/DOM model
> - a half-baked set of programming primitives, expressed in markup
>  (<if>, etc.)
> We do not provide new widgets; we like HTML + CSS.  We don't create
> yet another event model.  And we give you a real language for defining
> your own abstractions.
> So that's what Flapjax is not.  What is it?
> Flapjax is driven around the observation that interactive programs are
> programs that must react to changes: from servers, from users, from
> devices, etc.  The DOM, for instance, keeps changing over time, and
> the goal of a client-side computation is to describe and transform the
> DOM's contents.  We therefore built a natural model for programming
> such description and transformation.
> Hence Flapjax is built around the idea of reactivity: describe outputs
> as functions of their inputs and, if the input changes, the output
> automatically updates.  This requires propagating information, making
> sure you do not cause inconsistencies, and dealing with a dozen other
> more subtle issues.  Therefore, relative to Flapjax, Backbase and
> other programming models suffer from the inability to cleanly describe
> how things should look (views) and be (models) and leave it to the
> language to ensure that's how things are (controller).
> Flapjax is more than just a client-side programming language.  We see
> that the main use of Ajax messages is to propagate state changes to a
> server and receive updates to the state.  Flapjax therefore provides a
> server interface that is also time-varying.  As a programmer, you
> indicate what value you want saved on the server, and what value you
> want to have reflect the content on the server.  If the former value
> changes, the runtime propagates the change to the server; if the sever
> value changes, the latter local value is updated, triggering a
> recomputation in the rest of the program to reflect this change.
> To get users off the ground, we provide a server.  Therefore you can
> get up and running with server-side persistent data in moments, just
> by registering on our site.  You can also host your app on our site.
> Once you have data on a server, it is natural to want to share it (as
> is done in Google spreadsheets, etc).  For that, the Flapjax server
> offers a Sharing Console wherein you simply indicate whom to share
> data with by providing an email address; the server takes care of
> authenticating them.  When you share, you get to also dictate an
> access-control policy (who can read, who can write), and the server
> enforces this policy.
> There is one more important part of Flapjax.  We want you to be able
> to easily access data from third-party Web services, RSS feeds, etc.
> To that end, Flapjax provides a well-designed API for connecting to
> Web services; if necessary it converts their responses to JSON, so you
> only ever deal with JavaScript values and never get cuts on your
> fingers by accidentally handling <pointy> <objects>.
> Cheers,
> Shriram

Posted on the users mailing list.