User login

A Killer App for Common Lisp

One measure of the health and vitality of an online community is the number of people actively participating in that community. The online communities of many programming languages have grown tremendously with the advent of the Internet despite any technical limitations in the programming languages themselves. Although it has been argued for years that Common Lisp is technically superior to other (some would say all) languages, Lisp has failed to capitalize on the boom in Internet users to captivate the same scale of user base that other languages have. I will argue that the focus on technical merit is futile for attracting users and that a "killer-app" is needed to grow a sizable community.

One of Paul Graham's principle arguments for the adoption of Lisp (especially on the server-side) is that Lisp will let you build powerful applications more quickly. The basic argument is that Lisp's powerful abstractions (macros and first-class functions) were key to his success in beating the competition of Viaweb. His numerous essays expounding the benefits of a Lispy company have brought many people to consider Common Lisp as both a venerable repository of programming wisdom and an elegant tool for creating web programs.

But his essays have failed to bring the massive numbers of users the community needs and deserves. One of the most common complaints one hears of Common Lisp is its lack of libraries. This obviously wasn't the case in the past (there are gigantic repositories of old Lisp code buried in FTP sites). People complain that even the simplest of tasks have no decently supported library. It used to be the case that Lisp had most of the libraries. But Common Lisp has failed to keep up with the burgeoning number of file types, protocols, algorithms, and API's that has exploded with the adoption of ubiquitous computing.

While some may blame Common Lisp's technical qualities (overeager use of parentheses, age, difficulty of use), I believe that these are not the cause of its lack of popularity. Many of the popular languages today began life much worse off than Lisp is today. Java was hideously slow when it first emerged from its corporate womb. Despite Ruby-on-Rails' admitted scalability issues, the popularity of Ruby continues to grow. The list goes on. But if it's not technical merit, how does a language become popular? How does anything become popular on the Internet?

In order to understand what draws and keeps users online, I would like to use YouTube as an example, though many other websites would do as well. YouTube has built its popularity on three main functions: consume content, share content, and create content. These are the three purposes of social media that Clay Shirky expounds on. Users can browse YouTube's website for videos, send cool videos they see to their friends, and upload their own videos.

The triad of functionality (consume ("This looks cool"), share ("Hey, look what I found"), create ("Hey, look what I made")) create a virtuous circle. People who browse to the site find cool videos that they want to send to their friends. Those friends then tell more friends, who tell more friends. People want to upload their videos. Some want to impress people and get lots of views. Others just want a place to put their video and get feedback. But for whatever reason they do it, the community grows in size and strength for each video seen, shared, and created.

But there's something more to it: there are extremely compelling reasons to want to participate. Video allows for Narrative. Humans have a deep need to tell and listen to stories. Stories help us navigate the difficulties of life and keep us feeling connected to each other. Video allows for Novelty. New "viral" videos appear all the time on YouTube. Though they don't necessarily tell a deeply compelling story, they are new and creative enough to get sent to their friends a lot. Lastly, video allows for Community. At least the way YouTube does it. People post not only text comments but video responses as well. YouTubers want to participate, find common ground, and express themselves. It was not the technical aspects of streaming video on the web that made it so compelling to use. It was the way it let people interact.

It is this same aspect that brought Perl users together. Perl has the same triad that made YouTube a success: consume, share, create. Perl poetry brought narrative to the community. Perl one-liners in email signatures spread a kind of novelty. People love to compete to write the shortest Perl program that sings Happy Birthday (community). There is something that made people exclaim "Hey, look what I made!" on IRC. Some people collected them on their web pages under a heading equivalent to "Hey, look what I found!". It was compelling to learn how others did what they did. There was a kind of implicit narrative about how extremely obfuscated programs worked. Legends were born. Perl was a social programming language. CPAN (Perl's module repository) acts the same way. People consume modules, tell others about a cool module, and upload their own modules.

I would argue that Ruby is the same. People are excited to find some cool feature, some new idiom. Excited enough to exclaim it to enough people to get the buzz rolling. The RubyGem system allows for sharing and creation of new code in a social way. Ruby's features are novel enough to make people want to share. People feel compelled to try it (consume) because of the ease of creating a new web app with Rails. Before Rails, Ruby was not very well-known. Rails was its killer app.

And if Common Lisp wants a bigger, more vital community, that's what it needs. Common Lisp needs a killer-app. A social application that lets people consume code, share code, and create code. An application that makes it compelling to participate. Technical merits are not enough.

I don't think there is a "magic formula" for creating such an application. I would guess that a lot of experimentation would be needed before anything has the "killer app effect". But I can suggest a domain that I think has a good chance of working. It combines narrative, novelty, and community into its medium (and therefore message). That domain is video games.

Video games are a great medium for narrative. People can tell very compelling, interactive stories with simple games. Novelty also plays a big role in games. Players want new graphics, new gameplay, and new levels. And consuming good games is inherently compelling because it is fun. Sharing cool video games is natural.

The last part of the triad needed to make it compelling is the community. And that has to be done right. People need to feel that they belong and that they want to contribute. It would be a trivial exercise to emulate YouTube and make a website that had pages for each video game, score boards for high scores, and comments.

And although on the surface people are creating and playing video games, more fundamentally they are writing and sharing Lisp code. A cool video game will most certainly stoke the curiosity of programmers. And when they ask "How was this written?", the answer is but a click away. People will post their code to their blogs and on IRC and in their email. Much as Javascript one-liners make their way around the web-development world, Lisp one-liners would allow the prowess of coders to be known by all. "Run this line at the REPL and watch my cool fireworks display." "Pong in 10 lines." I think it speaks for itself.

The technical hurdles are small. At base, one needs to be able to create, consume, and share the games. A good Common Lisp video game framework would let users interactively develop small, fun games. People could develop the game interactively---they could see the results of their coding as they code. A good framework would make it simple to create a simple game. The SDL bindings in Lisp seem to have a good reputation, so it shouldn't be hard to bootstrap something. Consuming should be as easy as downloading a file and pointing their Lisp image at it. Sharing is trivial with the ubiquity of email.

I believe that this could work, if executed well. And there are certainly other applications that have potential. But I am certain that Common Lisp needs a compelling application to draw new users. Espousing its technical merit (even superiority) will not grab a decent share of the programmosphere. Can we encourage an irresistible urge to show off Lisp code? What would it be like to commonly see Lisp expressions in people's email signatures?

Comments

Flash

SDL is great for stand alone programs, but I think you'd have a much better chance to do something that could run in a web browser. A lisp library/language that used flash as a backend might be something to look into.

I've been thinking about that

Yeah, it's a great idea. There are fewer security concerns. I just wonder how you can have Lisp interaction without implementing all of Lisp in Flash! 8P Because that's kind of the point. Let people load other people's code, run it, then mod it. All without compiling outside Lisp.

Firefox with lisp?

Maybe firefox should have lisp with some graphics and sound primitives as alternative to flash?

Pet Tomato guys are using CL

Pet Tomato guys are using CL to develop Flash games: http://xach.livejournal.com/175304.html

Eric, we need to seat down and write what's missing in Lisp: a easy to use package installer/manager like RubyGems, a good start point site and a CL distribution to newbies, we need to give all our love to the existing packages, and yes, a killer-app maybe will be a great way to promote all of these.

Great link

Yeah, package management is key. A one-click installation of SBCL would be incredibly useful. I think it needs to be batteries included (lots of libs!).

LispBox

Well, there is already the Lisp in a Box package.

Well, Nate Lokers already wrote Lisp and Scheme...

...in ActionScript:

http://www.solve-et-coagula.com/?p=9
http://www.solve-et-coagula.com/?p=19

So you don't have to write it yourself.

games

We are currently working on a RTS game written in 100% common lisp, using opengl. Although we have not published anything in the last months, there has been progress and i hope there will eventually be something we can release. You can look at some older shiny pictures.

There is also a library for 2d games based on sdl, called Pixel Art LIbrary.

I'd contribute to something like the Framework/Library/Engine thing you propose if someone more experienced started it :)

The game look awesome

Thanks for the link! I knew there had to be good Lisp games out there.

How about a server-side Lisp

How about a server-side Lisp implementation of AMF so my Flex/Actionscript client can replace it's miserable Ruby/Rails back-side with a shiny new Lisp implementation?

A killer app would certainly help

You're right, LISP does need a killer app to help boost its online popularity. Perhaps you can write us one?! :)

it's cliche by now, but . . .

I know it's a tired thing to say, but I am working on it but it will take a while since I'm busy. I am finishing a thesis whose deadline is fast approaching. The bright side to the nearness of the deadline is that I can start to work on it in earnest much sooner.

Apache Ant replacement

How about a Lisp replacement for Apache Ant (java) ?
Not a super "killer-app"... but would put Lisp into many Java developers' radar.

Ant scripts are XML-based and it's a pain to extend the language with new XML tags.

Since the structure of those scripts look a lot like Lisp, it'd be easy convert existing XML scripts into executable Lisp. Using Lisp gives you the full power of the language (macros, libraries, etc...).

See http://www.defmacro.org/ramblings/lisp.html

A modern "gmail-like" email client for the desktop

Everyone uses email. Lots of people love gmail and would love to have gmail-like functionality on their desktop email clients.

A modern, fully customizable (ala Emacs) email client written in CL. That's what I want.

Use a modern, multi-platform UI toolkit (like QT).
Are there CL bindings for QT ?

This sounds good, but . . .

This sounds good, but is it really a killer app? Do enough people really want to program their email clients?

Well... not every user wants

Well... not every user wants to program his/her email client, but many will happily use extensions written by others. Think Firefox plugins.

And a really good email client would entice users even if they are not interested in its customization power.

Why not old-school: Computer-Algebra?

There is Maxima (former macsyma) which is a large compute-algebra-system under active development.

Very interesting and

Very interesting and intriguing article, i enjoyed reading it.. thanks a lot.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.