Drupal.org repository page: http://drupal.org/sandbox/pocock/1926052

DruCall is a WebRTC module for Drupal web sites, as it is based on GPL code I am sharing it here for consideration as a full Drupal project for the benefit of the wider Drupal community. I'd appreciate any assistance and feedback to improve this project to work the way Drupal expects. I'm the developer of Lumicall and I also collaborate on projects like reSIProcate (the SIP stack, proxy and TURN server) and Drupal is not my main focus, but I have contributed this to bridge the gap between the existing RTC world and the new WebRTC paradigm. I have avoided putting a lot of logic into the module, because I feel it should interact with things like the VoIP number field (another module) rather than duplicating such functionality within DruCall.

The project is based on the JavaScript SIP client SIPml5, which is a GPL v3 project

CommentFileSizeAuthor
#4 webrtc-overview.png60.17 KBpocock

Comments

klausi’s picture

Priority: Major » Normal
Status: Needs review » Needs work

Welcome,

please get a review bonus first. Then try to fix issues raised by automated review tools: http://ventral.org/pareview/httpgitdrupalorgsandboxpocock1926052git

The Libraries API module is a recommended method for adding 3rd party dependencies without directly including the code on Drupal.org.

pocock’s picture

SIPml-api.js is also GPL code, and it is credited in the COPYRIGHT file. Do I need to actually ask the original developer of the code to upload it himself as a library module? Or can I link to it as a git submodule?

pocock’s picture

I've prepared an architecture diagram demonstrating how Drupal and DruCall can be combined with other free software to build a complete real-time communications solution:

WebRTC architecture

pocock’s picture

Issue summary: View changes

Make sandbox link more prominent

pocock’s picture

StatusFileSize
new60.17 KB
marvil07’s picture

Thanks for the diagram.

About initial klausi comments:

  • pocock added the sandbox page and improved the original description of this issue a lot.
  • SIPml-api.js is 3rd party GPL code. After the original comment, pocock moved it into a git submodule, so technically it is not hosted on drupal.org(it is actually at github). The license of the library is GPLv2, so in order to re-distribute it in drupal.org we would need upstream to release the library as "gplv2 or later".

Now, let me suggest a couple of things:

  • About the library, I understand your confusion, there are a lot of information online, but there is not a unique way to do it.
    Your current approach is using git submodules. The only problem with that is that currently full project release tarballs does not support git submodules. That means that the automatically generated tarball on drupal.org will not have the library included (we use git archive, which does not support git submodules). I have seen there is a custom release script, but I guess that's not ideal, specially if you want to re-use drupal.org hosting capabilities, which is considered in general a good idea.
    It seems like the js libray used is really in active development, so git submodules looks like a good idea to follow it, but as mention drupal.org will no produce the right output in the tarball.
    My suggestion would be:
    You can keep using submodules for development if needed (but I would say it's better not, because you would need to teach libraries api to look on your specifc location of the git submodule), but require an specific version (hopefully tag, but hash works too) on the release (documented on the README.txt). Then depend on and use Libraries API project to interact with the library.
  • There is a group of modules around VoIP that seems to be still active (last commit on VoIP Drupal module was yesterday). Sadly there is not yet a D7 compatible version of VoIP Phone, the module related with this sandbox.
    I'm not sure if it is a good idea to try to re-use the code on voipphone project (a D7 port will be a blocker for sandbox to be usable, and I guess that's too much for a project application), but thinking in long term maintainership, maybe it is a good idea at least to ask the voipphone maintainers for an opinion.
    Notice also that they do not currently support WebRTC in any way, and pocock has commented there to point the sandbox examined here.
  • There is a license problem with sandbox code, there is a COPYRIGHT file added that defines the license as GPLv3, as indicated at #1940130: Copyright issue in sandbox.
    As mentioned there, that is not possible, so in order to follow using drupal.org infrastructure that file needs to be removed.
    Notice also that tarballs generated on drupal.org for full projects automatically include a LICENSE.txt with GPLv2.

PS: Please change the status of this issue to needs review when new feedback is required(so project application reviewers can find this easier).
PS2: I'll be probably testing the sandbox module by hand this weekend.

pocock’s picture

Status: Needs work » Needs review

I've had discussions with Doubango, the makers of SIPml5 (the JavaScript code) and they have decided to release their code under the BSD license now.

Previously, their code included a GPL v2 copyright notice and their Google Code project page stated it was a GPL v3 project. Now, all references to their project state it is BSD. This is fully compatible with all GPL versions.

DruCall itself was originally released as a GPL v3 project to be compatible with the licensing of SIPml5 (taking the strictest definition being the GPL v3 reference on the Google Code page). Now that SIPml5 licensing is BSD, I've change the DruCall license to GPL v2 or later. I believe this is now fully compliant with the Drupal project hosting.

I emailed the VoIP Drupal project leader before publishing DruCall, he is aware of my work in this area but we haven't had any thorough discussions about it.

I believe that the DruCall module could be used as a backend for the VoIP phone project, but it could also develop independently. The VoIP phone project UI may be too heavy for DruCall. There are many ways to construct a WebRTC site without mimicking a traditional phone. It also has some similarities to chat projects, as the SIP library can be used for presence and messaging.

pocock’s picture

I've now separated the SIPml5 JavaScript completely into a library module.

It is in another sandbox project here

One thing I am not clear about is the version information in the library module definition - there is no easily extracted version in the JavaScript code. As a hack, I just create a file called VERSION, e.g.

echo "1.0.0" > sites/all/libraries/sipml5/VERSION

PA robot’s picture

Status: Needs review » Closed (duplicate)
Multiple Applications
It appears that there have been multiple project applications opened under your username:

Project 1: http://drupal.org/node/1928458

Project 2: http://drupal.org/node/1949616

As successful completion of the project application process results in the applicant being granted the 'Create Full Projects' permission, there is no need to take multiple applications through the process. Once the first application has been successfully approved, then the applicant can promote other projects without review. Because of this, posting multiple applications is not necessary, and results in additional workload for reviewers ... which in turn results in longer wait times for everyone in the queue. With this in mind, your secondary applications have been marked as 'closed(duplicate)', with only one application left open (chosen at random).

If you prefer that we proceed through this review process with a different application than the one which was left open, then feel free to close the 'open' application as a duplicate, and re-open one of the project applications which had been closed.

I'm a robot and this is an automated message from Project Applications Scraper.

marvil07’s picture

Just to mention I tried the module in the last state(using this and the library module) some weeks ago, and it worked fine, it seems to not be working after the first time, but I cannot really say for sure that it's because of the module, I would say it's maybe because of related software configuration.

Notice that the technology behind (webrtc) is quite new, so some browsers used to test needs special versions. The review is kind of tricky because you need to have a good amount of infrastructure to test this. Daniel give me some access to test on his servers, where I could see it worked.

I would be happy to help this development, as soon as I can get some time to figure out how to deploy all related software by myself.

About the project application, I would say it is better to do this on a simpler module, i.e. #1949616: [D7] SIPml5 JavaScript library module for DruCall and WebRTC

marvil07’s picture

Issue summary: View changes

Update description

drummondf’s picture

Is there anyone available who can help me get this configured on my site? My main issue is the SIP server. If anyone is available to help please email me through Drupal - ready to pay for your time. Thank you!

avpaderno’s picture