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.
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.
You can of course open source such a movie still. I hope you do.
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.
Conversely, if you don't distribute it (because it's for private use) then you have no obligation to give out the 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.
- a proprietary library which is entirely separate from Moodle, i.e. does not use any Moodle library functions.
- a Moodle interface which uses both Moodle library functions and functions in your proprietary library.
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.
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
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.
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
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
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.
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?
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
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.