[plt-scheme] off topic: FlapJax vs Backbase
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