It is part of the SVG specification. It lets you animate your graphics without the need to program a script, by using xml elements. It is called declarative animations. (see the example on the homepage)

What is FakeSmile ?

It is a javascript library that makes SVG animations work in browsers that support SVG and scripting, but not declarative animations.

This program is a user-javascript. It means it can be executed whenever you browse any web page.
In Firefox, it can be achieved with the Greasemonkey extension (but now Firefox supports SMIL natively).
In Safari, you can use GreaseKit (but now Safari supports SMIL natively too).
To download FakeSmile, you just have to get smil.user.js on github.

How do I use it on my graphics ?

Simply download the script and add this to your document :<script type="text/ecmascript" xlink:href="smil.user.js"/> (see the example on the homepage)
It works on plain svg documents as well as in inline svg.
The extension .user.js may be recognized as a userjs to install. Right-click to download.
(You're a developer, you should know how to download a file).
It won't collide with user-agents that already support animation.

Isn't it sad/ironic/inefficient to emulate declarative animations with scripts ?

You are right. Animated SVG should be a first-class citizen on the web, as it is an open and standard alternative to Flash. This script will consume a lot of resources on your computer, and it might lag. If you are an end user seeking a better experience, I suggest you try Opera. This browser supports SMIL natively and more efficiently. If you are a developer, use this script only if you have to. Don't worry : your SVG will degrade gracefully in browsers not supporting animations. That is, it won't be animated, simply.

My computer is unresponsive ! my CPU is at 100% !

See above. If you decide to keep going with FakeSmile, you can change the frame rate. The very first line of the script defines the number of milliseconds between each frame. The default is 25. If it makes you computer unresponsive, try to use a higher number (e.g 50). But be aware that it'll make the animations more choppy.

The animations are choppy !

See above. If you decide to keep going with FakeSmile, you can change the frame rate. The very first line of the script defines the number of milliseconds between each frame. The default is 25. If you find it too slow, and wants smoother animations, try to lower the number. But be aware that it'll make your CPU more active, and might make your computer unresponsive.

Is there an extension instead ?

Extension mechanism is intrinsically insecure. This script runs in the secure javascript sandbox of your browser. Even if you don't trust me and don't look what's inside, it can't do you any harm. But if you want to trust me, here is the extension.

If your script still doesn't work and you think it should, please report the bug.

Can the script animate XHTML ?

Yes it can. This library is actually not limited to SVG. You can animate the attributes of any XML document, including your XHTML pages. This makes HTML+SMIL work in Opera too. You will need to use one of these namespaces for the SMIL elements :

Yes, for IE > 8.When I wrote this library, Opera was the only browser supporting SMIL natively, and IE did not even support SVG. So the target browsers were all the others. Since then, they all implemented SMIL natively, except Microsoft. But MS implemented SVG in version 9. So when I'm writing this, IE has become the only target browser for FakeSmile.
That said, you can find plugins to enable SVG in older versions of Internet Explorer. They might work with FakeSmile, as it uses only open standards. It should work with any SVG 1.1 conformant layout engine (i.e. ECMAScript 3, DOM level2).

Where does the name come from ?

The name FakeSmile was proposed by Jeff Schiller (who convinced me to publish this work). It refers to SMIL and the fact that it is unnatural to emulate declarative animations with a scripting language.