mohamedmansour edited this page Dec 5, 2011 · 4 revisions
Clone this wiki locally

Welcome to the my-hangouts-extension wiki!

How do we get hangouts?

We are using the Google+ Search API to query for hangouts, so here is what is done:

  1. Uses a state machine of two nodes (currently), where the last node points back to the first node to make it a circular buffer. Each node gets executed within 30 seconds from each other.
  2. The first node in the state machine, resets the cache and hangout lists. Then does a search.
  3. The second node in the state machine, does a search again to refresh the data.
  4. When doing a single search, it prefetches results 4 times to get more results.
  5. After the last prefetch, it starts doing bursts, to get the new hangouts as diff 8 times.

Basically, does a search every 30 seconds where each search does 4 pre-fetches and 8 burst-fetches. A pre-fetch is a getting more pages per result where a burst-fetch gets diffs between every fetch.

One might ask why not continuously get bursts, the answer being, it doesn't give fresh results, the previous results do not update, that is why we reset and do pre-fetches.

How to contribute to this project?

Some documentation to read

  1. Discuss with the group what you are planning to do http://groups.google.com/group/community-driven-development
  2. Create a GitHub account http://github.com
  3. Set up Git http://help.github.com/win-set-up-git/
  4. Fork this repository http://help.github.com/fork-a-repo/
  5. Git add/commit/push to your repository http://book.git-scm.com/3_normal_workflow.html
  6. Send me pull requests http://help.github.com/send-pull-requests/

That is all, it is basically just Git. Help us improve this extension!

Good practices

  • Always create a branch for a feature your creating and then send that as a pull request git checkout -b my-feature
  • Make sure you run through JSLint so you can quickly do static code analysis
  • Make sure you do lint checking, extra spaces, removals of tabs, etc.
  • Please write comments (JSDoc) so other developers can easily read the code.

Our core values:

  1. This extension must be safe, no external servers
  2. This extension must be fast, should not get slower
  3. This extension must be simple, no cluttered UI and easy for anyone to use