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 -~----------~----~----~----~------~----~------~--~---

