backbone icon indicating copy to clipboard operation
backbone copied to clipboard

Backbone is being actively maintained

Open chkpnt opened this issue 3 years ago • 29 comments

2021-12-14 update by @jgonggrijp: I'll be maintaining Backbone. You can skip to this comment for the latest news.

As this project seems to be dead: is there a still maintained fork?

chkpnt avatar May 07 '21 07:05 chkpnt

There are many forks. I've created my own here: https://github.com/conversejs/skeletor

I'm using it to move away from Backbone views to Lit web components. Still keeping the models and collections for the time being.

jcbrand avatar May 07 '21 08:05 jcbrand

Thanks for the link. Yeah, I see there are many forks. But it's hard to get the living and used ones through GitHubs interface.

chkpnt avatar May 07 '21 08:05 chkpnt

You can try https://github.com/blikblum/nextbone

It uses ES classes, is tree shackable, integrates with webcomponents (out of box with LitElement, but can be any web component library), has a form bind component, validation library (backbone.validation conversion), VirtualCollection, LocalStorage.

Also comes with integration with Firebase/Firestore: https://github.com/blikblum/nextbone-firestore and a full featured routing https://github.com/blikblum/nextbone-routing

Everything covered by tests. Lacks documentation

Examples: https://github.com/blikblum/nextbone-wires https://github.com/blikblum/nextbone-contact-manager https://codesandbox.io/s/6jllmlynvz?file=/src/contact.js

blikblum avatar May 07 '21 21:05 blikblum

"Dead" is not the right word. I think you're asking will there be feature additions or API changes?

My guess is the answer is "not likely".

But the project certainly seems to be actively maintained (and well, stable...)

ejdaly avatar May 13 '21 15:05 ejdaly

It is pretty much dead. There are so many things that could be done to move this project forward that are not being done.

For example, in skeletor I've created a Backbone view (called ElementView) that doubles as a web component.

Nextbone is also working with web components.

One of the biggest drawbacks of Backbone (due to its old age and legacy) is that views can't be nested and rendered declaratively, like you can with modern frameworks. Absolutely zero work has gone in to try and address this in Backbone itself.

Another thing that could be done would be to get rid of underscore, either by using only native methods or using lodash with tree shaking (something that I do in Skeletor) and another thing would be to split code out into multiple files and start using modern language features.

Lastly, I have a lot of respect for Jeremy, but the fact that the project is still under his personal Github account and that a Backbone organisation was never created is a red flag, and might very well have contributed to this project dying (given that he himself is not interested in continuing work on it). It doesn't look to me like there was ever much effort put into trying to make this a community managed project. If there was, then perhaps there would have been more efforts on modernization and renewal.

jcbrand avatar May 14 '21 12:05 jcbrand

I would imagine that most projects that use Backbone for it's Model, Collection, View "primitives" will extend their capabilities a lot over time, to fit their application needs. That's precisely the market fit for this project in my opinion - to provide those primitives and allow people to extend as needed.

I'm really happy with Backbone having a fixed and very stable feature set / API; it allows me to depend on it long-term..

Anyway, the good thing is we are spoiled for choices for frontend frameworks and rendering libraries and reactive data libraries these days :)

I think Backbone, precisely because of it's simplicity, still forms a very valid option as part of the overall picture for many projects; so in that sense (and that it is actively maintained...), I would not consider it "dead".

Most of the Linux tools we use every day (ls / cat / df / ...) haven't changed in 20 years - but nobody considers those projects to be "dead"; they're just small feature-set applications that do one thing well, and that's all they should ever do...

ejdaly avatar May 17 '21 19:05 ejdaly

btw @jcbrand I really like what you've done with skeletor - it's actually really similar to how I use Backbone.Views (.toHTML methods, no jquery, WC etc..). My point mostly is that Backbone is a library to enable people to build their own opinionated data-handling classes, view rendering, integrations, etc... I don't expect or want Backbone to make those decisions for me.

ejdaly avatar May 17 '21 20:05 ejdaly

Sure, having a lib with a stable feature set or API has its advantages. But it's a pity VSCode or other IDEs can't give me the support I expect nowadays due to the way the API is designed.

chkpnt avatar Nov 12 '21 13:11 chkpnt

@chkpnt: Could you please elaborate? What is lacking for these IDEs?

jcbrand avatar Nov 12 '21 14:11 jcbrand

I've got nearly no IntelliSense within a Backbone.View.extend({...}) or Backbone.Model.extend({...}) method call.

Unfortunately, I'm unable to give VSCode the corresponding type hints, see https://github.com/microsoft/TypeScript/issues/36771#issuecomment-967012356

chkpnt avatar Nov 12 '21 15:11 chkpnt

I'm guessing if you extended via the ES2015 extend keyword it wouldn't be a problem?

At least with models, you can extend them the ES2015 way. With Views it's more tricky (IIRC due to the events declaration, there's a long issue about it in this tracker).

In Skeletor the ElementView (which is basically a Backbone-like View but also a web component) is a ES2015 class and you can extend the ES2015 way as well.

jcbrand avatar Nov 14 '21 21:11 jcbrand

I understand why some people feel that Backbone is dead. Years go by without updates, PRs and issues go stale, and there is no adaptation to relatively new technologies like ESM.

Still, I would consider Backbone mostly alive for the following reasons:

  • It is still being actively used by many people, including myself.
  • It has a clever, timeless design.
  • It is not seriously broken. In fact, it works perfectly fine in modern browsers and I have the impression that it is pretty much bug-free.
  • While @jashkenas is very busy with other projects, I know for sure that he still feels responsible for the library and that he would merge PRs that addressed serious problems (if they would arise), or even address such problems himself. I know he has this attitude, because I have communicated extensively with him about Underscore, which I am now maintaining.

That said, I would like to see Backbone a little more actively maintained, too. ESM support would be nice. I am also contemplating a future Underscore 2.0, which would necessitate a Backbone 2.0 (at least for me, because I want to keep using Backbone). If I decide to break compatibility between Underscore and Backbone, it will be unfair of me to expect Jeremy to restore it, so I should do that myself when the time comes.

I will ask Jeremy whether I can maintain Backbone as well.

jgonggrijp avatar Dec 10 '21 23:12 jgonggrijp

Update to the above: as I expected, Jeremy replied quickly. He has given me collaborator access, so I can manage issues and pull requests. 🎈

I'll introduce myself, because I'm mostly new to the Backbone issue tracker. I work part time as a scientific programmer and part time as an open source contributor and consultant. I prefer to build my web application frontends using Backbone, Underscore, jQuery (old is gold!), Mustache and i18next. Since discovering Backbone.Radio, I've been consistently using that as well. I've published a couple of smallish plugins for Backbone, backbone-fractal and backbone-machina, as well as two other very small libraries that can be useful when developing Backbone applications, jquery-promise and handlebars-i18next. I have also contributed to backbone-relational and @types/backbone. I'm currently working on a new Mustache implementation.

As I mentioned in the previous comment, I've been maintaining Underscore since 2020. All Underscore releases from 1.10.0 onwards were mostly the result of my contributions (the current release is 1.13.1). During that time, I modularized Underscore, added support for Node.js's particular way of handling ES modules and made many other, smaller contributions, all while working hard not to break anything (there were some bug fixes, which invariably break the code of someone exploiting the bug, as well as some accidental breaks, but I repaired the latter). I also added sponsorship options and a security policy. You can expect all of that goodness to come to Backbone, too, over time.

With that background information, here is my plan in stages:

  1. I'm subscribed to this repository, so any new comment, issue or pull request that comes in from now on is likely to see a fast reply.
  2. Since I'm mostly unfamiliar with the discussions that have taken place in Backbone's issues and pull requests, I'm first going to take my time triaging the open tickets. I might however already make some light code changes and publish a patch release during this period, if I encounter any pressing issues. You can track my progress on this in the project board that I have just opened for this purpose. This stage is likely to take months, also because I'm currently part time studying, so please bear with me and be patient.
  3. Once I've oriented myself, expect some significant code changes within a relatively short amount of time. During this stage I'll address pre-existing high priority tickets and at the very least, modularize Backbone with Node.js ESM support. There will be at least one minor release during this period, which should give a much more up-to-date feel to Backbone.
  4. The remaining legacy tickets will be addressed at a more relaxed pace. During this stage I'll also add a code of conduct, a security policy, sponsorship options and probably a Twitter account (by the way, you can already sponsor my open source work in general through my Patreon). By the end of this stage, Backbone will be in an excellent shape again.
  5. Backbone will finally enter a long-term state of active maintenance, where tickets are handled as they come in. I expect a low code churn, because I believe Backbone is already mostly fine as it is. There may however be an occasional big feature, as well as a major release when Underscore 2.0 comes around.

Questions and comments welcome!

jgonggrijp avatar Dec 14 '21 16:12 jgonggrijp

Update in case anyone is wondering: I'm still at stage 1 of the above list. I expect to dive head first into stage 2 somewhere in the next month or so.

jgonggrijp avatar Feb 21 '22 01:02 jgonggrijp

Any update?

GammaGames avatar Aug 16 '22 14:08 GammaGames

@GammaGames Not really. I consider stage 1 more or less finished, but I haven't dived into stage 2 yet, which requires significant focus. The plan is still the same, but I realize it's taking longer than I previously stated. Sorry for testing your patience.

If there is a particular part of the above plan, or an issue or pull request where you'd like to see urgent action, please let me know and I'll see what I can do.

jgonggrijp avatar Aug 16 '22 15:08 jgonggrijp

@jgonggrijp Would setting up sponsorships for backbone.js make sense? I'd love to see backbone financially supported by the community.

karloscarweber avatar Aug 19 '22 05:08 karloscarweber

@karloscarweber Yes it would! In fact, you can already support my open source work on Patreon. I intend to also set up a Tidelift subscription, like I have done for Underscore. Do you think I should make a priority of GitHub's integrated sponsorship button thingy?

jgonggrijp avatar Aug 19 '22 06:08 jgonggrijp

@jgonggrijp Yes. I think it would make it more clear that somebody is supporting Backbone.js. Also I saw Wontache and it's really cool. Good work.

karloscarweber avatar Aug 22 '22 19:08 karloscarweber

Alright, I did it. Only Patreon for now; Tidelift requires some additional preparations.

jgonggrijp avatar Aug 23 '22 08:08 jgonggrijp

OK everyone, high time for an update. Some things got in the way, which meant that stage 2 got delayed way more than I expected and hoped for. Good news, though! With helpful cooperation from my employer at Utrecht University, I secured two weeks that I will be able to spend full time on Backbone: July 17-28. I will attempt to start and complete stage 2 within those ten days. Before that time, I will likely already make some small contributions to Backbone that I'm factoring out of another project. And of course, my base level of maintenance never went away: I'm always keeping an eye on the issue tracker and the pull requests.

To those who would like to know a bit more about the backstory of the delay and a full account of my open source plans for this year: please consider joining my Patreon. It already has some backstory and I have a post coming up with my plans. Alternatively, for those who do not need to know the details, but are still looking into other ways to support the development of Backbone financially: sponsorship is now also possible through GitHub and StackAid. Inclusion in the Tidelift subscription is still planned for the future.

jgonggrijp avatar Feb 23 '23 00:02 jgonggrijp

Stage 2 in progress!

jgonggrijp avatar Jul 18 '23 11:07 jgonggrijp

Patreon reenabled! (EDIT: Switched to GitHub Sponsors due to the fees.)

I won't be able to keep it activated forever since I have to be careful about my expenses, but at least I can support you for a few months.

chkpnt avatar Jul 18 '23 13:07 chkpnt

Thanks!

jgonggrijp avatar Jul 18 '23 16:07 jgonggrijp

I have completed stage 2 except for #4212, where I'm waiting for a reply, and #4274, which is on hold due to the troubles I described in there. I will now make a soft transition into stage 3. By the end of the week, I will issue a release with whatever has made it into master at that point.

jgonggrijp avatar Jul 26 '23 15:07 jgonggrijp

I just published version 1.5.0 to NPM. This closes my full-time sprint of the past two weeks, which was a breeze! Thanks a lot to @paulfalgout, @GammaGames and everyone else who kept me company. You helped me a lot, even if it didn't feel like much effort.

What's next:

  • I will be broadcasting the update on Twitter/X (sigh) and Mastodon after posting this.
  • I will be keeping an eye on my GitHub notifications and my mailbox for the next few hours, in case this update breaks someone's pipeline (not very likely).
  • We are solidly in stage 3 at this point, with a code of conduct, a security policy and sponsorship options already in place ~~(except for Tidelift)~~.
  • I have requested to become a lifter of Backbone at Tidelift. It will likely take a few days before this becomes official, and I might need to tweak a few things about the repo in order to meet their requirements.
  • I will continue to keep an eye on the repo and do maintenance tasks whenever possible. I will also look out for opportunities to do another full-time sprint like this one. You can help me to find time by convincing people (especially your employer) to sponsor the project!

Speaking of Twitter and Mastodon: in my original plan, I suggested creating a Twitter account for Backbone. With the current developments at Twitter, I'm not sure that would be a sustainable move. I could create a Mastodon account instead, or I could just stick to my personal accounts on both platforms for the time being. Opinions and suggestions welcome.

jgonggrijp avatar Jul 28 '23 16:07 jgonggrijp

  • I have requested to become a lifter of Backbone at Tidelift. It will likely take a few days before this becomes official, and I might need to tweak a few things about the repo in order to meet their requirements.

Woops, no, it already happened! https://tidelift.com/funding/github/npm/backbone

jgonggrijp avatar Jul 28 '23 19:07 jgonggrijp

Update on Patreon about the past sprint, with a shoutout to @paulfalgout, @GammaGames and @RayRaz.

https://www.patreon.com/posts/backbone-sprint-87552830

jgonggrijp avatar Aug 11 '23 22:08 jgonggrijp

I saw the latest version of Backbone. Thanks for keeping it updated.

Like your point - "It has a clever, timeless design"

I like Backbone for its simplicity. Thought I share my version of Backbone View. Focused on server rendered apps.

https://github.com/splendidexponent/bview

splendidexponent avatar Dec 09 '23 06:12 splendidexponent