Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Backbone is being actively maintained #4244

Open
chkpnt opened this issue May 7, 2021 · 29 comments
Open

Backbone is being actively maintained #4244

chkpnt opened this issue May 7, 2021 · 29 comments
Assignees

Comments

@chkpnt
Copy link

chkpnt commented May 7, 2021

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?

@jcbrand
Copy link

jcbrand commented May 7, 2021

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.

@chkpnt
Copy link
Author

chkpnt commented May 7, 2021

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.

@blikblum
Copy link

blikblum commented May 7, 2021

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

@ejdaly
Copy link

ejdaly commented May 13, 2021

"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...)

@jcbrand
Copy link

jcbrand commented May 14, 2021

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.

@ejdaly
Copy link

ejdaly commented May 17, 2021

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
Copy link

ejdaly commented May 17, 2021

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.

@chkpnt
Copy link
Author

chkpnt commented Nov 12, 2021

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.

@jcbrand
Copy link

jcbrand commented Nov 12, 2021

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

@chkpnt
Copy link
Author

chkpnt commented Nov 12, 2021

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 microsoft/TypeScript#36771 (comment)

@jcbrand
Copy link

jcbrand commented Nov 14, 2021

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.

@jgonggrijp
Copy link
Collaborator

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
Copy link
Collaborator

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 jgonggrijp changed the title Maintained fork Backbone is being actively maintained Dec 14, 2021
@jgonggrijp jgonggrijp pinned this issue Dec 14, 2021
@jgonggrijp jgonggrijp self-assigned this Dec 14, 2021
@jgonggrijp
Copy link
Collaborator

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.

@GammaGames
Copy link

Any update?

@jgonggrijp
Copy link
Collaborator

@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.

@karloscarweber
Copy link

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

@jgonggrijp
Copy link
Collaborator

jgonggrijp commented Aug 19, 2022

@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?

@karloscarweber
Copy link

@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.

@jgonggrijp
Copy link
Collaborator

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

@jgonggrijp
Copy link
Collaborator

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
Copy link
Collaborator

Stage 2 in progress!

@chkpnt
Copy link
Author

chkpnt commented Jul 18, 2023

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.

@jgonggrijp
Copy link
Collaborator

Thanks!

@jgonggrijp
Copy link
Collaborator

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
Copy link
Collaborator

jgonggrijp commented Jul 28, 2023

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
Copy link
Collaborator

  • 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
Copy link
Collaborator

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

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

@ghost
Copy link

ghost commented Dec 9, 2023

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants