charging for modules

charging for modules

by Julio Ody -
Number of replies: 19
Hi all,

Is it legal to charge and keep the source closed for a module I create? (considering it doesn't imply in any modifications in the core system or any other part of it)

Thanks a lot.

ps: not willing to drop a flamebait here  smile   I work on open-source projects as well.
Average of ratings: -
In reply to Julio Ody

Re: charging for modules

by Martin Dougiamas -
Picture of Core developers Picture of Documentation writers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers
Your code will be based in some way on existing modules in Moodle and thus must be under a GPL license too.

You are welcome to charge for it if you think people will pay for it, the GPL allows that, but you MUST provide your source under GPL licensing conditions.
In reply to Martin Dougiamas

Re: charging for modules

by Julio Ody -
Thanks Martin, there's a few other things I would like to ask as well.

The product I developed adds video/audio conference, along with a few other multimedia/network centric features to Moodle. All those bits were built using Macromedia Flash, and without touching Moodle's code.

I don't really mind sharing/supplying the source code for the modules. In fact, that's a good idea. But I'm unsure whether I can charge for my Flash bits or not if I'm using Moodle as a back-end system to power these applications. I'm more than willing to stamp "Moodle powered" on my applications (I guess I have to do it, anyway), even if that's not a requirement.

I didn't release or sold anything yet, but I may have the chance soon. Just want to get this straight before going any further.

Thanks again.
In reply to Julio Ody

Re: charging for modules

by Martin Dougiamas -
Picture of Core developers Picture of Documentation writers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers
Strictly speaking I don't think you have to GPL your flash bits. But I would love it if you did. smile
In reply to Martin Dougiamas

Re: charging for modules

by Jamie Pratt -
Unfortunately for many Flash movies you won't be able to release them under a GPL license. If you use Macromedias components such as a button or a text area, anything from Macromedia that appears in the library of your Flash app then, as I understand, you can't release your Flash app under a GPL license. This is because there are limitations on the license you are given by Macromedia to redistribute their components.

You can of course open source such a movie still. I hope you do.


In reply to Martin Dougiamas

Re: charging for modules

by N Hansen -
But if someone is not interested in selling it, are they obligated to release the source code however?
In reply to N Hansen

Re: charging for modules

by Jussi Hannunen -
Legally, no.

GPL does not attempt to govern what you do in your "personal space" or within your organization. Note that this includes producing and selling services based on modified GPL code.

Ethically, the issue is grey, in my opinion at least. Autonomy is very much in the heart of the original motivation for GPL, but so is two-way relationship between the community and the individual.

In reply to N Hansen

Re: charging for modules

by Martin Dougiamas -
Picture of Core developers Picture of Documentation writers Picture of Moodle HQ Picture of Particularly helpful Moodlers Picture of Plugin developers Picture of Testers
The GPL uses the word distribution ... if you distribute code based on GPL code (which includes sales) then you must also include the source and original copyright notices etc.

Conversely, if you don't distribute it (because it's for private use) then you have no obligation to give out the code.
In reply to Martin Dougiamas

Re: charging for modules

by Samuli Karevaara -
My understanding is that the changes and modifications to the GPL'd code have to be released under the GPL also, but you can build external libraries and modules on GPL and have your own license on your separate code.

I understood that Apple did this with Safari/KHTML, they spent time on an additional layer over the KHTML to be able to have closed source of their own but still released (naturally) the improved KHTML library.

Edit: The relevant part of the GPL here: "If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works." Well, how independent is a Moodle module, that's maybe debatable.

Ps. My personal opinion: release "everything" as GPL and charge however/whatever you choose to be appropriate.
In reply to Julio Ody

Re: charging for modules

by Zbigniew Fiedorowicz -
If you want to go that route, you could separate your code into two parts.
  1. a proprietary library which is entirely separate from Moodle, i.e. does not use any Moodle library functions.
  2. a Moodle interface which uses both Moodle library functions and functions in your proprietary library.
Then the GPL would oblige you to release the source code for 2 but not for 1.

In reply to Zbigniew Fiedorowicz

Re: charging for modules

by Julio Ody -
Thanks. The comments were no less than VERY helpful   smile

Zbigniew, I guess that won't be needed at all. I didn't have to modify Moodle in any sense to make it work. But I had to create two modules to supply the Flash apps with the parameters I need. As Martin said, I based my module on other modules (to be precise, on the template module), and for that reason, I have to disclose the source (and I will). The Flash stuff, however, was built separately, having no connection whatsoever with Moodle's code.

I like the idea of having Moodle as the back-end for the system. It's one of the few relatively large systems that's organized enough to make easy this kind of thing. Giving the due credits to it in my product's front end is something I'm more than happy to do.

Martin, I'll be creating a new videoconference module myself, different than the one we have, since I'm not allowed to share the one I mentioned. Both .FLA and PHP sources will be available here. I believe it can't be an integral part of Moodle since Macromedia's licence doesn't allow that (or GPL, or whatever), and it relies on Flashcom. It's commercial and expensive, but considering how easy it is to save money by using the conference application, may not be so bad at all.  smile
In reply to Julio Ody

Re: charging for modules

by Jamie Pratt -
Hi,

Your video conference module sounds quite interesting. Someone has been discussing possibly commissioning me to do something similar along with some code to allow recording of audio in the forums.

I believe there are free components and an example movie supplied by Macromedia which act as a chat client for Flash Com Server. I though the potentially tricky bit of integrating this with Moodle would be to authenticate the user in a secure way. I guess we need the Flash com server to talk directly to Moodle when there is a request to start a chat session to make sure the user is who they say they are. This would be done with server side action script I guess. Is this what you have done?

When do you expect to release what you have done? Have you an example online?

Jamie


In reply to Jamie Pratt

Re: charging for modules

by Julio Ody -
Hi Jamie,

the chat component that comes with MM Communication Components is really simple to be built from scratch (if by any chance you need something that's not already there, such as authentication, but even so, the components are open source, so it's easy to modify). It justs posts the messages to a shared object, which takes care of doing the broadcasting.

What I'm doing is using remoting (AMFPHP) to check Moodle's database for a valid user, enrolled in the course and allowed to go into the event. That implies in checking if the event and the course exist as well. Nothing but a simple SQL query. I recently added a timing feature that checks how long a conference is supposed to last, and kicks everybody out (with a 5 minute forewarning) when it expires. Every other questions on how it work, please feel free to ask.

Next thing I'll do is create a layer on this database communication that allows me to change my back-end system without having to modify any code. It's not a hard job, it's just not so quick to be done, and tends to be boring smile

I'll not be releasing the sources for this specific application because, as I said, it's proprietary code. But I will be creating a new one and posting it in Moodle's forum. If we can't fully integrate it for licensing reasons, we'll at least make it VERY Moodle friendly smile

edit: anyone interested seeing it working, we'll be at Cebit Australia on 24th to 27th of this month. Company name is On-Live. An online demo (free of charge big grin) can be arranged by calling the number mentioned on the previous link.
In reply to Julio Ody

Re: charging for modules

by Jamie Pratt -
What I'm doing is using remoting (AMFPHP) to check Moodle's database for a valid user, enrolled in the course and allowed to go into the event. That implies in checking if the event and the course exist as well. Nothing but a simple SQL query. I recently added a timing feature that checks how long a conference is supposed to last, and kicks everybody out (with a 5 minute forewarning) when it expires. Every other questions on how it work, please feel free to ask.

So you are doing the authentication in the client essentially. I guess then it would be possible for someone to make a movie without the remoting bit replacing it with code reporting any user name to the chat server. Maybe that's not a big concern? Probably noeone would go to the trouble of doing this. If security is a concern at all it would seem that it would be better to have all this handled on the server.

Could be that we are protected because only client movies served from trusted servers are allowed to connect to the FCS server??

Next thing I'll do is create a layer on this database communication that allows me to change my back-end system without having to modify any code. It's not a hard job, it's just not so quick to be done, and tends to be boring

In the case of Moodle this can be done by using the Moodle API rather than accessing the database directly. Although some more complex db commands are not be supported.

Jamie



In reply to Jamie Pratt

Re: charging for modules

by Julio Ody -
You're right. But I like to keep an eye on these things smile.

I forgot to mention we're using remoting on the server-side, through SSAS (server-side actionscript). The clients are granted access to the Flashcom server depending on the credentials they supply on Moodle's login page. Credentials are passed to the flash application as parameters. These values are checked against Moodle's database, and depending on the result, you stay or you get denied.

So even direct access to the flash application using an invalid username and password, wouldn't authenticate, and thus, causing the flash app -> Flashcom server connection to be denied. This basically ties our Flashcom server to Moodle's database. What you can do as a registered user, is what you can do in the flash applications, no more, no less.

Appreciate your point, anyway. Lots of coders miss it.
In reply to Julio Ody

Re: charging for modules

by W Page -
Hi Julio!

This sounds exciting!

Just a few questions:
  • Will your program also be able to record transcripts?
  • Will it allow for the inclusion of PowerPoint (MSN) / Impress (OOo) slides?
  • Will it allow a WhiteBoard?
  • Will it allow Ogg audio as well?
WP1
In reply to Jamie Pratt

Re: charging for modules

by Jamie Pratt -
As I said I've been in correspondence with someone who has been discussing commissioning me to work on a chat with audio and an audio recording feature for forums, quizzes etc which will be open sourced and also were possible GPLed. I emailed my potential client about this thread.

Any idea when you will be releasing your open source version of this module? Will you have some facility for multiple chat sessions to be going on at once. I guess each activity will be in a different 'room'? Will there be any facility to have seperate sessions for pair chat / small group chats etc within an activity?

Jamie
In reply to Jamie Pratt

Re: charging for modules

by Julio Ody -

Hi guys! In order:

W Page:

  • Will your program also be able to record transcripts?

We currently have 2 products. One is a videoconference session, and the other we call a "training session". The second one emulates a virtual classroom, where you can present .PPT, .DOC, .AVI, .MPG, .MP3, .PDF and .XLS. You just have to convert them beforehand, which can also be done through the system (server-side, no software to be installed on your computer). The teacher controls the slides (forward, rewind), stops and plays a video/audio file. We managed to record a session using an archiving feature. The archives can be made available to students who miss the classes, for example.

  • Will it allow for the inclusion of PowerPoint (MSN) / Impress (OOo) slides?

In the training session module, yes.

  • Will it allow a WhiteBoard?

We have our own whiteboard, coded from scratch, which has a few more features than MM's one. Shared, and all the good stuff.

  • Will it allow Ogg audio as well?

Yes, we can. In order to get your materials presented, you have to convert them before going into the training session. We could add Ogg to the accepted formats list easily.

Just a note, this is something completely different than the videoconference I spoke about. Even though I wanted to, I'm not sure if I would have the time to create a software like this.

Jamie:

Idea, yes. I guess it would take two weeks from now. I'm very sorry I'm not able to give you a deadline, because I rely on my employer and open FOSS projects I'm involved. I'll try to make something available here in the next few days, just as a starting point.

Thanks you all. Cheers.