Once a second, it logs the currently active tab or window (if any) in Chrome into CouchDB.
- Install CouchBase
- Select "Automatically Start At Login" from CouchBase menu
- Open builds/whence.crx in Google Chrome (double clicking might work here)
- Click "Continue" and "Install" and "X" and whatever other security theater hoops come up
Does it work on Windows or Linux? I don't know yet! Please tell me your experiences.
Open http://localhost:5984/_utils/database.html?whence and see your data aggregating
TODO: UI :-)
Chromium vs Google Chrome
Multiple Chromes installed? Drag builds/whence.crx to whichever is your favorite.
gem install crxmake rake install:chrome
From Chrome's "Extensions" window, select "Developer mode", scroll down to Whence, then click the "background.html" link to look at the console. You can also look at the console in any page.
Whence uses what's called a "sampling algorithm" -- approximately once a second, the currently selected tab says "hey, the user is on me". While this can miss some quick context shifts, it's reasonably accurate, and very high performance -- which is very important, since we can't gather data at all if the user disables us!
We could gather all sorts of other events as well, like tab opens and closes. But beware, since these are sometimes missed (e.g. if the computer crashes).
- Better error if CouchDB is not running/installed
- use Chrome Desktop Notifications http://code.google.com/chrome/extensions/notifications.html
- Detect idle time
- either stop recording, or record "time since activity" per sample
- Reports (aka "a user interface of some sort")
- by day
- by date range
- by host
- Store path as well as host
- Store client hostname
- "Destination" rules (potentially several destinations per host, based on path)
- need better name, but "location" implies geolocation, so...
- Context menu item: add this path as a destination (gets tracked separately)
- Export to Locker Project
- Change icon
- Replicate/synchronize DBs from multiple computers
- Gather info on which app (other than browser) is active
- Settings page
- Integrate with MacLogger
- Firefox plugin
- Safari plugin
- Clone RescueTime (Everything version - track active app, not just active tab)
- Store tab.favIconUrl (tab is "sender" param of onRequest)
- Limits (e.g. warn if you're on Slashdot too long)
- Categories a la RescueTime
- log per-page info e.g. GMail subject and from (with content scripts)
- Geolocation (possibly with GeoCouch)
- Option: Respect incognito mode (don't track incognito tabs)
- Put it in the Chrome Store
Technical chores TODO
- UNIT TESTS (FFS)
- Compact DB on startup
- Include CouchDB executable(s) in distro?
- Use IndexedDB for local storage (in case Couch is missing)
- Include crxmake library inside project
- Stick server inside CouchDB?