Scriptable Applications and the Web

March 15th, 2010

0

Scriptability is a great feature to have in your application. It’s neglected far too often by application developers, for a number of reasons. The developers might be skeptical of the benefits, they might not understand how easy it is to add, or they might not suspect
that any of their users would want to write code. (Only in very rare cases is it actually undesirable.) As applications move to the web, scriptability becomes even more important, but also more flexible for both you and the user.

Backing up a bit, what are these benefits of scriptability? The main one, the one most likely to be of interest to you (provided you like having users) is the sort of vaguely defined: your users will love your application. Seriously. AutoCAD’s popularity is nearly uncontested in its space, and what defined it was AutoLISP. Another good example is Unix: the user’s interface to the system is a programming language, the shell, among the plethora of other scripting languages available with most modern variants. Photoshop would definitely be a very different application without scripting. MacOS has had AppleScript for a long time, and OSX now has MacRuby .

For desktop applications, it is simple to add scripting: there’s a plethora of software available. A whole class of languages sprang up for embedding a user scripting facility inside applications: Lua is a prime example of this, and has a very permissive license. There’s also librep , which allows you to embed a Lisp runtime, provided your application is GPL’d. Pez embeds a Forth-like language, and is public domain.

Your users will inevitably have other plans for your software than you do, and people love tinkering. Even people who don’t code will want to download plugins built by other users. Have a look at MySpace: no real scripting, just CSS, and people spent hours tweaking it. People surfed around looking for layouts they liked, and professional web designers actually made money building MySpace layouts. Facebook arrived, and built an entire platform for application development, which generated interest from users and cash for developers. Facebook was, in essence, getting people to add features to their site for a nominal cut of their advertising revenue.

The case for making things scriptable aside, how does all of this relate to the web? That a number of applications have moved to the web is very old news. The benefits of letting users write scripts for your application haven’t gone away, but your application itself has, and moved to the datacenter. The great part is that this doesn’t change anything. In fact, it’s arguably easier now that you don’t even have to provide users with a language: just a REST (or whatever) API.

In retrospect, it seems obvious, but a good API for your web application is arguably more important than scripting is for any client-side application, and, unfortunately, still neglected too often.

Twitter is a very good example of development being driven by an API. Twitter has, by most accounts, a mediocre UI. If you don’t mind doing science like a barbarian, you can have a look at the public timeline and count how many of the posts on the first few pages came from the site as opposed to, say, TweetDeck or Echofon. They have downtime issues so bad that their error page is a meme. And they’re still wildly popular.

Twitter has an API that developers love, and it does a pretty good job of exposing anything you might want to do with their service in a fairly language-independent way. As a result, there are a number of coders building applications for Twitter, at no cost to Twitter (beyond development for their API). It adds value for the users, of course. To top all of this off, Twitter’s business model is (roughly) getting and selling your data, so in essence, their API is a conduit for externally developed applications to send them data for free. Try to think of the last time you had an idea that brilliant.

A little more seriously and slightly more on topic, though, that is what an open, clean API gets you: a community building features or even entire applications based around your application. The effort required to create a good web API, like the effort required to ensure that a desktop application is scriptable, is a small investment if you think of it in terms of how many developers you are trying to get to work for you for free.

Tagged with: Scriptability, API, AutoCAD, AutoLISP, Unix

Related Posts

Author

Pete Elmore

Default-avatar-small

Pete is a Developer on the Pane team.

Tags

API Aardvark Athletes AutoCAD AutoLISP Avinash Kaushik Barrelfish Calculus Careers Catalysts Community Community Conferences/Conventions Conferences/Conventions Culture Digital Footprints Evernote Gaming Geek Culture Glass HR HTML Haskell Holidays IPv4 IPv6 IgniteLA Ignorance Innovative Interactions Kanban Knowledge LEGO Lomography Los Angeles Martha Stewart Movies Multikernel Music NBA QA Resolutions SGML Scheme Scriptability Social Fresh Software Development Sports Stereomood Swag Unix Videos World Cup 2010 advice agile ajax apps beta testing beta versions bloggers brands browser call/cc china comet communication community management computation continuations control-structures copyleft copyright coroutines creative workspaces creativity critiques css cucumber cursors customer service customer support data products design designers dynamic code entrepreneur entrepreneurs exceptions extension facebook feed firefox franken post gadgets generators google greasemonkey grid system http humanization innovation intellectual property internet iphone jQuery javascript job search job-hunting jobs lambda lamp marketing markov chain martinis monetization strategies mottos mst3k networking new technology open source software passion patent plugin privacy productivity programming languages pure-function quality assurance readability remote pair programming resumes tips rspec ruby ruby on rails scalability screencast security servers social media software engineering start-ups state syntax team members terminology test threads tips tools turing machine type theory types typography user experience user stories vidcon web development webspider xbl youtube zappos

0 Comments Leave a comment

Leave a comment

Anonymous
Right now

Your comment preview

Reply to comment





Incorrect please try again
Enter the words above: Enter the numbers you hear:
If you are not able to read this, you can get another image or hear it
Want to see an image again?

Allowed Tags

_emphasis_
*strong*
??citation??
-deleted text-
+inserted text+
^superscript^
~subscript~
@code@

Add code using a GIST
gist: gistid