Drupal + OpenTok Video Chat + Node.js Chat = "Lite" Online Learning Environment

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

I've been working a lot on my collaborative learning website. It has a rather rich feature set now. (If people are interested, I can try to get some kind of distro out...)

One of the pieces I put together recently is a Video Chat using OpenTok's Free API. (Dealing with the developers at TokBox has been a pleasure and they only charge (eventually) is for archiving and viewing archived content). The current video chat feature for Atrium is here: https://github.com/markwk/atrium_opentok. It works nicely. I used a simple option to select either as a broadcast style (with up to 2500 watchers) or community video chat (up to 25 participants).

Initially, the UI will need some work in order 1.) to better show a list of who is participating, 2.) block/allow video/audio/etc, 3.) a way for participants to indicate they have a question / comment

But arguably the most important thing that needs integrating is a live chat functionality. Drupal Chatroom's architecture isn't correct for a truly live chat without serious hardware penalties. Node.js seems to be route forward for chat in Drupal / for sites in general.

I know lots of universities use proprietary webinar / online class stuff with Blackboard, for example, or maybe some have used BigBlueButton, which is great but a rather "think" setup.

I'm slowly trying to pick up how to integrate Node.js (though arguably I was hoping something would have already gotten out there).

I'm interesting to hear if anyone is interested in working on something like this as well as use cases people might want something like this.

Comments

Social leanring site

vtitarchuk's picture

I like what you have done on Language Corner. Adding a video chat is very innovative. Our team is also building a learning site based on Open Atrium, EduGlu and ELMs.

Perhaps, we can join efforts and add two languages for your site (i.e. Russian and Ukrainian) while learning from your experience.

ServanTek
Serving with technology
http://servantek.org.ua

Eduglu to Atrium with Features

markwk's picture

Yeah, I used Eduglu previously and have since been tweaking and reworking OpenAtrium. Essentially the architecture is the same (Spaces, OG, Context, Features, Views, etc.) so the code is quite manageable.

Multilingual management across so many sites and groups and users is still a tough one but working quite well with French, Chinese, Korean and Swedish. Love to see it with Russian and Ukrainian as well as those users too :-)

Video Chat stuff is nice now but would be a really amazing with some work...

Collaboration

vtitarchuk's picture

How shall we continue to be productive together? What would you recommend us to do next? Looking forward for our collaboration.

ServanTek
Serving with technology
http://servantek.org.ua

@markwk - Sounds like a good

gmclelland's picture

@markwk - Sounds like a good combination. In case you didn't know, Drupal's chatroom module is now taking advantage of the Drupal's node.js module in the 7.x-2.x version.

I'm guessing your still stuck with D6 since the spaces module hasn't made an official D7 release yet?

@gmclelland: Yes, still D6

markwk's picture

@gmclelland: Due to the stability of OpenAtrium, I used the same architecture. So I'll probably have to wait until spaces gets an official release and hopefully the folks at Phase2 decide to port Atrium to 7. I'm not holding my breath.

My teaching space incorporates a lot of 3rd party media (embed_field), so this may take some time til we have Media module as a viable replacement. I'm somewhat surprised embed_field module didn't get a direct port to 7, considering how much use it gets...

So yes, still D6 for awhile.

Love the direction with

btopro's picture

Love the direction with OpenTok. We're still not there yet in terms of thinking about this kind of synchronous interaction in an online classroom but I love giving people options. I would definitely point people to your work if they ask me about video as we get closer to a full launch of elms that is completely features based.

question...

markwk's picture

@btopro: you been doing any work on clone/migrating/reproducing groups?

One of the things I'm thinking about is the fact that teachers will probably want to reuse their previous classes. So I'd like to be able to clone the basic structure, notebook, etc. but strip away comments and such. Any movement with ELMS and this functionality?

It's definitely in my list of

btopro's picture

It's definitely in my list of things I have to do. Right now this is how I'm architecting it (or planning to):

Course = namespace reservation
Offering / Version = course running or course in active development (OG level)
Features = functionality of that offering like content, studio submission area, schedule

When this semester is over and I want to offer the course again, I'll make a new offering and do it based on a previous offering of the course (most likely). Then I'll be taken to a screen that asks what you'd like to copy forward per feature (is my thinking at least). So when cloning a past offering I'll be selecting, per feature that was enabled for that space, whether to copy the content or just the settings of that feature.

I think this could read like a sentence then as Offer ABC123 next semester and only bring the content and schedule with it, remove all work from reactions and studio. I've seen a lot of people talk about this recently, maybe we should get on IRC and hash out needs cause it seems like something very useful in general -- the ability to copy a group and all associated content and settings to a new space.

Hope we can join efforts on these kinds of architectural things as it seems our projects overlap a lot in the management aspect.

Build, Adapt, Hack?

markwk's picture

Sounds similar to what I want I'm hoping to achieve. Interesting point about cloning based on features.

Are you planning to Build, Adapt, Hack? Or some combo of this.

This work is a bit outside of my current list for awhile. Definitely aiming for this feature in the 2-3 month range though. But love to hash out a plan where we can work on this together. Email/contact me whenver...

I'll email you, not sure if

btopro's picture

I'll email you, not sure if China blocks IRC or not but IRC #drupal-edu has a lot of good conversations like this going on sporadically, I'd encourage you to hang out there if you don't already. I was planning to either build or submit a sub-module for node_clone. As i've looked into node clone before and it seemed it might be difficult to adapt (at the time) I'm thinking maybe a mini module could handle it. Probably just provide a function that will clone a given group and allow for parameters of what features to ignore in the query.

This is a must have (make or break) type of functionality for ELMS as we're looking to pilot on the distribution in January so I'll be working on it in the next 2 months most likely. Would really like to get input as to what people are thinking of and use some mindshare in game-plan for how best to attack it though.

I'll try to take a look at

markwk's picture

I'll try to take a look at your newest work with ELMS and try to ensure as much is parallel as possible--probably add time specifics and taxonomy.

This is also a fairly make or break issue come January for me. Managing and understanding PURL seems be part of it. Let's try to plan and scheme this next month or so (#drupal-edu, email, discussions, etc.), then I'm up for attacking.

--posted twice for some

btopro's picture

--posted twice for some reason--

Node.js

markwk's picture

Once you are able to interact with a single node.js app like chat, it seems like there are some other interesting combinations, for example like a shared sketch pad or a synchronized slideshow (teach pushes forward buttons, everyone's slide moves together).

Awesome

Hadi Farnoud's picture

I was trying to achieve something like that with Open Scholar. But OS is way to complicated for teen students. I love it already! very appropriate icons.

I was doing some work for a friend of mine in Malaysia for an educational not-for-profit organisation. any chance you put it here or github (easier collaboration)?

out of curiosity, will it work with Open Scholar too?

Haven't Tested, Should Work

markwk's picture

@Hadi I haven't tested it yet with OpenScholar but I'm pretty careful when I build features so this feature should work.

Just follow the read me: https://github.com/markwk/atrium_opentok to make sure you have all the dependencies and API key in the right places. Also, you need to use a browser that supports Flash.

Post how it goes, I'm quite curious.

If Mark's following Kit

btopro's picture

If Mark's following Kit (which I believe he is) then there should be no issue using this in Atrium, OS, eduglu, next release of elms, or anything else that uses Spaces / OG. Big reason why kit is so important in creating a larger ecosystem for education :)

I do like what he made in

Hadi Farnoud's picture

I do like what he made in particular! I guess in many respects it's exactly what I want to do

Good to hear...

markwk's picture

@Hadi, that's good to hear. While this project does work as is, I would still say it isn't quite where I want it to be. Specifically, I think it will really only work for synchronous learning once a truly live chat gets developed.

If someone can find, adapt, or build a node.js app for spawning private group chat sessions, then I don't imagine it will take much to make a few simple calls from Drupal to the chat to then initiate this. No.de offers nice node.js hosting so this would make a very easy solution for most people.

@Hadi or anyone else want to jump on this task or potentially fund the development of this?

Chat Sessions Linked to Drupal Nodes

markwk's picture

Specifically, I think the easiest option is having Node.js Chat Sessions linked to Drupal Nodes. Similar architecture to how the OpenTok Session is attached as a CCK field.

Etherpad lite

markwk's picture

Another interesting integration with node.js: https://github.com/pita/etherpad-lite

opentok in atrium

Jaxem's picture

I'm trying to utilize your opentok streaming and chatting setup in the latest atrium release and i get a notation next to each of the modules that says "This version is incompatible with the 6.22 version of Drupal core." I tried upgrading atrium to 6.24 and still get the error, any thoughts?

You probably downloaded wrong

markwk's picture

You probably downloaded wrong version of modules. Needs to be 6.x NOT 7.x

menam singh's picture

hi all...i need to develop a conference booking system...in which i have to develop a module for Integration of a Conferencing system with Drupal 7 (specifically OpenTok).

can anyone one help me...m just a starter in this field...