So what is famo.us then?
As mentioned earlier, Web technologies like HTML and CSS were originally intended to markup and style text based documents and they are not well suited for making rich media based experiences, let alone for making complicated applications. HTML5 has added a lot of possibilities for making more complex websites and apps, but fundamentally it is still a markup language. Famo.us intends to solve this problem by skipping all the markup based functionality of HTML5. We can still use CSS to style elements, but the whole idea of ‘markup’ is basically gone and we are left with a page with a bunch of absolute position divs without any hierarchy or structure.
In that sense there is a fundamental difference between MVC frameworks and Famo.us; the former are meant to organise code but the end-result of using these frameworks is still a HTML5 based website, Famo.us however basically replaces most of HTML5 with its own technology. In that sense Famo.us might be more like Flash than like most existing frameworks. There are some key differences between Flash and Famo.us as well. For instance, one of Flash major shortcomings, and probably a big reason for its downfall, is its proprietary nature, Famo.us is Open Source so that would be less of an issue. Another key difference is that Famo.us uses built in browser technologies and doesn’t rely on plug-ins, which of course also means that it’s dependent on certain browser technologies to make it work. Which brings me to another point, and it’s kind of a big one: Unfortunately Famo.us currently doesn’t currently support Internet Explorer. For mobile only development this is not really a big deal but it effectively eliminates Famo.us as a serious option for web apps that also has to work on the desktop.
Is it a bad thing that Famo.us replaces major parts of HTML5? To be honest, I’m not sure. As a Front-end developer I have to admit it makes me slightly uneasy to have to use a custom API instead of ‘standard’ HTML5. On the other hand, like almost everyone that makes web apps for a living, I have been terribly frustrated by some of HTML5 limitations, like slowness and browser incompatibilities. Either way, it might be a good thing to try a fundamentally different approach so I’m keeping an open mind for now.
Famo.us chases another holy grail, namely the ‘write once, run anywhere’ dream. Instead of having to write different code for different platforms, like iOS and Android, developers can write one application that works and looks as good on all platforms, in theory anyway. This of course saves a huge amount of time and resources. Unfortunately, this idea is not without its problems and has never really worked very well with earlier attempts like Java-applets, Flash and Silverlight. In the end native applications have so far always been faster and slicker and I’m pretty sceptical Famo.us will be able to change this.
So, does Famo.us live up to its stated goals? Well, yes and no. The demos that Famo.us put out were really impressive but after the initial release a lot of developers were severely disappointed by some serious performance issues. Scrolling for instance is really slow and jerky, which is a major disappointment, especially considering how much emphasis is put on the speed of the rendering engine.
The consensus seems to be that Famo.us has a lot of potential but that it’s not really ready for prime time yet and that a lot of kinks need to be worked out before it’s ready to be used for serious production work.
Will we start using Famo.us?
It’s great that Famo.us is pushing the boundaries of what’s possible with HTML5. But it will probably take a while before we at Inspire will seriously consider it for production work. It’s still a bit rough around the edges and we are holding off on using it for production work until it has matured a bit more and when the browser support is a bit better but we will definitely keep playing around with it.