[Final Proposal] Development of some functionalities of DXMPP Module

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
darklrd's picture

Proposal for Google Summer of Code 2010 - Shashwat Srivastava

Overview – Development of Multi User Chat functionality, alternate theme(s), alternate registration schemes, support for other modules and documentation for DXMPP Module.

Description - This project will contribute to the development of DXMPP(http://drupal.org/project/dxmpp) module and add additional functionalities to it. They very first goal will be to add Multi User Chat capability (MUC). The next step will be to provide alternate theme(s). Provision for alternate registration and authentication schemes will be there. API cleanup, extension and documentation will go on side by side. Also support for other modules such as token and views will be provided. This project has been planned for Drupal 6.

Timeline -

  • May 24 - 31st - get familar with Drupal code base, standard, CVS practices etc
  • June 1 - 14 - Understanding Ejabberd & XMPP and their implementation.
  • June 14 - July 12 - Implementation of MUC functionality.
  • July 12 - Midterm submission: Functional MUC.
  • July 16 - August 2 - Build Alternate Theme(s). Support for Token and Views Module.
  • August 3 - August 16 - Alternate registration and authentication schemes. Code Testing and debugging. Beta release of the module along with documentation.
  • August 17 - August 20 - Final Report submission.
  • Also API cleanup and documentation will go on side by side.

Mentors - Aaron, Coornail, Justinrandell

Contact details -

Difficulty - Medium

Comments

You might want to look into

publicmind's picture

You might want to look into the following modules which are being actively developed and supports most of the features you mentioned:

http://drupal.org/project/chatroom
http://drupal.org/project/im
http://drupal.org/project/dxmpp

Also, any particular reason for choosing IRC protocol instead of XMPP.

Regards,

Is my project feasible?

darklrd's picture

Hi publicmind,

Thank you for replying.

I will just now go through all the modules you have mentioned but I don't think they provide a complete facebook kind of chat with a proper chat bar present at the bottom of every page instead of being present in a block region so that it is easily accessible by users. I want to make something similar to this - http://www.bowob.com/drupal_chat_module. They have a demonstration here - http://drupal.bowob.com/. But they charge for it and the processing is done on their own server. I want to make a module similar to this.

I have no particular reason for choosing IRC. If XMPP is better I will go with it. I guess I will need to some research on it. Wasn't aware of it.

Do the modules mentioned above already provide this kind of functionality? I have just now checked chatroom. It isn't like this and rest two are still in development stage. Is my project feasible?

Au contraire...

aaron's picture

I don't think they provide a complete facebook kind of chat with a proper chat bar present at the bottom of every page

That's precisely what DXMPP does, actually.

Aaron Winborn
Drupal Multimedia (my book, available now!)
AaronWinborn.com
Advomatic

XMPP is generally much better

aaron's picture

XMPP is generally much better for chat, based on scalability and performance. Look at the XMPP group for more info on the various XMPP modules and efforts.

Aaron Winborn
Drupal Multimedia (my book, available now!)
AaronWinborn.com
Advomatic

Though I'm not entirely

aaron's picture

Though I'm not entirely certain about any performance issues with using IRC protocol. Might be feasible as well. Both of them might be out of reach to many administrators in any case, depending on their hosting options.

The main thing to worry about is the browser hitting apache too much. That's where XMPP excels; various js libraries use a reverse AJAX pull (aka AJAX push or Comet) to allow the server to push info to the client.

I'm interested in possibly mentoring this, once you've decided what route you want to go.

Aaron Winborn
Drupal Multimedia (my book, available now!)
AaronWinborn.com
Advomatic

If not XMPP perhaps have you

snufkin's picture

If not XMPP perhaps have you looked into the bot project (http://drupal.org/project/bot)? Drupal has received significant contributions over the last year for the IRC integration.

Hi aaron & snufkin, Thank you

darklrd's picture

Hi aaron & snufkin,

Thank you for your valuable suggestions.

I did some googling and have gone through xmpp group on drupal. Xmpp seems more favorable. Any suggestions?
Aaron will you mentor this project?

I am new to Google Summer of Code. They have mentioned that I need three mentors - main mentor, backup mentor and a local mentor. How do I look for mentors? Also they have asked to get project proposal approved first. How to do that? Any help will be highly appreciated. Thanks a lot!

If you are considering XMPP,

publicmind's picture

If you are considering XMPP, I would advice you to add the missing functionality to DXMPP or XMPP Framework. You might also consider having a chat with their maintainers on IRC to get their views on your approach.

Regards,

Agreed with publicmind

dmitrig01's picture

Also: please include a timeline.

@publicmind: Thanks a lot! I

darklrd's picture

@publicmind: Thanks a lot! I am trying to get in touch with the maintainers of DXMPP & XMPP Framework and will post the details asap.

@dmitrig01: Thanks for your suggestion. I have already included one. Yes I will include the modified timeline according to the changed objective after discussing.

@aaron: Whenever you are free please reply to this comment. I want to discuss if I could work on DXMPP module.

Revised Proposal

darklrd's picture

Proposal for Google Summer of Code 2010 - Shashwat Srivastava

Overview – Development of Multi User Chat functionality, user theming, support for other modules and documentation for DXMPP Module.

Description - This project will contribute to the development of DXMPP module and add additional functionalities to it. They very first goal will be to add Multi User Chat capability (MUC). The next step will be user theming framework. API cleanup, extension and documentation will go on side by side. Also support for other modules such as token and views will be provided.

Timeline -

  • May 24 - 31st - get familar with Drupal code base, standard, CVS practices etc
  • June 1 - 14 - Understanding Ejabberd & XMPP and their implementation.
  • June 14 - July 12 - Implementation of MUC functionality.
  • July 12 - submit midterm
  • July 16 - August 2 - User Theming. Support for Token and Views Module.
  • August 3 - August 16 - Code Testing and debugging. Beta release of the module.
  • August 17 - August 20 - Final Report submission.
  • Also API cleanup and documentation will go on side by side.

Mentors - Aaron, Coornail

Contact details -

Difficulty - Medium

You have my vote!

aaron's picture

Looks excellent. You'll need to state that development is planned for the Drupal 6 version of the module. Also, not sure what you mean by 'User Theming'. I assume you mean 'Build alternate themes', as per the http://drupal.org/node/756280 feature request. (Part of that would be mocking up a theme or two; I have sketches of some ideas if you're not comfortable as a designer, and I'm sure we can recruit some people with a better mind for design at that stage.)

Ideally, I'd like to see documentation as more of a deliverable as well, for instance with a handbook page or three, considering the learning curve involved for every step of deploying a Drupal-XMPP system, even with a module doing some of the heavy lifting.

Finally, there were some more specifics in our initial discussions on IRC, such as "choosing alternate registration & authentication schemes" and examining XMPP Framework as part of the discovery process. I understand that's minutia that might not be relevant at this stage (and we might not want to tie ourselves into too much specificity until you've gone more into the initial discovery process), but I also want to make sure that's not lost in the shuffle.

Thanks,
Aaron

Aaron Winborn
Drupal Multimedia (my book, available now!)
AaronWinborn.com
Advomatic

looks good

kvantomme's picture

jup looks good,
-builds on an existing project => project won't die after GSoC
-is not too hard and not too easy
-something the community really wants

especially if you can take Aaron's comments into account (about the alternate theme, the documentation pages and the alternate registration and authentication schemes) you've got my vote too

--

Check out more of my writing on our blog and my Twitter account.

Thank you aaron and kvantomme

darklrd's picture

Thank you aaron and kvantomme for your valuable suggestions. I am now preparing final draft and will post it soon for review. I plan to submit my proposal today itself.

I have modified the original

darklrd's picture

I have modified the original node. Please review my final draft.

Looks good to me. Nothing

aaron's picture

Looks good to me. Nothing further to add. Thanks!

Aaron Winborn
Drupal Multimedia (my book, available now!)
AaronWinborn.com
Advomatic

Thanks aaron. I have

darklrd's picture

Thanks aaron. I have submitted my proposal. Here is the link to it - http://socghop.appspot.com/gsoc/student_proposal/show/google/gsoc2010/sh...

consider me available to help

justinrandell's picture

consider me available to help with the mentoring. i'm the maintainer of the chatroom module, and interested in where this goes.

raw irc log

aaron's picture

just wanted to make sure this doesn't get lost. we should revisit this as we're making api decisions down the road. beejeebus is justinrandell. i'd like to have him as another co-mentor.

thanks,
aaron

    #drupal [04/09/10 09:17]
  • beejeebus aaronwinborn: looks good, i'd be interested in mentoring
  • aaronwinborn that'd be awesome, beejeebus! wouldn't hurt to have another co-mentor
  • beejeebus aaronwinborn: i've been looking into XMPP for the chatroom
  • beejeebus aaronwinborn: i'd like to get to a point where drupal uses something like ejabberd as a conduit for realtime chat/notifications
  • aaronwinborn same here, beejeebus -- and xmpp is certainly the most scalable option currently available for that
  • aaronwinborn and actually, beejeebus -- i was just thinking, since you can configure ejabberd to use mysql, you could in theory expose its db to drupal, opening up all sorts of nifty possibilities on top of what's already available...
  • aaronwinborn but we already have xmlrpc, xmpphp, and other options as well
  • beejeebus aaronwinborn: right. the biggest design question i have is can all writes go via drupal?
  • beejeebus so when a client sends a message to a chat, for example, it is sent to drupal. drupal then publishes it to the XMPP server
  • aaronwinborn beejeebus: the downside to that would be having to use ajax for that, which negates any benefit of using comet
  • beejeebus no, not really
  • aaronwinborn but yes, i suppose we could do that
  • aaronwinborn hmmm
  • aaronwinborn i see
  • beejeebus you have a persistent connection for updates
  • beejeebus but a post for writes
  • aaronwinborn so that xmpp would then be responsible for pushing back to clients
  • aaronwinborn i'd assumed we'd just set up a bot for drupal
  • beejeebus right. and so we don't kill servers like apache that can't do that
  • aaronwinborn for the chatroom
  • beejeebus well, it would be simpler to do that. but i'd love to have my cake and eat it too :-)
  • aaronwinborn beejeebus: so yes, i'm definitely interested in you co-mentoring, or at least being available to hash out these implementation ideas
  • beejeebus the reason i wrote chatroom was to get tight integration
  • beejeebus but the downside is scale. polling just doesn't cut it
  • beejeebus so i'd like to keep the tight integration, keep drupal as the canonical store, but keep the persistent stuff elsewhere. anyway, food for thought
  • aaronwinborn beejeebus: part of the gsoc project is to work on dxmpp's api as well, making it work more as an engine. similar to xmpp framework in that sense, although the two currently make wildly different assumptions that make them incompatible thus far, unfortunately
  • aaronwinborn beejeebus: but i'd definitely be interested in having it be a pluggable system, maybe if chatroom wants to allow other engines to run it? i haven't looked at that module in some time
  • beejeebus aaronwinborn: yeah, i'm open to that
  • aaronwinborn cool; i think that would be a nice option down the road beejeebus -- not everyone has the access to running ejabberd on their system -- it might be nice to, say, run chatroom for a year or so, then upgrade to xmpp later, and just be able to plug that in
  • beejeebus aaronwinborn: i'd really like to push updates from drupal --> a realtime server --> clients
  • beejeebus yes
  • aaronwinborn beejeebus: the other option of course is that html5 i believe allows for server push, although you still have the apache problems w/ that. not sure if nginx has the same issues
  • aaronwinborn beejeebus: in any case, i figure that xmpp + ejabberd + drupal is the best stop-gap measure until the various protocols mature
  • beejeebus aaronwinborn: yes. websockets look nice, but they're not there yet
  • aaronwinborn beejeebus: i'm going to edit & post this log to the forum post so it's not lost in the aether, if that's ok w/ you. some good ideas here
  • beejeebus aaronwinborn: cool with me. just commented in on g.d.o. that i'm up for helping with the project

Aaron Winborn
Drupal Multimedia (my book, available now!)
AaronWinborn.com
Advomatic

Thanks a lot justinrandell!

darklrd's picture

Thanks a lot justinrandell! It would be really nice to have you as my mentor. I have added you in my mentors list :-)

Thanks aaron.

Shashwat

I will be posting my progress

darklrd's picture

I will be posting my progress continually in this discussion thread - http://groups.drupal.org/node/68928.

Google Summer of Code 2010

Group organizers

Group categories

Important Announcement

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: