Seed started out as a practice to create a data binding library that mimics Angular. While implementing it I also shaped the API to get rid of several things I don't like about Angular:
- auto magic compile and no familar instantiating objects
- have to be aware of how $digest loop works
- doesn't play well with module build tools, e.g. component & browserify
- bundles too much stuff (I just want data binding, something lightweight)
- I like CommonJS modules.
- I like data binding with plain objects.
- I like automatic dependency tracking, not digest cycles.
- I like small libraries that do only one thing and do it well.
- I like libraries that play nice with others.
- I like simple and non-obtrusive APIs.
- I want as few dependencies as possible.
- I don't care about IE8 or below.
- Works well with modular build systems
- Encapsulate your ViewModel logic as components
- encapsulate your directives, filters, etc
- declarative
- inspiration from Polymer/Web Components
- 10kb gzipped
- no dependency
- Ember: wrapper objects (verbose syntax, limited)
- Angular: dirty checking (performance issue, but most accurate)
- Seed: replace properties with setter/getters (modifies original objects but doesn't affect usage)