Search Party

Search Party is an extension for Firefox/Epiphany that notices searches you make at Google/Other search sites and offers to throw you in a chat with other Search Party users searching for similar things. There is a server component that handles the chat server aspect and the comparison of searches. Seth has an informative page with mockups at http://www.gnome.org/~seth/summerofcode/searchparty/ . Status and screenshots of my work can be found below.

A blog is up at http://blog.searchpartyproject.com/. Code is in CVS as search-party (http://cvs.gnome.org/viewcvs/search-party/). Be aware, it is under heavy development but it is getting very close to being useful. :-)

Please feel free to edit the comments/questions section below. Also you can email me at sanfordarmstrong AT gmail DOT com.

Initial funding provided by Google's 2005 Summer of Code program.

NOTE: The extension is broken in Deer Park Alpha 2, but it works fine in Firefox 1.5 Beta 1 (and 1.0.x).

Download

Since we're getting closer and closer to this extension being useable by the masses, I thought a download link might be prudent. This link will install whatever is the latest version in CVS (make sure live.gnome.org is in your allowed sites):

http://www.searchpartyproject.com/downloadxpi.php

For epiphany, use the cvs, module search-party: http://cvs.gnome.org/viewcvs/search-party/ Or download the latest tarball: ??

Status/TODO

Note: There may be some time before the next big update, but it will be a doozie. The Firefox extension is about to be heavily refactored, and for Gnome 2.12 users there is the Eiphany extension!

I keep completed tasks up when I think they still need to be in my face for whatever reason.

Server:

  • Limit length of incoming messages (DONE! - This includes general input sanitation.)

  • Periodically trim chat buffer down (IN PROGRESS - Trim after 8K chars, don't look at message times yet)

  • Improve error reporting (DONE!)

  • Perform security audit (IN PROGRESS - Already sanitizing all(?) user input)

  • Generate useful logs (In database? So many inserts bad?)

  • Perform performance/query audit

  • Check that a user is joined to a room before letting them talk there (DUH!) (DONE! - cleaned up some SQL while I was at it)

  • Implement advanced query matching (IN PROGRESS - Testing algo at http://www.searchpartyproject.com/stem-test.php)

  • Either don't allow ':' in usernames or make parsing in extension smarter (DONE! - what other characters should I not allow?)

  • Times should be in GMT (DONE! - Actually this was already happening and I didn't know )

  • Act on join options, like NOSHOW (DONE! - Only option is NOSHOW to not share your query)

  • Decide on reasonable timeout for connections. (DONE! - 10 minutes)

  • Decide on reasonable number of connections per IP, or find a better way to prevent abuse. 1 connection per IP is lame (for anyone behind a NAT, at least). (DONE! - 5 connections per IP allowed)

Extension:

  • Extension should warn/error when user does bad things, rather than have server respond unpredictably (like silently truncating a message or modifying a user name)

  • Better error reporting and handling (At least we get better server errors now...)

  • Make kickass new icon to replace the one I'm still borrowing from Roachfiend's HelloWorld

  • Should be able to click on user's query to perform that query

  • Should have pref to show timestamp

  • Investigate switching to asynch XML-RPC calls (see http://mail.gnome.org/archives/yarrr-list/2005-March/msg00054.html) (Related to bug that is fixed in latest 1.5 branch builds, see https://bugzilla.mozilla.org/show_bug.cgi?id=273578)

  • Make preview for joining Search Parties (DONE! - Doesn't show recent recommendations...should add it)

  • Keep better track of recommendations. Show recent ones in join preview.

  • Investigate random message duplication (It really does seem to be quite random)

  • Fix behavior when multiple Firefox windows are open (DONE! - Kind of a hack...chat window is tied to the window it was opened from. They live and die together. Play around, see if you can break it)

  • Improve visual theme, allow alternatives? (DONE! - simpler theme, will allow alternatives at some point)

  • Recognize google.be, etc (DONE! - now I search for www.google instead of google.com)

  • Prefs GUI should show up upon first run (DONE!)

  • Fix recWindow size when recommended site has long title (DONE! - title concatenated and ... added to end)

  • Make hash fn to colorize user names (DONE! - seven colors to have forced upon you! No pink, though...)

  • Think of better UI than toolbar (DONE! - See new screenshot)

  • Think of better userlist UI (thinking about richlistbox in deer park)
  • Send join options, like NOSHOW (DONE!)

  • Implement recommendations (DONE!)

Might not do these, if I only allow one concurrent chat, as Seth suggests:

  • Hook connect/disconnect into Firefox startup/quit (Currently happen at chat join/quit)
  • Once above is accomplished, implement server pinging while inbetween searches.

Nifty ideas:

  • Direct manipulation of google.com
  • Make server admin page (probably not this month...)

Comments/Questions/Ideas

'A sidebar might be a better UI for it.'

  • Check out the new screenshot (or try the extension!). You'll see that the UI is very similar to Seth's mockups. The new UI means that you can only join one Search Party at a time. As for using a sidebar, that seems like it could have certain advantages, but I'm not sure how much the non-technical crowd likes that sort of thing. Once people actually start using this we can hopefully expose and fix our UI flaws.

'This looks like IRC for searching, any plans to go beyond this?'

  • [SanfordArmstrong]In what sort of ways do you mean? Search Party is even more rudimentary than IRC. It is meant for ad-hoc chatting, not long-lived discussion. Future plans for world domination include creating an Epiphany extension and an AJAX client. But any ideas you or anyone may have are very welcome.

    • It looks a lot like IRC, and it looks like a re-implementation of IRC using PHP on the server side, and with a web API. Yes, the purpose is different, but maybe using IRC would be better.
      • [SanfordArmstrong]I guess the quick answer is that I didn't need all that IRC had to offer, and it ended up being easier to make a simple chat server. If I find myself adding features, or wanting people to be able to connect via gaim/etc for whatever reason, IRC or Jabber would probably be the way to go. Using IRC/Jabber means either implementing IRC/Jabber (much more work) or depending on a pre-existing implementation (adds an unknown and a point of failure). For now, I'm keeping it simple.

Suggestions

Implement a search sidebar which uses the Google API, with a portion that displays the results, and another portion for chatting.

Extend the implementation so that people can be referred to a room that's related to the websites they are looking at, rather than only being based on searches.

Screenshot

Firefox extension:

http://www.armstrong-clan.net/searchparty/searchparty-recent.jpg

Python/Epiphany extension:

http://raphael.slinckx.net/images/searchparty-py.png http://raphael.slinckx.net/images/searchparty-py2.png

Thanks

Attic/SearchParty (last edited 2013-12-04 00:14:24 by WilliamJonMcCann)