Did Famous Finally Get It Right?

It wasn’t until I heard it from the horse’s mouth at the recent jQuery San Francisco conference that I understood what Famous was doing with millions of dollars, talented developers, and a large hype drum.

Up until last week, I thought Famous was just another tool for creating ambitious and artistic animations on the web using a custom JavaScript engine written over WebGL.

famo.us-Stress-Test-Demo

I suppose I also knew at some level that they had a mobile interface offering. But, the details remained unclear in my mind. In fact, even after the jQuery conference, I am still a little confused if the mobile specific play is relevant anymore.

So, like a lot of people, I thought, “cool story, Bro, welcome to the animation-mobile-bandwagon. Now take a seat!” But, as I found out, there is more to it than that. Famous, in theory, isn’t trying to compete as just another animation engine or just another mobile framework solution. Instead, in my opinion, Famous is trying to resurrect an older wagon (aka Flash), fill it with jQuery users, and blaze a new trail.

Resurrecting the spirit of Flash

flash-logo

Remember Flash? Flash was great. No, really, it was. It leveled the playing field between the performance of native applications and web applications. Flash single-handedly evolved the entire web development community by making it possible to deliver legitimate and desirable UI experiences similar to native experiences, via the web. Just consider the video, audio, and animation experiences it allowed us to deliver.

Of course, Flash wasn’t perfect. In fact, Flash was far from it. Flash required a browser plugin, wasn’t truly open-source, wasn’t built on open standards, wasn’t SE0 friendly or friendly to accessibility concerns. It had its issues, to say the least. Add all these issues together, mixed in some HTML5 hype, and a sniper shot to the head from Apple, and this all meant the death of Flash (or murder, depending upon who’s side you take in the matter).

“Ok, so Flash is dead,” you must be thinking, “tell me something I don’t know already.” Well, apparently, the spirit of Flash is being resurrected by Famous and they intend for it to live on. Did you know that? I didn’t. I wasn’t even aware they were attempting to blaze a similar trail. Or, even make the correlation.

You see, according to the Famous folks, the web should win and building a native application for each individual operating system shouldn’t. Why? Well, app stores are a major pain (i.e. fallible walled gardens) and the complexity of building and maintaining the same application, but coded for individual operating systems, isn’t exactly cheap or ideal. Or, so the argument goes.

Now, in order for the web to win, Famous postulates that there needs to be a solution for building native-like stuff, similar in nature to Flash. But, unlike Flash, the solution would be open source, built on open web standards, deliverable without a plugin via the browser, and SEO friendly. Crack that nut and, Famous believes, the web wins. Developers win. Users win. Game over.

So, Famous has set out with nut-cracker in hand to completely disrupt the development community and make good on the merits of Flash (i.e. native performance via the web). Now, how exactly do they plan on doing that?

Enter stage left the jQuery Community

At this point, as a former Flash developer, JQuery team member and current JavaScript developer, I have to inject the emotion that I am in love with the intentions of the Famous vision/play (i.e. the web wins). I’m even more impressed that Famous realized their best option for seeing this vision realized would be to welcome the jQuery community on board for the ride. This is actually a brilliant move, upon reflection. The jQuery community is growing up and moving on. But, where will they go? Where will the now mature JavaScript/jQuery developers gather, grow, develop, and contribute? Whoever manages to woo this community will have a clear advantage.

Famous is attempting to woo them and is offering up a destination for the jQuery community. They are doing this by taking some of the patterns known to the jQuery community and intermingling these patterns in a new framework for creating widgets and applications, called, “Famous Framework“. By doing this, they, of course, hope that developers will join their movement and momentum will do its job. Given that jQuery widgets created with the jQuery plugin pattern will need to evolve, I find it refreshing that someone is offer a bridge to the next destination. Smart move.

What? Famous has entered the MV* ring!

I’m not going to rehash the current complexity associated with creating and maintaining JavaScript applications. Let’s just concede it’s ridiculously difficult and always changing. However, things will improve in the future, considering ES6 is upon us and the evangelizing of small, modular, loosely coupled, components/widgets is common place these days.

With that said, given the current climate of the MV* death matches, can you believe Famous is entering the MV* ring? Wow. It was hard for me to swallow at first, until I gave the theory on which the Famous framework is built, known as the BEST theory, some serious thought.

Given that React and JSX paved a mental path for me, the idea of keeping a component’s state (data), behavior (CSS but with functions), events, and tree (i.e HTML/JSX) in a single self contained module/component doesn’t seem all that crazy (aka BEST). Especially to this beaten down JavaScript developer, who hasn’t been keeping up with CSS.

FamousFramework.component('jane-doe:nifty-demo', {
    behaviors: {
        '#box': {
            'size': [100, 100],
            'style': {
                'background-color': '#40b2e8'
            },
            'rotation-z': function(rotation) {
                return rotation;
            }
        }
    },
    events: {
        '#box': {
            'click': function($state) {
                $state.set('rotation', $state.get('rotation') + 10, {
                    duration: 1000,
                    curve: 'easeOut'
                });
            }
        }
    },
    states: {
        rotation: 0
    },
    tree: `<node id="box"></node>
});

I’m not going to explain the BEST theory, I’ll let Famous do that.

blog-framework-best-mvc

What I will say is that I didn’t totally hate the theory and the code demo. Why? Well, I wasn’t totally puzzled by how the lead developer arrived (a former Angular developer who wrote the famous-angular integration) at this solution. In fact, like I said, upon further thought, the code sort of made good sense to my brain.

Add in the benefits of Isolated statefulness, a strict messaging interface, and a balance between declarative and imperative, without swerving off the road, and this theory might just have some legs. Especially if you sprinkle on some well known jQuery patterns like selectors and events, and make good on a robust component system that isn’t web components/polymer.

All the right things seem to be being said, and all the right problems are seemly being addressed without getting extreme. Just consider that Famous intends for the framework to be used standalone or with your current MV*.

Ultimately, using Famous should be as seamless and simple as using a div. You can include it, size it, move it, listen to events on it, hide it, pass content into it, query it with selectors, and even style it and bind data to it with your framework of choice – just like you do with a div

It all seems not too warm or too cold, so instead of spitting it out I’m still chewing on it.

Famous what is it?

I think I got ahead of myself talking about Flash, jQuery, and the Famous framework without first explaining what exactly Famous is. So, let me back up here and try and reveal in more detail exactly what the Famous project is offering. Because, as I would imagine, you’re likely still confused on the details, as I once was.

Essentially, Famous offers developers a Flash stage in the browser to do much of the same stuff we once did in Flash. However, this stage is an abstraction built on top of the DOM and WebGL (aka mixed mode). But, unlike Flash, there are no keyframes. Instead, there is a physics engine via WebGL, similar to those found in game engines.

The Famous engine, in a nut shell, makes it possible to lay out and animate DOM + WebGL in a single coordinate space at 60 frames a second. So, let me spell that out for you. By using Famous you get native performance (no plugin required) in a browser if, in fact, you are using a new enough browser.

Now, because the engine is built upon open web standards, its delivery vehicle is the web platform. The DOM part is needed so the that text can be seen for SEO purposes and the WebGL is needed so the interfaces and animations are not hindered by performance issues associated with traditional browser rendering of HTML5 applications.

All of this results in what Famous believes to be the original intention of Flash, actualized by the engine they created. Layer on the framework discussed earlier and together this is Famous. Of course, they are hinting at more layers, but more on that in a minute.

That’s the magic in as few words as I can explain it. Ok, that is a lie. Let me try and boil it down even more.

Famous is a solution that will give you native performing UI’s, delivered on the web platform. In other words, if Facebook used Famous when it attempted to create an HTML5 application a few years back, they would have succeeded. Why? Because it would have performed exactly like a native application. Except, well, the browser support would have been very, very limited.

Additional upsides to Famous offering potentially include avoiding app stores, and all that entails, as well as going all in on the development of a specific native application running on a specific OS.

By relying on Famous, the idea is that developers won’t have to compromise on performance and can still enjoy all the benefits of the web platform and its delivery mecca.

Famous final destination?

Famous is a good citizen, giving its engine and framework away for free. But we all know at a certain point money can’t just be spent. The piper must be paid. Money has to flow back up stream at some point. And the 30+ million dollar question in Famous’s case, is: how will they turn a buck?

From what I can determine, the money making plan is to create an online tool similar to the Flash IDE.

flash

This tool will allow developers to visually construct native-like applications and immediately deploy those applications over the web. This model isn’t new. This is the end-game for a lot of start-up companies. Charge people to deliver it, host it, and analyze it, give the tools away for free. It could work. They just need a large enough wagon of developers, a damn simple idea, and the ability empathize with its users as well as, or better than, jQuery did.

What do I do with Famous today

I’m not going to suggest that you run out and start using Famous today, or even that you immediately go and give the getting started experience a try. But, I will suggest that if you have discounted the offering as something not worth thinking about, I’d actually move it back to the list of technologies that you should keep a close eye on. Especially as a lot of us are pondering what will be the next evolution in area of jQuery-fueled widgets/components.

As a UI company that is all-in on JavaScript, we (Telerik) watch these new frameworks very closely. Having a runtime, such as the one Famous is proposing, will still require advanced and complex UI components, and probably not the kind the developer wants to build themselves. We did some initial testing spikes rebuilding some of the Kendo UI Widgets on Famous when they first launched. At the time, we determined that it wasn’t quite ready. This new direction is something that is very interesting and worth watching closely.

Personally, I’m waiting for them to remove the CommonJS/Browserify stuff and get on board with ES6 modules and modern day tools like webpack and jspm before I continue kicking the tires.

The future of Famous

The Famous ideals are divine, but the execution is still very much an unwritten story, dreaming of a monumental disruption. What will the future bring? I have no idea. But I do think that it best not to forget about Famous. Keep your eye on it! It might just surprise us all. Famous might just be that scrappy little technology that outlasts, out-works, and outperforms everything in its way. Kendo UI for Famous anyone?

Comments

  • Pingback: Dew Drop – June 29, 2015 (#2044) | Morning Dew()

  • Mike

    This is a well-balanced summary of the potential for Famo.us.

    Hats off to Telerik for funding this kind of state-of-the-nation overview. The company must be in a tough spot right now; trying to chart a course for UI widget domination whilst ensuring this must be compatible with, and not overlap too much, with whatever MV* UI system wins out in the rest of the world. It must be a mirror of the dilemma that every corporate dreaming up a cross-platform stack has today: “which framework is a safe investment?” except that Telerik funding (probably) doesn’t permit too many bites at the cherry Regardless, developing a bit of thought-leadership is what it’s all about. I’d pay for Cody to come speak to my company 🙂

    I compare this to Sencha’s approach, which I think is suffering from some wilful ecosystem blindness, stemming from the CEO’s mandate (from the ever tech-savvy investors) to “go after the enterprise” (a meaningless phrase unless you wear a suit) rather than truly rejuvenate the framework. Their strategy, whether they know it or not, is actually to draw down on the investment and clients gained so far, i.e. the investors have begun the milking phase too soon. Imagine if Facebook/Google/UnicornCorp said “yeah we use React/Flux/Aurelungular to build our consumer-facing system but this completely different toolchain and dev team for syncing thousands of different forms to SAP”.

    Having tried out Famo.us last year, I agree with Cody’s comment that it wasn’t quite there at the time. iOS performance was good, but even premium Android devices (Nexus 7 2013) exhibited rendering bugs and “not-quite-native” dragging performance. So frustrating given the performance leap their matrix3d approach offered at the time relative to almost any other DOM manipulation technique. I have a small concern that by the time they are ready, the performance advantage will no longer be a USP. It’s small though because Newcombe knows long term it’s all about developer tooling/onboarding/access.

    This post is the first time I’ve heard the spirit of Famo.us captured so well. To me, it’s been quite weird how Famo.us seems to have been ignored by the mainstream JS so far. Seriously, read any of the key developer blogs or listen to the podcasts or hear the conference talks. You don’t even hear the name Famo.us dropped that much. I think this article helps explain why the JS community still hasn’t discovered Famo.us: the target developer audience is actually Designers rather than Programmers. And I agree with Cody – that’s a very cool thing.

  • netaisllc

    @Mike “it’s been quite weird how Famo.us seems to have been ignored by the mainstream JS” — Absolutely agree. IMHO part of the reason for this is the “unique” take Famo.us (Steve Newcomb) has on marketing and communicating their message. He is a little “old school” in that he builds first and announces second. Cody’s post is priceless in that it suppresses Famous’ Apple-inspired hype** and gives the reader the gist, straight-up.

    ** Seriously, who has a “launch event” for an OSS ui toolkit?
    Then again, with that type of funding, I s’pose you can whatever you feel is right.
    I’ll be tracking Famo.us even more closely as they seem to be figuring it out.

    • seba

      He builds first then announces? Famo.us was seen for almost 2 year as a hoax, since they announced their game-changing framework only to go radio silent for 2 years before releasing a very first, completely unsatisfying product.

    • TheAfterman

      This article was the first thing I’ve heard about Famo.us, and that was the gist of my initial reaction too.

      It rings alarm bells to me when wooing jquery developers, marketing and launch events are more central than building a good framework. As someone above mentioned re: Sencha/Extjs, it’s that same approach of monetising the product before quality and imo Sencha is a massive trainwreck that I wouldn’t touch with a 10 foot pole. I would hope Famo.us can avoid that but I’m not holding my breath after reading this article.

  • john frink

    Very good summary of evolving holy grail of ubiquity. However a question.

    I have heard no mention of any baked in security features. Flash had problems, will BEST? With the IOT being web based at some level and functionality being pushed up and downward security will be an increasing problem. It sounded in the keynote that replay of user interactions will be possible. With big data and other tools this could be a big problem.

    • seba

      Flash was an NPAPI plugin, this is just plain JS. So the security issues are completely different. At most there can be some xss attack due to bad sanitizing of data.

  • Pingback: Where is the famo.us engine going? – genox()