We pulled a Backbone app up out of storage along with some others. Then we wrote a few more versions in modern frameworks. It's an internal comparison app. Two things of note.
1) We always start from the Backbone app, it's the easiest to convert to other frameworks.
2) It ran right out of the box, no problems. No library muck and no fixes.
That being said I did eventually move on to writing new stuff in Angular2x, but I stand by Backbone as good and reliable.
Literally this. It still does everything I need and not a thing more and is entirely grokable whilst being extendable. Amazing little piece of software.
I trip out every time I look at the source of it and Underscore. There's nothing there, it's all so simple, it's like the bare minimum amount of code that can be there to do the things it does.
Backbone aka. Memory leaks as a service
Which is the reason Marionette exists in the first place (well that and boilerplate code).
If you create a bunch of stuff then don't dereference/unlink/whatever you want to call it in JS-land it you're going to have a bunch of references to stuff laying around. I don't fault Backbone for that.
Yeah, I cut my teeth on Backbone and I'm super glad for the experience. And as git-pull mentioned, the source code is nicely annotated (and concise), so it makes debugging easy.