Wednesday, December 12th, 2007
Aaron Iba has released AppJet, an online IDE for developing simple web apps. You can
The beta online IDE includes a syntax-highlighting text editor (for JS code, written in client-side JS).
This market is becoming interesting. You have tools such as Bungee Labs, and the Google Mashup Editor, showing that you can do a lot of development directly online, and it does seem that this could be a great future. Let a developer build their application, test it, and just hit “deploy”! Done.
AppJet itself was interesting to play with. Although a little rough around the edges, you can see where it is going.
I asked Aaron a couple of questions, and he kindly went into detailed answers:
What are you trying to accomplish?
The short-term goals are to make it easier to get simple web apps
online and make it easier in general to whip up programs that “run on
the web”. By making it easier we hope to appeal to both beginners and
experienced hackers. After all, experienced hackers don’t like to do
unnecessary work either.
We hope that this will expose the “long-tail” of web apps. There is
no limit to the number of interesting programs that can be written in
100-line-program ideas don’t get published as web apps because there
is a lot of activation energy required to get a web app online. We
hope AppJet changes this.
Longer term, we want to be a platform for all sorts of web apps. We
have ideas for how to make AJAX programming easier by doing the whole
respects to the GWT team whom I know and regard very highly from my
days at Google).
As a simple first step toward client-server integration, we enable
different “sections” of code to appear in the same source file. You
can specify a section of code to be run on the server, the client, or
shared between both. For instance, the shared code is useful for
running the exact same form validation code on the client and server.
Why did we do this?
Mostly, we were sick of all the hassle of setting up servers,
configuring apache, installing MySQL and php and mod_whatever, just to
get a simple web app online. So we largely did this for ourselves so
we could whip up little apps faster. We also think it would be great
if it were EASIER to write a web app than a desktop app. This would
change things: if you’re going to write a simple computer program,
then instead of writing it on your desktop and not sharing it with
anyone, you could make it a web app and other people can benefit.
What kind of applications are particularly well suited to this
kind of development?
Right now, simple web apps that require server-side processing and/or
persistent storage. Like a custom sign-up form, basic input/output.
We also happen to be a really good place to prototype a facebook app.
“The Compliment Machine”, for example, is a facebook app we wrote and
has been secretly hosted on AppJet for the past month.
Our app server is currently very efficient about serving high QPS, but
our storage system is capped at 10MB, so if a facebook app on appjet
becomes a hit, then it will probably reach the storage limit. We plan
to offer paid accounts with increased storage.
Longer term, I think we’ll also become a good place for AJAX apps and
for mash-ups. Right now our mashup support consists of a server-side
wget() function that downloads a foreign URL, but you could imagine
where we could go with this.
Aren’t you tied to the platform?
Our business model does not depend on locking people in to our
platform. The primary value we provide is easy, efficient hosting,
but we will also at least release software that lets you host an app
yourself. This is relatively low priority for us now because we’re
not sure how much users care about it, especially for the kind of apps
AppJet is ideal for. If it turns out users care a lot about this, we
will quickly release host-your-own-app server software. We will
probably also even release the source.
you can already view the code to our framework by clicking the source
link at the top of any doc page .
The only software we have that we feel is essential to keep
proprietary is our unique app virtualization engine. Most
virtualization efforts to date have focused on virtualizing machines
(e.g. VMWare), but we are going for the long-tail of simple apps, so
we had drastically different requirements. We designed our
virtualization software such that hosting 1 additional app provides
negligible overhead provided that the app does not receive lots of
traffic or consume lots of storage. This way, we can host over a
million apps on a single server, if each app is low-traffic.
So in short, we have no problem releasing all the software necessary
to host appjet apps yourself, but we won’t release the software to
host AppJet itself :).
Posted by Dion Almaer at 8:11 am