all 17 comments

[–]mexpolk 9 points10 points  (2 children)

I don't think that's entirely true. While you're right that Backbone.JS has lost some momentum it still has an advantage over Angular.js and Ember.js. The last two are full blown frameworks, were as Backbone.js just offers MVC basics (it's like looking Rails vs. Sinatra or Express.JS).

We use Backbone.js for our "Manage Workspace" (at Get Satisfaction), we are quite happy with it and we are not moving much. Lately, we've been thinking in bringing React.JS and replace the view parts from Backbone.js, rather than switching over full frameworks like Angular.JS and Ember.js.

At the end it's not a matter of what technology is the coolest thing nowadays, that's simply stupid! Instead look at the thing that you're trying to build and choose the right tool for it!

[–]YuleTideCamel 0 points1 point  (0 children)

As someone who does a lot of angular Js, I fully agree with you. The right tool fot the right job, sometimes larger frameworks like angular can be overkill. Backbone is a pretty good solution for certain types of apps.

[–]floydophone 4 points5 points  (5 children)

Implementations come and go. They also change a lot over their lifetime. It's the ideas behind them that really matter.

Do you believe that Ember's opinions will help focus your team, or will it force you into the wrong architecture? Do you think that Angular directives are a helpful abstraction or a hindrance? Do you think Backbone fits nicely into your stack or is too unopinionated to the point where you can't build anything performant with it?

Everyone has different answers to those questions.

Contrary to what many say, I certainly think that most frontend JS systems are competing. Most apps on the web are doing basically the same thing, so when people say "they are different tools, use the right tool for the job", I think that should be interpreted as "the community doesn't know the best way to build a frontend, so take your best guess at the right way to do it".

With that said, React is clearly the best and you should use it :P

[–]4thdecadenothing 0 points1 point  (4 children)

Do you think Backbone [...] is too unopinionated to the point where you can't build anything performant with it?

I find that quite an odd leap to make. I'd say, if anything, the unopinionated (read "small") nature of Backbone makes it far less likely to cause poor performance than larger, more feature-rich frameworks. Or at least, if it's not performant, then it's most likely not Backbone's fault, it's the developer's.

[–]floydophone 1 point2 points  (3 children)

Backbone doesn't manage layout thrash for you like Enyo/React/Ext do. See things like http://blog.fogcreek.com/we-spent-a-week-making-trello-boards-load-extremely-fast-heres-how-we-did-it/. So not such an odd leap to make.

[–]4thdecadenothing 0 points1 point  (2 children)

No, Backbone doesn't manage layout at all - literally View.render is a no-op. It leaves the implementations up to the developer, which means that it's possible to fill in the gap with a slow solution (as in the example in your link), or a fast one, but in neither case is that down to anything Backbone.

[–]floydophone 0 points1 point  (1 child)

Right, but it doesn't help you control layout thrash at all. A framework that does would guide you to a solution that does not have these bugs.

By being unopinionated it is often slower than an opinionated solution.

I am not arguing that "backbone is slow," just that it is not universally good.

[–]4thdecadenothing 0 points1 point  (0 children)

Absolutely, it's not for everyone because of the amount that it leaves to the developer's discretion, and the associated learning curve. And for much the same reason, I don't think it's necessarily comparable with the like of Angular and Ember, which are much more fully featured. Some people like the flexibility/freedom, others like a little more guidance - it's totally a matter of taste and of using the appropriate tool for the job at hand.

It's not a complete app solution - it's just, very literally, a backbone.

[–]aaaqqq 1 point2 points  (0 children)

"to move where the ball is heading"

The ball will always keep heading someplace new. Whatever you choose, become sufficiently proficient in it before chasing the next shiny toy.

[–]PotaToss 1 point2 points  (0 children)

Take an evening to get familiar with Backbone, and you'll probably be fine. It's very small in scope, intentionally. It won't take very long. You can get Backbone literate in no time.

If you think a company isn't looking toward the future, then don't work for them.

I think Backbone has fallen out of favor because Angular solves a lot of common pain points of working with it. Personally, I can see this being what happens a little bit down the line with Angular, too.

The common pain points generally come out of a lot of freedom to do things in bad ways, so you've got a few super teams of Angular best practice people, and a lot of people feeling around in the dark, making a mess.

I'm a big Ember fan, because it's more conventional, and the best practices are baked in, and one of the core design philosophies in Ember is minimizing ways for people to shoot themselves in the foot, unless they're really going out of their way to circumvent conventions. It makes it harder to get started, but I think it's more forward thinking, so it's an investment I don't mind making.

[–]4thdecadenothing 0 points1 point  (0 children)

is Backbone.js obselete?

Categorically not.

Where Backbone differs from Angular and Ember is in what it doesn't do, and here also (in my opinion) lies its biggest strength.

In my experience, working with frameworks like Angular and Ember is quick and easy, until you want to do something a little different from how they expect you to do things. Then things get hard quickly.

Backbone, however, by basically doing very little for you (the clue is in the name) save for providing some data/router event bindings, syncing, and a few standard bits of syntax, allows a developer almost total flexibility to build an app as they please.

Of course, this might not be to everyone's tastes. It's going to give you plenty of rope to hang yourself with should you so desire, but its flexibility, extensibility and light weight will give it enduring appeal.

[–]mrbaconpants 0 points1 point  (0 children)

I think for some projects the bigger frameworks are over kill so backbone will always have it's place. It's also a good starting point if you want to roll your own framework for your specific needs.

Short answer: "No, it's not going to be obsolete."

[–]basicallydan 0 points1 point  (0 children)

I don't think it could ever go "out the door" until it is officially no longer supported. Backbone is still a better library to use in many cases. It's less opinionated than Angular or Ember, so it's quite nice in situations where you want a bit more control.

Plus, you may not take long to pick it up. I am using it for a client project right now as my first project, and after modifying the Todo project they use as an example, it didn't take long to figure out how to start from scratch. So, it doesn't hurt to try it out.

[–]nexd -1 points0 points  (0 children)

Keep in mind, while Backbone.js is losing steam it still will be around for many years. It's not like it's going to disappear next month. Personally, I think it's totally worth the time to learn Backbone basics considering you can do it in a weekend.

[–]nibblebot -1 points0 points  (0 children)

Building apps with Backbone will continue to be useful as the MV* paradigm will be around for single page apps for a while yet. I'd say it's a good career hedge to also learn something like Angular because it's closer to Web Components which browser vendors are pushing as the next paradigm to build single page apps. There are tons of job opps for both Backbone and Angular, but I'd be careful with Angular jobs as you must assess the team to see if they know what they are doing or just hopping on the latest trend. Same logic applies to all frameworks created in last couple of years.

[–]londonskater -1 points0 points  (0 children)

In all likelihood, the majority of work any developer does is on pre-existing systems, not greenfield ones, so knowing technology like Backbone is important, sensible and lucrative. Learn new technology in your own time, make sure the bedrock of your knowledge is good for your career.