briebug / ngrx-auto-entity

NgRx Auto-Entity: Simplifying Reactive State
https://briebug.gitbook.io/ngrx-auto-entity/
Other
66 stars 12 forks source link

Project still alive? #246

Open FiniteSingularity opened 1 year ago

FiniteSingularity commented 1 year ago

Hi Jon and the rest of the briebug team.

First off, thank you for all you've done in creating ngrx-auto-entity. I've been using it since the very early days of the project, and it has made a lot of my ngrx development so much easier. I use it in a very large (single dev) Ionic/Capacitor/Angular application, and my current ngrx state has well over 100 features (all managed by ngrx-auto-entity). That said, I am starting to wonder if it is time to make a contingency plan for my project, as it will be weeks of work to convert over to vanilla ngrx entity at this point. As it stands now, ngrx-auto-entity limits me to Angular 13 (officially at least), which caps me at Ionic 6/Capacitor 4 (and it looks like the npm release only goes up to Angular 12? Never mind, I misread this). I've read through issue #237 and absolutely understand the difficulties y'all are facing with updating for newer versions of Angular. 6-months (and another new version of Angular) later, and I'm starting to wonder how realistic it is that ngrx-auto-entity will be supported for more modern versions of Angular. Any light you could shed on this would be greatly appreciated (even if it isn't the kind of news I want to hear).

jrista commented 1 year ago

Hello @FiniteSingularity! Yes, this project is still alive. I use it myself still, and it has been used in many BrieBug projects (while I am no longer employed by them, I am still the primary owner of this particular project.) As things stand currently, for the most part, Auto-Entity has reached a largely stable point in its development. We have had some other ideas, however we've never actually found much use for them in our projects. We did release a companion library with a ready-built entity service that has a lot of useful options for integrating with a pretty wide range of existing APIs, but outside of that we've tried to keep the current feature set of NgRx Auto-Entity stable.

(If you have any feature requests, by all means, feel free to request them!)

Regarding the versioning. With Angular 13 and up, Angular changed how libraries had to be developed. Instead of supporting the "latest" version of Angular, due to how Ivy partial compilation works, you have to target the oldest compatible version of Angular. Currently, Angular 13, 14, and I believe 15 all still currently have the same internal Ivy instruction set that NgRx Auto-Entity requires to be compatible. I have not yet had a chance to test with 16, so I am not yet sure of compatibility there.

So, NgRx Auto-Entity targets, from an Ivy partial-build instruction standpoint, Angular 13, which is the oldest compatible version with FORWARD LOOKING compatibility for all progressing versions of Angular. Until such time as we actually identify legitimate breaking changes in the Ivy instruction set, version 13 of NgRx Auto-Entity should remain compatible.

I would give it a try with whatever version of Angular you would like to target. So far, it seems to work with Angular up through 15 for us. If you do encounter any issues with any version of Angular, please report the bug here. I'll take a look, and if it is an instruction-set related issue, what I'll do is peel off another concrete version branch for the current version, then move the mainline ahead to the next necessary "minimum compatible" version of Angular for newer versions, and release another version.

The long-term maintenance plan for NgRx Auto-Entity is to keep tangent branches around for older versions, such as v13, for long-term compatibility with the supported versions of Angular (which, remember, is FORWARD looking, rather than backwards). If, for example, we must release a new version of Auto-Entity to support Angular 16, then we will do that, and update the official support range for Auto-Entity 13 to be Angular 13-15. If any bug fixes must be made to Auto-Entity 13, we would make those fixes on v13's long term branch, as necessary. For Angular 16 and onward, we would release Auto-Entity v16, marking the "oldest compatible" version of Angular compatible with that newer instruction set.

For now, I would upgrade to whatever version of Angular you wish to use, and see how Auto-Entity works. As long as Angular hasn't changed the instruction set for any of the features Auto-Entity uses, then v13 should continue to support newer and newer versions of Angular. Auto-Entity v13 is currently built with partial Ivy compilation, so it is not directly dependent on any particular version of angular, outside of requiring AT LEAST version 13.

FiniteSingularity commented 1 year ago

@jrista, thank you for the great response! It was quite enlightening as to what is goin on with auto-entity, and makes me much more comfortable with continuing to use it. Cheers!