Hacker News new | ask | show | jobs
by lsjroberts 3409 days ago
Falcor is a very interesting approach, and as others have mentioned GraphQL is very similar. I can't go into any details, but we have been using Falcor on my team as the basis for our own work. We are gradually moving away from it though as it has become clear it is great for Netflix's use-case but less so for a more generalised solution. Particularly when you throw in streaming data.

I have a sneaking suspicion that the open sourced version of Falcor also isn't the version used internally. This is certainly true of their Prana (a sidecar used to allow a node app to talk to the rest of the Netflix stack). And the repo has had a massive slowdown and basically ground to a halt in the past year - https://github.com/Netflix/falcor/graphs/contributors.

So saying that, I'd have reservations about recommending it for other developers to use. The concepts are great, but GraphQL is more widely supported and discussed. Also the Falcor docs could use some serious work for clarity.

Though I also believe there are better ways to declaratively describe your data requirements against a graph than either Falcor or GraphQL.

4 comments

I'm not sure how great it is for Netflix's use case but it is important to realize how very different Netflix's use case from most web apps. In general, Netflix data is read only. The only data an end user sends to Netflix that he/she cares about is current position (which certainly works most of the time but doesn't seem enormously reliable) and ratings (which you probably won't know or care if they aren't quickly or accurately updated).

If you're writing a truly interactive system where, for example, you expect multiple devices to be active on the same account working in sync then Netflix isn't paving these paths.

> I have a sneaking suspicion that the open sourced version of Falcor also isn't the version used internally.

The JS Falcor Client is used at Netflix. We're not yet using the JS Falcor Router in production.

Ah that's good to hear. I hope I didn't come off harsh :)
Falcor extensions like streaming are up at https://github.com/graphistry/falcor , which we slowly contribute back to the Netflix one. We've been loving UWS+falcor on the server talking to falcor in the client, and even smoother with node-opencl & webgl bookending them.
Supporting streaming in such a system is tricky. I think David Nolen in Om.Next wants to explicitly support it. He mentioned it in some talks, but I cant find much about it.

> Though I also believe there are better ways to declaratively describe your data requirements against a graph than either Falcor or GraphQL.

Om.Next used Datomic Pull Syntax, it seems really powerful. Im not sure how it compares to Falcor or GraphQL.

Our approach is being influenced by Om.Next, though I personally don't have a great deal of knowledge of it.

I'm a fan of Elm, and it and Om.Next share some significant concepts I believe, so that's been guiding a lot of my thinking with regards to this stuff.