/******************************************************************************/
/* TODO */
/******************************************************************************/

>>>v0.x<<<

TODO(spolu): Session Management (when not logged)

TODO(spolu): Onboarding (Networked, no module yet)
TODO(spolu): InMemory Sessions (default modules?)
TODO(spolu): Two phase initialization for modules (`init`, then `start`)
TODO(spolu): Session Management API (to expose to modules)


DONE: 

>>v0.3<<
- GiG.fs 0.3x integration / local table only (alpha)
- Basic Web Interface for Modules (Install, Remove)
- Splash Screen (loading state + link to module manager)
- `core_ui` for all things UI-related of `core` (serving pages)
- Integrate GiG.fs w/ `module_manager`
- Build Session Management on top of GiG.fs

>>v0.2<<
- Expose core API and Implement Stack as a module
- FMA 
 + Core RPC-CALL Broadcast
 + Name-based communication for modules
 + Module management API
 + Module retrieval (local)
 + Add running status to module list
 + Command Line interface for module Management (Dev)
- Remove factory -> common
- ExoBrowser: Run nodeJS only
- ExoBrowser: Merge 1700 and fix DevTools
- Rename repo into `breach_core`

>>>v0.1.4<<
- Connect to free port (multiple instances)
- Find in Page feedback Impl

>>v0.1<<
- Sessions
- Basic local CookieStore
- :exit
- NProgress
- Keyboard shortcuts MacOSX
- More conventional Keyboard shortcuts
- Design (flatter + lighter)
- Box get emptied while pages are loading (#3)


/******************************************************************************/
/* MODULES WORK */
/******************************************************************************/

TODO(spolu): Authentication
TODO(spolu): Distributed Storage
TODO(spolu): Inspector ?
TODO(spolu): Flash ?

/******************************************************************************/
/* FMA MODULE DEFINITION */
/******************************************************************************/

A module is identified by its location. Module may be:
- local: `local:~/src/breach/mod_stack`
- retrieved from github: `github:breach/mod_test#v0.5.2`

The branch part of github modules is optional and is automatically replaced
by latest version or #master if not specified.

breach --module install github:breach/mod_test#v0.2.1
breach --module remove github:breach/mod_test
breach --module list
breach --module info github.com/breach/mod_test

Then modules are referenced by names. Two modules with the same name cannot
be installed at the same time.


/******************************************************************************/
/* NOTES(spolu) */
/******************************************************************************/

- Hooks in startup process?
- Hooks in cookie storage? 
- Module should advertise their interfaces?
- How does module collaborate to provide an interface?
- Existing examples?

- advertise `id`
- rpc_call + reconciliation

CORE_MODULE
> maintains a list of frames for a given browser window
> has a notion of identity
> exposes distributed storage

