Couch Potato is useful if you want to delay a few, some or most of your Angular components for speed or scale reasons. It allows you to author all components in one framework, and choose through configuration which components are "compiled in" to your application and which ones are lazy loaded, and to have fine-grained control over when that lazy loading takes place. It can help you organize dependencies for your routes.
No, Couch Potato isn't a router. It's meant to be used with a router. It is known to work with with current versions of angular-ui-router (recommended) and Angular's stock router (and ngRoute). It is built into angular-detour. It should work in any context where promises are resolved.
It can also be used outside the context of routing.
At this time, you cannot undefine or redefine components at run-time.
No. At least one experiment is known to have established lazy-loading modules to be possible, but it involves hacking Angular.
What does work: If you have a component that you want to lazy-load and it depends on a non-Angular-based script library, such as d3 or a jQuery plugin, you can depend on that library in the Couch Potato context and defer loading it until your component is loaded.
What doesn't work: If you have a component that you want to lazy-load and it depends on an Angular-based module, e.g. angular-ui/bootstrap, then your application itself must depend on bootstrap at declaration time.
No. At least one experiment is known to have established lazy-loading modules to be
It's not.
For one, Couch Potato doesn't operate at the module level by design. Operating at the component level within application components is the intent of Couch Potato. Module-level dependencies are at a higher-level.
Two, run-time loading of modules isn't here, yet. Time will tell whether/how Couch Potato will fit into the future AnguarJS landscape.
Couch Potato tests: the project does not have any tests, yet. It should have tests before version 1.0.0.
Testing components that are authored as Couch Potato components: guidelines/examples for testing apps built with Couch Potato. Will probably be based on protractor (new Angular testing framework).
Undefining/redefining components (for scale). RequireJS has an undef function that may enable this, but it may also be quite complicated. This is pie-in-the-sky stuff for now.
If the documentation isn't enough and/or you're having problems, use the issues list of the github repository.
Absolutely. Pull requests are welcome.