Hi,
I have a cool idea for SOC 2006 and I would like to know if it's
something the Python Software Foundation would like to sponsor
andsomeone here would like to mentor. It's an extremely buzzword
compliant TurboGears+GreaseMonkey affair <wink>.

The idea is to allow people while browsing the web to interact with
other people on the same page/site/domain/topic. You will automatically
join an ad hoc chat room and be able to chat with peers. The experience
will be like an automatic IRC where every web page is a channel.

Imagine that you are reading some blog entry and would like to ask or
say something. You can post a comment of course, but often it takes
time for the comment to show up and it's not always appropriate to
clutter the persistent comments area with everything that comes to
mind. Another scenario, that happens a lot to me is that while reading
a newsgroup post I want to ask something, but I hesitate to post to the
group because the answer may have already been given 4 messages ago.
So, in this situation I search through the newgroup archive extensively
to make sure my question has not been answered already and only then I
post it (and still I fear the RTFM response).

I belivee that  this project can really deomnstrate the prowess of the
Python+TurboGears ecosystem (language+standard libraries+third part
libraries+web framework) as a great web programming environment. TG 0.9
has lots of features that can make this project shine: identity
framework for managing users, TinyMCE for editing messages and Mochikit
for making a rich user experience on the client side.

So, here is the core idea:

* Chat server maintains chat rooms and associated lists of chat
participants (may or may not require an account)
* Chat rooms are created spontaneousely as users surf to new web pages
* A chat room is destroyed when there are no more users on its
corresponding web page
* The user's browser displays a chat panel embedded in the web page or
a popup chat window (a-la Mochikit's logging pane)
* If it's a popup window then a single window can be used to host
multiple chats from multiple web pages (in different tabs or different
browser windows)
* The chat panel contains the handles of the current members and
transcript of the chat.
* The user can send rich text messages and see the messages of other
members
* The user can edit the messages she sends in a word processor like
environment
* The user can send images as part of the message

So far, it all sounds pretty basic chat stuff except for two things:

1. How to embed the chat panel in any old web page
2. How to detect when the user surfs to a new page and notify the
server

The solution I picked is to concentrate on a single browser: Firefox.
Firefox has a wonderful feature called Greasemonkey. It allows you to
inject your own JavaScript code into any web page. So, a GreaseMonkey
script will connect to the chat server (via AJAX) whenever you browse
to a new page. The chat server will send back the members list and
possibly the entire chat panel. This way the original GreaseMonkey
script can be very simple and the server controls both the UI and the
functionality of the chat on the page (the server can send JavaScript
code too of course). What about other browsers? It is possible to
inject code into IE using browser helper objects
(http://en.wikipedia.org/wiki/Browser_Helper_Object). I know there is
also some sort of Greasemonkey for Safari
(http://www.ditchnet.org/wp/2005/11/11/release-a-cocoa-app-friday-safari-guide-12/).
Anyway, for a summer project (that supposed to showcase Python+TG) I
think it's best to focus on Firefox and not spread myself too thin by
trying to fight browser quircks on different operating systems.

I would like to implement the server as a TurboGears application. I did
a couple of projects with TG 0.8 (including using MochiKit for AJAX
interaction) and I can't wait to do a TG 0.9 project.

This project can be further developed along two branches: adding cool
chat features (rich text, avatars, emoticons etc) and
performance/scalability (distributed server farm, lots of users per
server, hierarchical caches etc).

If you like this idea, I will create a detailed proposal and submit it
to Google.

Cheers, Mark Prokosch


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"TurboGears" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/turbogears
-~----------~----~----~----~------~----~------~--~---

Reply via email to