From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S264256AbTLJWty (ORCPT ); Wed, 10 Dec 2003 17:49:54 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S264257AbTLJWtx (ORCPT ); Wed, 10 Dec 2003 17:49:53 -0500 Received: from cantvc.canterbury.ac.nz ([132.181.2.36]:60933 "EHLO cantvc.canterbury.ac.nz") by vger.kernel.org with ESMTP id S264256AbTLJWtw (ORCPT ); Wed, 10 Dec 2003 17:49:52 -0500 Date: Thu, 11 Dec 2003 11:49:53 +1300 From: Oliver Hunt Subject: Re: Linux GPL and binary module exception clause? In-reply-to: To: Linus Torvalds , linux-kernel@vger.kernel.org Message-id: <3FD7A311.9060807@student.canterbury.ac.nz> MIME-version: 1.0 Content-type: text/plain; charset=us-ascii; format=flowed Content-transfer-encoding: 7bit X-Accept-Language: en-us, en User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.5b) Gecko/20030727 Thunderbird/0.1 References: <20031210153254.GC6896@work.bitmover.com> Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Linus Torvalds wrote: ... > There's a fundamental difference between "plugins" and "kernel modules": > intent. > ... The key difference between a plugin and a module(from my understanding of plugins in browser/application sense) is how information is passed. Says we have the flash plugin for some random browser, say BrowserApp 1.01, now the browser comes across a flash file, now it calls the flash plugin, passing both the file, and the graphics context the plugin can draw to. Flash does it's rendering and then shoves it's output to the canvas: that's all it can do, it may make a request (say, browser::getURL) but that's about it, and the browser can always ignore it. Now there is competitor to BrowserApp known as BrowserOS, instead of plugins it has modules. Now, when BrowserOS comes across a flash file it loads it's flash module and passes the url, at which point the module takes over, and allocates a graphics context for it to draw to(see it controls what happens, rather than the otherway round). Now say the module wants to load a webpage it now tells the address bar to change, then it makes internal changes (loads the new url, etc), that the browser _cannot_ stop, it is effectively part of the program... --Oliver