jwahyoung/ng-oboe

Primetime?

Closed this issue · 2 comments

Hi there,

You say "This library isn't ready for primetime yet," in the README. Do you have a list of things that aren't done and/or are buggy?

I'm pretty interested in this adding Oboe to my Angular project, but I'd like to know what I should be worried about first :)

Hey there.

Well - first of all, this library hasn't been updated in quite a while, so there may be some issues with newer versions of Oboe (and, in fact, with Angular; I've moved away from the Angular stack and haven't really kept things updated).

Second, this was more of a proof-of-concept than anything - I was interested in Oboe and I wanted to practice creating plugins for AngularJS. As such (unlike my other library, Memento) there are no unit tests or functional tests in this codebase, which makes it brittle. It also hasn't been profiled for performance - I could foresee problems with a lot of quickly-updating nodes through Oboe causing a great many digest cycles. (See the note below.) While this could be used in a project, you may run into cases that don't work, or other problems as it hasn't been tested extensively. Basically, it's not a drop-in library.

If you're interested in forking the code, though, and you aren't afraid to get your hands a bit dirty if you have to clean up any messes, then feel free to use it! Just know that it's far from a flawless solution in its current state.

Finally - as technology has advanced, and continues to move forwards - you may research the new Fetch spec, which provides some of the functionality that Oboe creates (but with many more options). Fetch, although very new, seems to be the way forward at the moment.

NOTE: I seem to remember an issue with digest cycles specifically; because the codebase uses $evalAsync, the Oboe updates aren't guaranteed to be caught by Angular in order. Using $apply was problematic due to the possibility of updates overlapping each other by occurring in the same timeframe. The real solution to this, looking back, would have been to implement an update queue so that Angular can update asynchronously while preserving the order of the updates. It's stuff like this that causes me to declare this as unready. Hope this helps.

Thanks Jedd. I'll give this a look sometime in the next week (hopefully (if time allows (which it probably won't))).