Return-Path: jsg@goblin.cx Delivery-Date: Tue Oct 10 09:09:06 2006 Received: from min.bytemine.net (min.bytemine.net [134.106.146.209]) by cvs.openbsd.org (8.13.8/8.12.1) with ESMTP id k9AF95Hk011306 (version=TLSv1/SSLv3 cipher=DHE-DSS-AES256-SHA bits=256 verify=NO) for ; Tue, 10 Oct 2006 09:09:06 -0600 (MDT) Received: from dsl-210-15-216-215-static.vic.netspace.net.au ([210.15.216.215]:51060 helo=carla.home) by min.bytemine.net with esmtps (TLSv1:AES256-SHA:256) (Exim 4.60) (envelope-from ) id 1GXJEb-0004B2-BY for deraadt@cvs.openbsd.org; Tue, 10 Oct 2006 17:09:34 +0200 Received: from carla.home (jsg@localhost.home [127.0.0.1]) by carla.home (8.13.6/8.13.6) with ESMTP id k9AF9Qnt002664 for ; Wed, 11 Oct 2006 01:09:26 +1000 (EST) Received: (from jsg@localhost) by carla.home (8.13.6/8.13.1/Submit) id k9AF9Q1u028338 for deraadt@cvs.openbsd.org; Wed, 11 Oct 2006 01:09:26 +1000 (EST) Resent-From: jsg@goblin.cx Resent-Date: Wed, 11 Oct 2006 01:09:26 +1000 Resent-Message-ID: <20061010150926.GA3250@mail.netspace.net.au> Resent-To: Theo de Raadt Date: Fri, 15 Sep 2006 00:56:26 +1000 From: Jonathan Gray To: Dan Williams Cc: jg@laptop.org, mtosatti@redhat.com Subject: Re: Marvell 88W8388 documentation Message-ID: <20060914145626.GA8066@mail.netspace.net.au> References: <20060914124700.GA21474@mail.netspace.net.au> <1158242721.2634.26.camel@localhost.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1158242721.2634.26.camel@localhost.localdomain> User-Agent: Mutt/1.5.11 On Thu, Sep 14, 2006 at 10:05:21AM -0400, Dan Williams wrote: > > On Thu, 2006-09-14 at 22:47 +1000, Jonathan Gray wrote: > > Hi guys, > > > > Please correct me if I am wrong but it seems that documentation > > for Marvell's 88W8388's is not publically available without > > signing an NDA? > > > > If this is the case why did a project that seems to pride > > itself of openess agree to deal with such a company? > > Drivers written under NDA tend to be full of magic numbers, > > near impossible for others to properly maintain and > > totally against the spirit of open projects. > > In the very least, the driver is open-source and usage of magic numbers > is no worse than the majority of current Linux wireless drivers, even > those developed from device specifications provided by the manufacturer. > If you look at the source, there's actually an amazing lack of magic > numbers [1], and almost all of the numbers used have meaningful names in > the header files. > > Getting specs for the chipset is expected in the near-term, but a lot of > stuff has to happen in parallel here. That's great news. > > > I really think you should push for Marvell to give out > > documentation without them forcing NDAs onto people. > > Are there specific things you're looking for that would require you to > sign an NDA with Marvell to work on? That would be useful information > to help determine where the existing opened code & resources fall short > and what bits need more transparency. A driver for their recent Ethernet chipsets, a driver for their SATA chipsets, a driver for their wireless chipsets, ongoing maintenance and de magic'ing driver for their Ethernet PHYs. You'll note that the author of the Linux driver for the former also signed an NDA. I work on the OpenBSD kernel in my spare time, we cover most of the major wireless chipsets or have documentation from vendors without signing NDAs. Marvell is one of the main sticking points and are sadly gaining a lot of marketshare over the last few years. But I really think it is in your best interests to not artifically limit the amount of people who can help you. Normally people writing drivers have little leverage with asking vendors to do anything as they aren't seen as the client. The folks over at http://www.cuwireless.net/ recently got a $500,000 US government grant to work on their NetBSD based mesh routing system, I imagine they would be quite interested in discussing some of their research and helping out, given the chance to. > > > Failing that I'm sure there are other vendors > > who would be willing to be more helpful. > > Possibly, but Marvell had the chip, was quite willing to do the work to > modify the firmware bits to OLPC specifications, was willing to > open-source their driver, etc. Other vendors weren't nearly as willing > as Marvell was to help the project out, so I'm not so sure your > assertion here is correct. I suspect you really wanted to talk to were Zydas, they had the usb wireless market and were highly regarded. Now they have been aquired by Atheros it is unlikely they'll be allowed to release documentation, source code and allow firmware redistribution like they have in the past. Ralink have been very helpful with questions, documentation, access to engineers and the like in the past. I suspect they would at least be interested to hear of the requirements. Realtek seem to want to help or give you the run around depending on who you talk to. They could perhaps be another option though. VIA have pretty much ignored requests for documentation but perhaps have some interesting technology. I guess you really need something with an ARM/MIPS chip if you want it to route while the main processor is suspended. Which is rather sad, as that puts things into the arena of the large companies that implement most of their stack in the micro and tend to cost more. > > Dan > > [1] compared to, say, the airo driver which was even developed with some > help from Cisco I have tried to find documentation on Aironet devices as well, nothing is out there, again if anyone knows otherwise, I'm all ears. Also I suspect it was Aironet before Cisco purchased them that would have helped. Jonathan Return-Path: jsg@goblin.cx Delivery-Date: Tue Oct 10 09:09:21 2006 Received: from min.bytemine.net (min.bytemine.net [134.106.146.209]) by cvs.openbsd.org (8.13.8/8.12.1) with ESMTP id k9AF9Jpb010528 (version=TLSv1/SSLv3 cipher=DHE-DSS-AES256-SHA bits=256 verify=NO) for ; Tue, 10 Oct 2006 09:09:20 -0600 (MDT) Received: from dsl-210-15-216-215-static.vic.netspace.net.au ([210.15.216.215]:63158 helo=carla.home) by min.bytemine.net with esmtps (TLSv1:AES256-SHA:256) (Exim 4.60) (envelope-from ) id 1GXJEq-00059f-Eh for deraadt@cvs.openbsd.org; Tue, 10 Oct 2006 17:09:49 +0200 Received: from carla.home (jsg@localhost.home [127.0.0.1]) by carla.home (8.13.6/8.13.6) with ESMTP id k9AF9iaf010879 for ; Wed, 11 Oct 2006 01:09:44 +1000 (EST) Received: (from jsg@localhost) by carla.home (8.13.6/8.13.1/Submit) id k9AF9iH8011091 for deraadt@cvs.openbsd.org; Wed, 11 Oct 2006 01:09:44 +1000 (EST) Resent-From: jsg@goblin.cx Resent-Date: Wed, 11 Oct 2006 01:09:44 +1000 Resent-Message-ID: <20061010150944.GB3250@mail.netspace.net.au> Resent-To: Theo de Raadt Date: Thu, 14 Sep 2006 22:47:00 +1000 From: Jonathan Gray To: dcbw@redhat.com, jg@laptop.org, mtosatti@redhat.com Subject: Marvell 88W8388 documentation Message-ID: <20060914124700.GA21474@mail.netspace.net.au> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.11 Hi guys, Please correct me if I am wrong but it seems that documentation for Marvell's 88W8388's is not publically available without signing an NDA? If this is the case why did a project that seems to pride itself of openess agree to deal with such a company? Drivers written under NDA tend to be full of magic numbers, near impossible for others to properly maintain and totally against the spirit of open projects. I really think you should push for Marvell to give out documentation without them forcing NDAs onto people. Failing that I'm sure there are other vendors who would be willing to be more helpful. Jonathan Return-Path: jsg@goblin.cx Delivery-Date: Tue Oct 10 09:10:26 2006 Received: from min.bytemine.net (min.bytemine.net [134.106.146.209]) by cvs.openbsd.org (8.13.8/8.12.1) with ESMTP id k9AFAOAw022282 (version=TLSv1/SSLv3 cipher=DHE-DSS-AES256-SHA bits=256 verify=NO) for ; Tue, 10 Oct 2006 09:10:25 -0600 (MDT) Received: from dsl-210-15-216-215-static.vic.netspace.net.au ([210.15.216.215]:60027 helo=carla.home) by min.bytemine.net with esmtps (TLSv1:AES256-SHA:256) (Exim 4.60) (envelope-from ) id 1GXJFs-0004c7-Gw for deraadt@cvs.openbsd.org; Tue, 10 Oct 2006 17:10:53 +0200 Received: from carla.home (jsg@localhost.home [127.0.0.1]) by carla.home (8.13.6/8.13.6) with ESMTP id k9AFAmeA023501 for ; Wed, 11 Oct 2006 01:10:48 +1000 (EST) Received: (from jsg@localhost) by carla.home (8.13.6/8.13.1/Submit) id k9AFAmmJ026343 for deraadt@cvs.openbsd.org; Wed, 11 Oct 2006 01:10:48 +1000 (EST) Resent-From: jsg@goblin.cx Resent-Date: Wed, 11 Oct 2006 01:10:47 +1000 Resent-Message-ID: <20061010151047.GC3250@mail.netspace.net.au> Resent-To: Theo de Raadt Delivered-To: unknown Received: from mail.goblin.cx (69.80.208.30) by carla.home with POP3; 14 Sep 2006 14:16:41 -0000 Received: from alligate2.nshosts.com (unverified [10.0.1.44]) by mail8.nshosts.com (Vircom SMTPRS 5.3.232) with ESMTP id for ; Thu, 14 Sep 2006 08:03:37 -0600 Received: from mx1.redhat.com [66.187.233.31] by alligate2.nshosts.com (Alligate(TM) SMTP Gateway v2.6.5.25) with ESMPT id for ; Thu, 14 Sep 2006 08:03:28 -0700 Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k8EE3VH8002751; Thu, 14 Sep 2006 10:03:31 -0400 Received: from mail.boston.redhat.com (mail.boston.redhat.com [172.16.76.12]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k8EE3VfQ008843; Thu, 14 Sep 2006 10:03:31 -0400 Received: from [10.13.248.15] (vpn-248-15.boston.redhat.com [10.13.248.15]) by mail.boston.redhat.com (8.12.8/8.12.8) with ESMTP id k8EE3TY9028201; Thu, 14 Sep 2006 10:03:30 -0400 Subject: Re: Marvell 88W8388 documentation From: Dan Williams To: Jonathan Gray Cc: jg@laptop.org, mtosatti@redhat.com In-Reply-To: <20060914124700.GA21474@mail.netspace.net.au> References: <20060914124700.GA21474@mail.netspace.net.au> Content-Type: text/plain Date: Thu, 14 Sep 2006 10:05:21 -0400 Message-Id: <1158242721.2634.26.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.8.0 (2.8.0-1.fc6) Content-Transfer-Encoding: 7bit X-MXRate-Prob: 0 X-MXRate-Country: US X-MXRate-Action: NONE X-Alligate-Grey: Skipped X-Alligate-In: Passed - Adult: 0 (Req: 100) Spam: 16 (Req: 100) Tot: 16 (Req: 100) X-Alligate-QueueFile: 010974219.dta X-Alligate-XFrom: [66.187.233.31] United States (US) X-Alligate-XTo: (jsg@goblin.cx) On Thu, 2006-09-14 at 22:47 +1000, Jonathan Gray wrote: > Hi guys, > > Please correct me if I am wrong but it seems that documentation > for Marvell's 88W8388's is not publically available without > signing an NDA? > > If this is the case why did a project that seems to pride > itself of openess agree to deal with such a company? > Drivers written under NDA tend to be full of magic numbers, > near impossible for others to properly maintain and > totally against the spirit of open projects. In the very least, the driver is open-source and usage of magic numbers is no worse than the majority of current Linux wireless drivers, even those developed from device specifications provided by the manufacturer. If you look at the source, there's actually an amazing lack of magic numbers [1], and almost all of the numbers used have meaningful names in the header files. Getting specs for the chipset is expected in the near-term, but a lot of stuff has to happen in parallel here. > I really think you should push for Marvell to give out > documentation without them forcing NDAs onto people. Are there specific things you're looking for that would require you to sign an NDA with Marvell to work on? That would be useful information to help determine where the existing opened code & resources fall short and what bits need more transparency. > Failing that I'm sure there are other vendors > who would be willing to be more helpful. Possibly, but Marvell had the chip, was quite willing to do the work to modify the firmware bits to OLPC specifications, was willing to open-source their driver, etc. Other vendors weren't nearly as willing as Marvell was to help the project out, so I'm not so sure your assertion here is correct. Dan [1] compared to, say, the airo driver which was even developed with some help from Cisco Return-Path: jsg@goblin.cx Delivery-Date: Tue Oct 10 09:10:48 2006 Received: from min.bytemine.net (min.bytemine.net [134.106.146.209]) by cvs.openbsd.org (8.13.8/8.12.1) with ESMTP id k9AFAlCA010053 (version=TLSv1/SSLv3 cipher=DHE-DSS-AES256-SHA bits=256 verify=NO) for ; Tue, 10 Oct 2006 09:10:48 -0600 (MDT) Received: from dsl-210-15-216-215-static.vic.netspace.net.au ([210.15.216.215]:51287 helo=carla.home) by min.bytemine.net with esmtps (TLSv1:AES256-SHA:256) (Exim 4.60) (envelope-from ) id 1GXJGF-0008BL-Ah for deraadt@cvs.openbsd.org; Tue, 10 Oct 2006 17:11:16 +0200 Received: from carla.home (jsg@localhost.home [127.0.0.1]) by carla.home (8.13.6/8.13.6) with ESMTP id k9AFBBob026830 for ; Wed, 11 Oct 2006 01:11:11 +1000 (EST) Received: (from jsg@localhost) by carla.home (8.13.6/8.13.1/Submit) id k9AFBBZS032436 for deraadt@cvs.openbsd.org; Wed, 11 Oct 2006 01:11:11 +1000 (EST) Resent-From: jsg@goblin.cx Resent-Date: Wed, 11 Oct 2006 01:11:11 +1000 Resent-Message-ID: <20061010151111.GD3250@mail.netspace.net.au> Resent-To: Theo de Raadt Delivered-To: unknown Received: from mail.goblin.cx (69.80.208.30) by carla.home with POP3; 14 Sep 2006 16:42:17 -0000 Received: from alligate6.nshosts.com (unverified [10.0.1.46]) by mail3.nshosts.com (Vircom SMTPRS 5.3.232) with ESMTP id for ; Thu, 14 Sep 2006 10:27:13 -0600 Received: from mx1.redhat.com [66.187.233.31] by alligate6.nshosts.com (Alligate(TM) SMTP Gateway v2.6.5.25) with ESMPT id <947057C36B6B2C89.8E6522546AE2DE08@alligate6.nshosts.com> for ; Thu, 14 Sep 2006 10:23:57 -0700 Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k8EGNxmj030510; Thu, 14 Sep 2006 12:23:59 -0400 Received: from mail.boston.redhat.com (mail.boston.redhat.com [172.16.76.12]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k8EGNwEt002086; Thu, 14 Sep 2006 12:23:58 -0400 Received: from [10.13.248.15] (vpn-248-15.boston.redhat.com [10.13.248.15]) by mail.boston.redhat.com (8.12.8/8.12.8) with ESMTP id k8EGNrY9014449; Thu, 14 Sep 2006 12:23:56 -0400 Subject: Re: Marvell 88W8388 documentation From: Dan Williams To: Jonathan Gray Cc: jg@laptop.org, mtosatti@redhat.com In-Reply-To: <20060914145626.GA8066@mail.netspace.net.au> References: <20060914124700.GA21474@mail.netspace.net.au> <1158242721.2634.26.camel@localhost.localdomain> <20060914145626.GA8066@mail.netspace.net.au> Content-Type: text/plain Date: Thu, 14 Sep 2006 12:25:44 -0400 Message-Id: <1158251144.4675.4.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.8.0 (2.8.0-1.fc6) Content-Transfer-Encoding: 7bit X-MXRate-Prob: 0 X-MXRate-Country: US X-MXRate-Action: NONE X-Alligate-Grey: Skipped X-Alligate-In: Passed - Adult: 0 (Req: 100) Spam: 18 (Req: 100) Tot: 18 (Req: 100) X-Alligate-QueueFile: 010315403.dta X-Alligate-XFrom: [66.187.233.31] United States (US) X-Alligate-XTo: (jsg@goblin.cx) On Fri, 2006-09-15 at 00:56 +1000, Jonathan Gray wrote: > On Thu, Sep 14, 2006 at 10:05:21AM -0400, Dan Williams wrote: > > > > On Thu, 2006-09-14 at 22:47 +1000, Jonathan Gray wrote: > > > Hi guys, > > > > > > Please correct me if I am wrong but it seems that documentation > > > for Marvell's 88W8388's is not publically available without > > > signing an NDA? > > > > > > If this is the case why did a project that seems to pride > > > itself of openess agree to deal with such a company? > > > Drivers written under NDA tend to be full of magic numbers, > > > near impossible for others to properly maintain and > > > totally against the spirit of open projects. > > > > In the very least, the driver is open-source and usage of magic numbers > > is no worse than the majority of current Linux wireless drivers, even > > those developed from device specifications provided by the manufacturer. > > If you look at the source, there's actually an amazing lack of magic > > numbers [1], and almost all of the numbers used have meaningful names in > > the header files. > > > > Getting specs for the chipset is expected in the near-term, but a lot of > > stuff has to happen in parallel here. > > That's great news. > > > > > > I really think you should push for Marvell to give out > > > documentation without them forcing NDAs onto people. > > > > Are there specific things you're looking for that would require you to > > sign an NDA with Marvell to work on? That would be useful information > > to help determine where the existing opened code & resources fall short > > and what bits need more transparency. > > A driver for their recent Ethernet chipsets, a driver for their SATA > chipsets, a driver for their wireless chipsets, ongoing maintenance > and de magic'ing driver for their Ethernet PHYs. You'll note > that the author of the Linux driver for the former also signed an NDA. Right; that would be nice but everything in that list besides the wireless driver for the 8388 is beyond our scope. Hopefully though, the process of opening up the driver and specs for the 8388, which we have so far held Marvell's hand through, will show them that it's not painful and that they have nothing to fear from opening up their stuff. But that's all we can do now, and all we have leverage over. > I work on the OpenBSD kernel in my spare time, we cover most of > the major wireless chipsets or have documentation from vendors without > signing NDAs. Marvell is one of the main sticking points > and are sadly gaining a lot of marketshare over the last > few years. > > But I really think it is in your best interests to not > artifically limit the amount of people who can help you. > Normally people writing drivers have little leverage > with asking vendors to do anything as they aren't seen > as the client. > > The folks over at http://www.cuwireless.net/ recently got > a $500,000 US government grant to work on their NetBSD > based mesh routing system, I imagine they would be > quite interested in discussing some of their research > and helping out, given the chance to. > > > > > > Failing that I'm sure there are other vendors > > > who would be willing to be more helpful. > > > > Possibly, but Marvell had the chip, was quite willing to do the work to > > modify the firmware bits to OLPC specifications, was willing to > > open-source their driver, etc. Other vendors weren't nearly as willing > > as Marvell was to help the project out, so I'm not so sure your > > assertion here is correct. > > I suspect you really wanted to talk to were Zydas, they had > the usb wireless market and were highly regarded. Now they have > been aquired by Atheros it is unlikely they'll be allowed to > release documentation, source code and allow firmware redistribution > like they have in the past. > > Ralink have been very helpful with questions, documentation, access > to engineers and the like in the past. I suspect they would at least > be interested to hear of the requirements. > > Realtek seem to want to help or give you the run around depending > on who you talk to. They could perhaps be another option though. > > VIA have pretty much ignored requests for documentation but > perhaps have some interesting technology. > > I guess you really need something with an ARM/MIPS chip > if you want it to route while the main processor is suspended. > Which is rather sad, as that puts things into the arena > of the large companies that implement most of their stack > in the micro and tend to cost more. > > > > > Dan > > > > [1] compared to, say, the airo driver which was even developed with some > > help from Cisco > > I have tried to find documentation on Aironet devices as well, nothing > is out there, again if anyone knows otherwise, I'm all ears. Also I > suspect it was Aironet before Cisco purchased them that would have helped. There isn't any, and I've tried to get some through Red Hat channels, even Cisco's IT department wants us to fix up their own driver, but they have decided the parts are obsolete and do not wish to spend resources even sending us a PDF of the "Aironet 4500/4800 Developer's Manual" which is referenced at the top. Dan Return-Path: jsg@goblin.cx Delivery-Date: Tue Oct 10 09:11:02 2006 Received: from min.bytemine.net (min.bytemine.net [134.106.146.209]) by cvs.openbsd.org (8.13.8/8.12.1) with ESMTP id k9AFB0ZQ000255 (version=TLSv1/SSLv3 cipher=DHE-DSS-AES256-SHA bits=256 verify=NO) for ; Tue, 10 Oct 2006 09:11:02 -0600 (MDT) Received: from dsl-210-15-216-215-static.vic.netspace.net.au ([210.15.216.215]:59947 helo=carla.home) by min.bytemine.net with esmtps (TLSv1:AES256-SHA:256) (Exim 4.60) (envelope-from ) id 1GXJGS-0006a7-UZ for deraadt@cvs.openbsd.org; Tue, 10 Oct 2006 17:11:30 +0200 Received: from carla.home (jsg@localhost.home [127.0.0.1]) by carla.home (8.13.6/8.13.6) with ESMTP id k9AFBO3C016938 for ; Wed, 11 Oct 2006 01:11:24 +1000 (EST) Received: (from jsg@localhost) by carla.home (8.13.6/8.13.1/Submit) id k9AFBOFM001736 for deraadt@cvs.openbsd.org; Wed, 11 Oct 2006 01:11:24 +1000 (EST) Resent-From: jsg@goblin.cx Resent-Date: Wed, 11 Oct 2006 01:11:24 +1000 Resent-Message-ID: <20061010151124.GE3250@mail.netspace.net.au> Resent-To: Theo de Raadt Delivered-To: unknown Received: from mail.goblin.cx (69.80.208.30) by carla.home with POP3; 14 Sep 2006 15:32:56 -0000 Received: from alligate5.nshosts.com (unverified [10.0.1.45]) by MAIL9.nshosts.com (Vircom SMTPRS 5.3.232) with ESMTP id for ; Thu, 14 Sep 2006 09:12:44 -0600 Received: from alnrmhc14.comcast.net [206.18.177.54] by alligate5.nshosts.com (Alligate(TM) SMTP Gateway v2.6.5.25) with ESMPT id for ; Thu, 14 Sep 2006 09:15:48 -0700 Received: from wireless-19-34.media.mit.edu ([18.85.19.34]) by comcast.net (alnrmhc14) with SMTP id <20060914151554b1400m146fe>; Thu, 14 Sep 2006 15:15:54 +0000 Subject: Re: Marvell 88W8388 documentation From: Jim Gettys Reply-To: jg@laptop.org To: Jonathan Gray Cc: Dan Williams , mtosatti@redhat.com In-Reply-To: <20060914145626.GA8066@mail.netspace.net.au> References: <20060914124700.GA21474@mail.netspace.net.au> <1158242721.2634.26.camel@localhost.localdomain> <20060914145626.GA8066@mail.netspace.net.au> Content-Type: text/plain Organization: OLPC Date: Thu, 14 Sep 2006 11:15:53 -0400 Message-Id: <1158246953.5871.215.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-MXRate-Prob: -1 X-MXRate-Country: US X-MXRate-Action: ALLOW X-Alligate-Grey: Skipped X-Alligate-In: Passed - Adult: 0 (Req: 100) Spam: 0 (Req: 100) Tot: 0 (Req: 100) X-Alligate-QueueFile: 020028166.dta X-Alligate-XFrom: [206.18.177.54] United States (US) X-Alligate-XTo: (jsg@goblin.cx) On Fri, 2006-09-15 at 00:56 +1000, Jonathan Gray wrote: > > A driver for their recent Ethernet chipsets, a driver for their SATA > chipsets, a driver for their wireless chipsets, ongoing maintenance > and de magic'ing driver for their Ethernet PHYs. You'll note > that the author of the Linux driver for the former also signed an NDA. > > I work on the OpenBSD kernel in my spare time, we cover most of > the major wireless chipsets or have documentation from vendors without > signing NDAs. Marvell is one of the main sticking points > and are sadly gaining a lot of marketshare over the last > few years. > > But I really think it is in your best interests to not > artifically limit the amount of people who can help you. > Normally people writing drivers have little leverage > with asking vendors to do anything as they aren't seen > as the client. We're very aware of this. That's why we're working on the issues around this. I just wanted you to understand that there were no alternatives, and that Marvell could not give us all we want; it wasn't under their control. > > The folks over at http://www.cuwireless.net/ recently got > a $500,000 US government grant to work on their NetBSD > based mesh routing system, I imagine they would be > quite interested in discussing some of their research > and helping out, given the chance to. > I think they have been in touch with Michailis. > > > > > Failing that I'm sure there are other vendors > > > who would be willing to be more helpful. > > > > Possibly, but Marvell had the chip, was quite willing to do the work to > > modify the firmware bits to OLPC specifications, was willing to > > open-source their driver, etc. Other vendors weren't nearly as willing > > as Marvell was to help the project out, so I'm not so sure your > > assertion here is correct. > > I suspect you really wanted to talk to were Zydas, they had > the usb wireless market and were highly regarded. Now they have > been aquired by Atheros it is unlikely they'll be allowed to > release documentation, source code and allow firmware redistribution > like they have in the past. > > Ralink have been very helpful with questions, documentation, access > to engineers and the like in the past. I suspect they would at least > be interested to hear of the requirements. > > Realtek seem to want to help or give you the run around depending > on who you talk to. They could perhaps be another option though. > > VIA have pretty much ignored requests for documentation but > perhaps have some interesting technology. As of this spring, *no* other vendor had the capability to allow the mesh code to run with the main processor off; Michails was/is very in touch with what the different vendors are doing. Athleros was unwilling to commit to being able to do this even in their next generation (which would have been to late for us). That the Marvell chip *is* capable enough to run autonomously was a great surprise; Marvell has previously sold only to the embedded market, and has not competed for desktop/laptop business before this. We let them all know what we need when they ask. And USB is *not* desirable; it just happens to be the only bus available on this generation part in common with the Geode. Future parts will be interfaced via different buses. > > I guess you really need something with an ARM/MIPS chip > if you want it to route while the main processor is suspended. Yes, this is *absolutely essential* to us. It is the difference between 300mw power consumption and 2-3 watts power consumption. If we were in the 2 watt range (minimum power with the main CPU on, etc.), the kids would have to disable their machines from the mesh all the time to conserve battery. A small kid can only generate 7-10 watts. So, from one point of view, this capability is one of the 3 things that make this machine truly novel and desirable. > Which is rather sad, as that puts things into the arena > of the large companies that implement most of their stack > in the micro and tend to cost more. > Actually, Marvell was competitive on prices as well, with the less capable chips (e.g. Athleros). I can't tell you what price we got. Regards, - Jim > > > > Dan > > > > [1] compared to, say, the airo driver which was even developed with some > > help from Cisco > > I have tried to find documentation on Aironet devices as well, nothing > is out there, again if anyone knows otherwise, I'm all ears. Also I > suspect it was Aironet before Cisco purchased them that would have helped. > > Jonathan -- Jim Gettys One Laptop Per Child Return-Path: jsg@goblin.cx Delivery-Date: Tue Oct 10 09:11:23 2006 Received: from min.bytemine.net (min.bytemine.net [134.106.146.209]) by cvs.openbsd.org (8.13.8/8.12.1) with ESMTP id k9AFBMg5028682 (version=TLSv1/SSLv3 cipher=DHE-DSS-AES256-SHA bits=256 verify=NO) for ; Tue, 10 Oct 2006 09:11:23 -0600 (MDT) Received: from dsl-210-15-216-215-static.vic.netspace.net.au ([210.15.216.215]:61703 helo=carla.home) by min.bytemine.net with esmtps (TLSv1:AES256-SHA:256) (Exim 4.60) (envelope-from ) id 1GXJGo-0006RR-D2 for deraadt@cvs.openbsd.org; Tue, 10 Oct 2006 17:11:51 +0200 Received: from carla.home (jsg@localhost.home [127.0.0.1]) by carla.home (8.13.6/8.13.6) with ESMTP id k9AFBhMq008885 for ; Wed, 11 Oct 2006 01:11:43 +1000 (EST) Received: (from jsg@localhost) by carla.home (8.13.6/8.13.1/Submit) id k9AFBhO1028197 for deraadt@cvs.openbsd.org; Wed, 11 Oct 2006 01:11:43 +1000 (EST) Resent-From: jsg@goblin.cx Resent-Date: Wed, 11 Oct 2006 01:11:43 +1000 Resent-Message-ID: <20061010151143.GF3250@mail.netspace.net.au> Resent-To: Theo de Raadt Delivered-To: unknown Received: from mail.goblin.cx (69.80.208.30) by carla.home with POP3; 14 Sep 2006 14:56:49 -0000 Received: from alligate5.nshosts.com (unverified [10.0.1.45]) by MAIL9.nshosts.com (Vircom SMTPRS 5.3.232) with ESMTP id for ; Thu, 14 Sep 2006 08:13:32 -0600 Received: from alnrmhc12.comcast.net [204.127.225.92] by alligate5.nshosts.com (Alligate(TM) SMTP Gateway v2.6.5.25) with ESMPT id for ; Thu, 14 Sep 2006 08:16:26 -0700 Received: from wireless-19-34.media.mit.edu ([18.85.19.34]) by comcast.net (alnrmhc12) with SMTP id <20060914141632b1200pcvppe>; Thu, 14 Sep 2006 14:16:32 +0000 Subject: Re: Marvell 88W8388 documentation From: Jim Gettys Reply-To: jg@laptop.org To: Dan Williams Cc: Jonathan Gray , mtosatti@redhat.com In-Reply-To: <1158242721.2634.26.camel@localhost.localdomain> References: <20060914124700.GA21474@mail.netspace.net.au> <1158242721.2634.26.camel@localhost.localdomain> Content-Type: text/plain Organization: OLPC Date: Thu, 14 Sep 2006 10:16:30 -0400 Message-Id: <1158243391.5871.196.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit X-MXRate-Prob: -1 X-MXRate-Country: US X-MXRate-Action: ALLOW X-Alligate-Grey: Skipped X-Alligate-In: Passed - Adult: 0 (Req: 100) Spam: 0 (Req: 100) Tot: 0 (Req: 100) X-Alligate-QueueFile: 020021598.dta X-Alligate-XFrom: [204.127.225.92] United States (US) X-Alligate-XTo: (jsg@goblin.cx) On Thu, 2006-09-14 at 10:05 -0400, Dan Williams wrote: > > Failing that I'm sure there are other vendors > > who would be willing to be more helpful. > > Possibly, but Marvell had the chip, was quite willing to do the work to > modify the firmware bits to OLPC specifications, was willing to > open-source their driver, etc. Other vendors weren't nearly as willing > as Marvell was to help the project out, so I'm not so sure your > assertion here is correct. > It is moot: no other chips had the capability we needed present in the Marvell chip. The other vendors (which in general are much less helpful to free software) were not even willing to consider adding the capability in their next generation, and were suffering a severe case of "hubris", that we could not possibly go with someone else's chip. - Jim -- Jim Gettys One Laptop Per Child Replied: Wed, 04 Oct 2006 12:38:34 -0600 Replied: "Jonathan Gray dcbw@redhat.com, jg@laptop.org, mtosatti@redhat.com" Return-Path: jsg@goblin.cx Delivery-Date: Thu Sep 14 06:47:19 2006 Received: from min.bytemine.net (min.bytemine.net [134.106.146.209]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k8EClHnM017171 (version=TLSv1/SSLv3 cipher=DHE-DSS-AES256-SHA bits=256 verify=NO) for ; Thu, 14 Sep 2006 06:47:19 -0600 (MDT) Received: from dsl-210-15-216-215-static.vic.netspace.net.au ([210.15.216.215]:61248 helo=carla.home) by min.bytemine.net with esmtps (TLSv1:AES256-SHA:256) (Exim 4.60) (envelope-from ) id 1GNqcU-0003vW-Je; Thu, 14 Sep 2006 14:47:08 +0200 Received: from carla.home (jsg@localhost.home [127.0.0.1]) by carla.home (8.13.6/8.13.6) with ESMTP id k8ECl10M027118; Thu, 14 Sep 2006 22:47:01 +1000 (EST) Received: (from jsg@localhost) by carla.home (8.13.6/8.13.1/Submit) id k8ECl0Qn006521; Thu, 14 Sep 2006 22:47:00 +1000 (EST) Date: Thu, 14 Sep 2006 22:47:00 +1000 From: Jonathan Gray To: dcbw@redhat.com, jg@laptop.org, mtosatti@redhat.com Subject: Marvell 88W8388 documentation Message-ID: <20060914124700.GA21474@mail.netspace.net.au> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.11 Hi guys, Please correct me if I am wrong but it seems that documentation for Marvell's 88W8388's is not publically available without signing an NDA? If this is the case why did a project that seems to pride itself of openess agree to deal with such a company? Drivers written under NDA tend to be full of magic numbers, near impossible for others to properly maintain and totally against the spirit of open projects. I really think you should push for Marvell to give out documentation without them forcing NDAs onto people. Failing that I'm sure there are other vendors who would be willing to be more helpful. Jonathan Return-Path: deraadt@cvs.openbsd.org Delivery-Date: Wed Oct 4 12:38:36 2006 Received: from cvs.openbsd.org (localhost [127.0.0.1]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k94IcY6j006189; Wed, 4 Oct 2006 12:38:34 -0600 (MDT) Message-Id: <200610041838.k94IcY6j006189@cvs.openbsd.org> To: Jonathan Gray cc: dcbw@redhat.com, jg@laptop.org, mtosatti@redhat.com cc: rms@gnu.org cc: deraadt Subject: Re: Marvell 88W8388 documentation In-reply-to: Your message of "Thu, 14 Sep 2006 22:47:00 +1000." <20060914124700.GA21474@mail.netspace.net.au> Date: Wed, 04 Oct 2006 12:38:34 -0600 From: Theo de Raadt > Please correct me if I am wrong but it seems that documentation > for Marvell's 88W8388's is not publically available without > signing an NDA? > > If this is the case why did a project that seems to pride > itself of openess agree to deal with such a company? > Drivers written under NDA tend to be full of magic numbers, > near impossible for others to properly maintain and > totally against the spirit of open projects. > > I really think you should push for Marvell to give out > documentation without them forcing NDAs onto people. > Failing that I'm sure there are other vendors > who would be willing to be more helpful. Jonathan showed me this mail he sent you about your NDA "cooperation" with Marvell for the wireless chip that you want to use for the OLPC project, so that Marvell will write you special hacks to do low-power mesh networking while the main cpu is powered off. This does not gaurantee Marvell is going to be open and release documentation for their chips though. When large players like you make such private agreements with such secretive vendors, you work against our common goals of getting more open documentation for devices. It is only with open documentation that OS groups can increase device support, and later -- keep the device drivers reliable after the device is EOL'd by the vendor. I've heard claims that you (OLPC members, Red Hat employees) think this relationship with Marvell will eventually prompt/teach them to be more open in time. Do you not realize how much of a DELUSION the history of free/open operating systems shows that point of view to be? Very few chip vendors have ever opened up unless they were pushed, let alone Marvell (who I am led to believe also has NDA's with Red Hat employees for the Marvell Yukon/Yukon 2 gigabit ethernet chips -- again one of the few closed chips). It is clear that your choices are not about opening up Marvell, but simply commercially expedient and hurtful to our common cause. You came to Marvell with potential sales of millions of units, and then completely wimped out in demanding ideals that you say you share with the community. Now other companies like Intel, Broadcom, and TI can say to us "Why should we open up, Marvell did not have to". So I must say I am extremely dissapointed you have chosen to work against the very obvious goals of "open", and I hope that in time you are made to feel ashamed of the choice you have made. Replied: Wed, 04 Oct 2006 13:41:36 -0600 Replied: "jg@laptop.org Jonathan Gray , dcbw@redhat.com, mtosatti@redhat.com, Replied: rms@gnu.org" Return-Path: jg@laptop.org Delivery-Date: Wed Oct 4 13:10:31 2006 Received: from alnrmhc14.comcast.net (alnrmhc14.comcast.net [204.127.225.94]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k94JAUJx023273 for ; Wed, 4 Oct 2006 13:10:31 -0600 (MDT) Received: from wireless-81.media.mit.edu ([18.85.18.81]) by comcast.net (alnrmhc14) with SMTP id <20061004191003b1400kgl8ne>; Wed, 4 Oct 2006 19:10:24 +0000 Subject: Re: Marvell 88W8388 documentation From: Jim Gettys Reply-To: jg@laptop.org To: Theo de Raadt Cc: Jonathan Gray , dcbw@redhat.com, mtosatti@redhat.com, rms@gnu.org In-Reply-To: <200610041838.k94IcY6j006189@cvs.openbsd.org> References: <200610041838.k94IcY6j006189@cvs.openbsd.org> Content-Type: text/plain Organization: OLPC Date: Wed, 04 Oct 2006 15:10:02 -0400 Message-Id: <1159989002.6029.710.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit Theo, You may not believe this, but we are continuing to work on Marvell (push, is the term you use); it has not fallen off our list at all and is continuing to be worked by us vigorously. And there is a reality that a piece of this is out of Marvell's short term control: their firmware was based on a commercial embedded OS, not theirs to give away. There may be long term solutions here by replacing all such code, but no short term ones. We could not ask Marvell for something they could not give us. You also need to understand that this component was/is literally the only game in town to achieve our goals: *there are no other alternatives*. We had no choice at all. Not Intel. Not Broadcom. Not Athleros. That Marvell chip is currently a unique part, *and they know it*. Negotiating positions are much stronger when you have alternatives, and we did not. For just about everything else, we were able to negotiate from strength; but not for this component. Best regards, - Jim Gettys On Wed, 2006-10-04 at 12:38 -0600, Theo de Raadt wrote: > > Please correct me if I am wrong but it seems that documentation > > for Marvell's 88W8388's is not publically available without > > signing an NDA? > > > > If this is the case why did a project that seems to pride > > itself of openess agree to deal with such a company? > > Drivers written under NDA tend to be full of magic numbers, > > near impossible for others to properly maintain and > > totally against the spirit of open projects. > > > > I really think you should push for Marvell to give out > > documentation without them forcing NDAs onto people. > > Failing that I'm sure there are other vendors > > who would be willing to be more helpful. > > Jonathan showed me this mail he sent you about your NDA "cooperation" > with Marvell for the wireless chip that you want to use for the OLPC > project, so that Marvell will write you special hacks to do low-power > mesh networking while the main cpu is powered off. This does not > gaurantee Marvell is going to be open and release documentation for > their chips though. > > When large players like you make such private agreements with such > secretive vendors, you work against our common goals of getting more > open documentation for devices. It is only with open documentation > that OS groups can increase device support, and later -- keep the > device drivers reliable after the device is EOL'd by the vendor. > > I've heard claims that you (OLPC members, Red Hat employees) think > this relationship with Marvell will eventually prompt/teach them to be > more open in time. Do you not realize how much of a DELUSION the > history of free/open operating systems shows that point of view to be? > Very few chip vendors have ever opened up unless they were pushed, let > alone Marvell (who I am led to believe also has NDA's with Red Hat > employees for the Marvell Yukon/Yukon 2 gigabit ethernet chips -- > again one of the few closed chips). > > It is clear that your choices are not about opening up Marvell, but > simply commercially expedient and hurtful to our common cause. You > came to Marvell with potential sales of millions of units, and then > completely wimped out in demanding ideals that you say you share with > the community. Now other companies like Intel, Broadcom, and TI can > say to us "Why should we open up, Marvell did not have to". > > So I must say I am extremely dissapointed you have chosen to work > against the very obvious goals of "open", and I hope that in time you > are made to feel ashamed of the choice you have made. -- Jim Gettys One Laptop Per Child Replied: Thu, 05 Oct 2006 16:16:32 -0600 Replied: "jg@laptop.org Jonathan Gray , dcbw@redhat.com, mtosatti@redhat.com, Replied: rms@gnu.org" Return-Path: jg@laptop.org Delivery-Date: Wed Oct 4 14:20:48 2006 Received: from alnrmhc14.comcast.net (alnrmhc14.comcast.net [206.18.177.54]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k94KKmIe026282 for ; Wed, 4 Oct 2006 14:20:48 -0600 (MDT) Received: from wireless-81.media.mit.edu ([18.85.18.81]) by comcast.net (alnrmhc14) with SMTP id <20061004202040b1400kgp3qe>; Wed, 4 Oct 2006 20:20:42 +0000 Subject: Re: Marvell 88W8388 documentation From: Jim Gettys Reply-To: jg@laptop.org To: Theo de Raadt Cc: Jonathan Gray , dcbw@redhat.com, mtosatti@redhat.com, rms@gnu.org In-Reply-To: <200610041941.k94JfaPt019572@cvs.openbsd.org> References: <200610041941.k94JfaPt019572@cvs.openbsd.org> Content-Type: text/plain Organization: OLPC Date: Wed, 04 Oct 2006 16:20:36 -0400 Message-Id: <1159993236.6029.758.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit On Wed, 2006-10-04 at 13:41 -0600, Theo de Raadt wrote: > > You may not believe this, but we are continuing to work on Marvell > > (push, is the term you use); it has not fallen off our list at all and > > is continuing to be worked by us vigorously. > > > > And there is a reality that a piece of this is out of Marvell's short > > term control: their firmware was based on a commercial embedded OS, not > > theirs to give away. There may be long term solutions here by replacing > > all such code, but no short term ones. We could not ask Marvell for > > something they could not give us. > > Well, your second paragraph just made it abundantly clear that Marvell > will never release documentation or a distributable firmware image. I said that they cannot distribute their current firmware, because they do not own the rights to part of it. I did not say that firmware could not be released someday, just that their current firmware is entangled in ways that they *cannot* quickly disentangle. We deal with the world the way it is, rather than the way we'd like it to be. > I > have heard this same excuse from many American wireless chip vendors > (and never from any non-American wireless chip vendors). And yet, > since you did not know the lines they would play you with, you have > not forced them to write a replacement firmware, nor have you forced > them to ever hand out documentation to get something like that > written. You have gotten nothing but a specially hacked driver, > helped by one or two people at Marvell, running with a special > firmware which Red Hat will then sign a contract to get distribution > rights for (and noone else will be able to distribute it). Am I not > correct? Do you really see it going anywhere else? > > Furthermore, it seems you are saying that the OLPC will not be based > on fully open or free software in the end. And you are saying that > your financial clout of millions of chips was not enough to put you in > ANY position of power. No, I was saying our options was limited from the start of the reality of Marvell's code base, and the lack of alternatives. There was not time to start from a clean slate for the firmware for the part. > > The OLPC project from the start gained a good reputation in the > open/free software community from acting as if it will be open & free; > the fact is it is not based on the open & free principles of our > greater community. People understood that this would all be based on > free stuff, and that source produced for this project will all find > it's way back into the ecosystem. But that is not a requirement of your > process -- it has been downgraded to something you only hope for. > > Why don't you tell people the truth -- that OLPC will very likely > depend on closed parts. That currently there are expedient steps > being taken that may not gaurantee a fully open platform in the end. > If you will not, should I go make public statements about it? I am > willing to explain the problem to the masses for you. You can believe me when I say that we have not let the issue drop with Marvell, or you may not. I repeat, we have not let the issue drop. Here's a bit more detail of what is going on behind the scenes: we do have a plan underway to start by getting an open version of the MIT Roofnet software (the mesh networking firmware) out. Michailis Bletsas here is organizing this effort. This is a start, but not the end point that either you or us desire, and we do not expect the work to end there. > > > You also need to understand that this component was/is literally the > > only game in town to achieve our goals: *there are no other > > alternatives*. We had no choice at all. Not Intel. Not Broadcom. Not > > Athleros. That Marvell chip is currently a unique part, *and they know > > it*. Negotiating positions are much stronger when you have > > alternatives, and we did not. For just about everything else, we were > > able to negotiate from strength; but not for this component. > > Frankly, now that our team has reverse engineered a multitude of > wireless chips, I am sure you are talking with any knowledge of the > domain. To pick just one example of a choice you had you could have > funded the prism54 people (who already have the skills) to build a > replacement firmware for any other chip vendor you partially opened up > with your financial clout, since about half of the other chipset > vendors also have arm or mips cpus on their 802.11 chips, which can > run even when the host is turned off. There is nothing unique about > the Marvell chip. It's just a processor that can can run when the > main cpu is turned off, and that just requires that USB or other power > be maintained. That's not a big deal. At a price point we could afford, *there are no alternatives right now*. It is in fact a unique part at anything like the price we got, working at the power consumption levels it does. If there are people interested in helping the open firmware effort, Michailis Bletsas is the person to contact. > > According to the latest estimates you are publishing, you are talking > at least 8 million Marvell chips. And you gain nothing except two > minor slaves at Marvell? > > I think you went from great potential strength to absolute weakness in > dealing with a vendor; used the open source community to gather > momentum you did not deserve; have hurt our efforts at working with > other vendors. And you did not even apologize for that damaging > effect you are having on the open/free source community's efforts to > free up more chips! > > Quite frankly the typical free/open operating system user needs good > wireless support from their operating system more than some commercial > spin-off project from Red Hat needs support for one locked-down chip. > Or have you forgotten that we were supposed to be a community? > > Yes, it sounds pretty harsh when stated that way. But can I ask > precisely when you lost your zeal to even _try_ to live up to the > commonly held goals of the community? In the end, OLPC is a project to help the children of the world to *learn*. Free and open software is a means to an end, rather than the sole end unto itself for OLPC. It is an important aspect of kids learning that they be able to see how computers work, but we had to choose getting systems into the hands of kids where almost all source is available sooner, or not getting systems out at all for months longer (later), or which would not be usable with human power that is needed for a large fraction of the kids on the planet, what did you expect our priorities to be? Regards, - Jim Gettys -- Jim Gettys One Laptop Per Child Replied: Thu, 05 Oct 2006 11:31:28 -0600 Replied: "rms@gnu.org jg@laptop.org, jsg@goblin.cx, dcbw@redhat.com, mtosatti@redhat.com" Return-Path: rms@gnu.org Delivery-Date: Thu Oct 5 10:45:59 2006 Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k95Gjxk9029590 for ; Thu, 5 Oct 2006 10:45:59 -0600 (MDT) Received: from rms by fencepost.gnu.org with local (Exim 4.34) id 1GVWLs-0002y4-HY; Thu, 05 Oct 2006 12:45:40 -0400 Content-Type: text/plain; charset=ISO-8859-15 From: Richard Stallman To: jg@laptop.org CC: deraadt@cvs.openbsd.org, jsg@goblin.cx, dcbw@redhat.com, mtosatti@redhat.com, rms@gnu.org In-reply-to: <1159989002.6029.710.camel@localhost.localdomain> (message from Jim Gettys on Wed, 04 Oct 2006 15:10:02 -0400) Subject: Re: Marvell 88W8388 documentation Reply-to: rms@gnu.org References: <200610041838.k94IcY6j006189@cvs.openbsd.org> <1159989002.6029.710.camel@localhost.localdomain> Message-Id: Date: Thu, 05 Oct 2006 12:45:40 -0400 And there is a reality that a piece of this is out of Marvell's short term control: their firmware was based on a commercial embedded OS, I presume you mean that this embedded OS is proprietary. Whether it is commercial (developed as a business) is neither here nor there. See http://www.gnu.org/philosophy/words-to-avoid.html#Commercial. not theirs to give away. Whether they release the code is not the crucial issue. What we need above all is the full specs of their chip, not under NDA. With that, we could write our own code. Sure, it would be even better if they release the complete code of the program that runs. That would be a bonus. But we don't _need_ that. An intermediate option would be to release only their part of the code. This would be a partial bonus, nicer than no bonus at all. But still not necessary. It is well to ask them for a bonus if you think they might give it. But let's keep the focus on the crucial issue: getting what we really need. Negotiating positions are much stronger when you have alternatives, and we did not. For just about everything else, we were able to negotiate from strength; but not for this component. The alternative I would have chosen is to give up the mesh feature. I would choose that rather than use non-free software. That would be a substantial sacrifice, but sometimes freedom requires a sacrifice. The willingness to make such sacrifices would increase your negotiating power to get what you want without a sacrifice. In the longer term, there may be other potential alternatives that would be less of a sacrifice. Are there any other companies interested in developing a part that could compete with this one? Getting in on the plans early, you could work with them to get the right outcome. Return-Path: rms@gnu.org Delivery-Date: Thu Oct 5 10:46:20 2006 Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k95GkK7x014606 for ; Thu, 5 Oct 2006 10:46:20 -0600 (MDT) Received: from rms by fencepost.gnu.org with local (Exim 4.34) id 1GVWLz-0002z5-0u; Thu, 05 Oct 2006 12:45:47 -0400 Content-Type: text/plain; charset=ISO-8859-15 From: Richard Stallman To: Theo de Raadt CC: jg@laptop.org, jsg@goblin.cx, dcbw@redhat.com, mtosatti@redhat.com cc: rms@gnu.org In-reply-to: <200610041941.k94JfaPt019572@cvs.openbsd.org> (message from Theo de Raadt on Wed, 04 Oct 2006 13:41:36 -0600) Subject: Re: Marvell 88W8388 documentation Reply-to: rms@gnu.org References: <200610041941.k94JfaPt019572@cvs.openbsd.org> Message-Id: Date: Thu, 05 Oct 2006 12:45:47 -0400 The OLPC project from the start gained a good reputation in the open/free software community from acting as if it will be open & free; the fact is it is not based on the open & free principles of our greater community. Hear, hear! Return-Path: deraadt@cvs.openbsd.org Delivery-Date: Thu Oct 5 11:49:51 2006 Received: from cvs.openbsd.org (localhost [127.0.0.1]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k95HnnNs012837 for ; Thu, 5 Oct 2006 11:49:51 -0600 (MDT) Message-Id: <200610051749.k95HnnNs012837@cvs.openbsd.org> Date: Thu, 05 Oct 2006 11:49:49 -0600 From: Theo de Raadt Subject: Letter to OLPC BCC: ------- Blind-Carbon-Copy To: lwn@lwn.net, jeremy@kerneltrap.org, sam@gnubies.com, jem@thejemreport.com Subject: Letter to OLPC Date: Thu, 05 Oct 2006 11:49:49 -0600 From: Theo de Raadt I have decided to make public this letter which I sent to the OLPC ("One Laptop Per Child" group, which is strongly associated with Red Hat. There have been replies to it by both Jim Gettys (argueing that their expediency is justified) and RMS (agreeing strongly with my point of view), but I will not disclose their letters. I am getting really tired of "open source" people who work against the open source community. Our little group can probably take credit for having "opened up" more wireless devices than the rest of the community, and therefore we feel we have a better grasp of the damage OLPC has done here. Our reverse engineering and documentation efforts will in time help all free software projects. Please take note, and publish if you wish. Thanks. - --- To: Jonathan Gray cc: dcbw@redhat.com, jg@laptop.org, mtosatti@redhat.com cc: rms@gnu.org cc: deraadt Subject: Re: Marvell 88W8388 documentation In-reply-to: Your message of "Thu, 14 Sep 2006 22:47:00 +1000." <20060914124700.GA21474@mail.netspace.net.au> Date: Wed, 04 Oct 2006 12:38:34 -0600 From: Theo de Raadt > Please correct me if I am wrong but it seems that documentation > for Marvell's 88W8388's is not publically available without > signing an NDA? > > If this is the case why did a project that seems to pride > itself of openess agree to deal with such a company? > Drivers written under NDA tend to be full of magic numbers, > near impossible for others to properly maintain and > totally against the spirit of open projects. > > I really think you should push for Marvell to give out > documentation without them forcing NDAs onto people. > Failing that I'm sure there are other vendors > who would be willing to be more helpful. Jonathan showed me this mail he sent you about your NDA "cooperation" with Marvell for the wireless chip that you want to use for the OLPC project, so that Marvell will write you special hacks to do low-power mesh networking while the main cpu is powered off. This does not gaurantee Marvell is going to be open and release documentation for their chips though. When large players like you make such private agreements with such secretive vendors, you work against our common goals of getting more open documentation for devices. It is only with open documentation that OS groups can increase device support, and later -- keep the device drivers reliable after the device is EOL'd by the vendor. I've heard claims that you (OLPC members, Red Hat employees) think this relationship with Marvell will eventually prompt/teach them to be more open in time. Do you not realize how much of a DELUSION the history of free/open operating systems shows that point of view to be? Very few chip vendors have ever opened up unless they were pushed, let alone Marvell (who I am led to believe also has NDA's with Red Hat employees for the Marvell Yukon/Yukon 2 gigabit ethernet chips -- again one of the few closed chips). It is clear that your choices are not about opening up Marvell, but simply commercially expedient and hurtful to our common cause. You came to Marvell with potential sales of millions of units, and then completely wimped out in demanding ideals that you say you share with the community. Now other companies like Intel, Broadcom, and TI can say to us "Why should we open up, Marvell did not have to". So I must say I am extremely dissapointed you have chosen to work against the very obvious goals of "open", and I hope that in time you are made to feel ashamed of the choice you have made. ------- End of Blind-Carbon-Copy Return-Path: owner-misc+M37805@openbsd.org Delivery-Date: Thu Oct 5 11:58:32 2006 Received: from shear.ucar.edu (shear.ucar.edu [192.43.244.163]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k95HwV74009563; Thu, 5 Oct 2006 11:58:32 -0600 (MDT) Received: from openbsd.org (localhost.ucar.edu [127.0.0.1]) by shear.ucar.edu (8.13.8/8.13.6) with ESMTP id k95HsCIt004561; Thu, 5 Oct 2006 11:54:12 -0600 (MDT) Received: from cvs.openbsd.org (cvs.openbsd.org [199.185.137.3]) by shear.ucar.edu (8.13.8/8.13.6) with ESMTP id k95HotIb011263 (version=TLSv1/SSLv3 cipher=DHE-DSS-AES256-SHA bits=256 verify=FAIL) for ; Thu, 5 Oct 2006 11:50:55 -0600 (MDT) Received: from cvs.openbsd.org (localhost [127.0.0.1]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k95Hos0I019862 for ; Thu, 5 Oct 2006 11:50:54 -0600 (MDT) Message-Id: <200610051750.k95Hos0I019862@cvs.openbsd.org> To: misc@cvs.openbsd.org Subject: Letter to OLPC Date: Thu, 05 Oct 2006 11:50:54 -0600 From: Theo de Raadt X-Loop: misc@openbsd.org Precedence: list Sender: owner-misc@openbsd.org I have decided to make public this letter which I sent to the OLPC ("One Laptop Per Child" group, which is strongly associated with Red Hat. There have been replies to it by both Jim Gettys (argueing that their expediency is justified) and RMS (agreeing strongly with my point of view), but I will not disclose their letters. I am getting really tired of "open source" people who work against the open source community. Our little group can probably take credit for having "opened up" more wireless devices than the rest of the community, and therefore we feel we have a better grasp of the damage OLPC has done here. Our reverse engineering and documentation efforts will in time help all free software projects. Please take note, and publish if you wish. Thanks. --- To: Jonathan Gray cc: dcbw@redhat.com, jg@laptop.org, mtosatti@redhat.com cc: rms@gnu.org cc: deraadt Subject: Re: Marvell 88W8388 documentation In-reply-to: Your message of "Thu, 14 Sep 2006 22:47:00 +1000." <20060914124700.GA21474@mail.netspace.net.au> Date: Wed, 04 Oct 2006 12:38:34 -0600 From: Theo de Raadt > Please correct me if I am wrong but it seems that documentation > for Marvell's 88W8388's is not publically available without > signing an NDA? > > If this is the case why did a project that seems to pride > itself of openess agree to deal with such a company? > Drivers written under NDA tend to be full of magic numbers, > near impossible for others to properly maintain and > totally against the spirit of open projects. > > I really think you should push for Marvell to give out > documentation without them forcing NDAs onto people. > Failing that I'm sure there are other vendors > who would be willing to be more helpful. Jonathan showed me this mail he sent you about your NDA "cooperation" with Marvell for the wireless chip that you want to use for the OLPC project, so that Marvell will write you special hacks to do low-power mesh networking while the main cpu is powered off. This does not gaurantee Marvell is going to be open and release documentation for their chips though. When large players like you make such private agreements with such secretive vendors, you work against our common goals of getting more open documentation for devices. It is only with open documentation that OS groups can increase device support, and later -- keep the device drivers reliable after the device is EOL'd by the vendor. I've heard claims that you (OLPC members, Red Hat employees) think this relationship with Marvell will eventually prompt/teach them to be more open in time. Do you not realize how much of a DELUSION the history of free/open operating systems shows that point of view to be? Very few chip vendors have ever opened up unless they were pushed, let alone Marvell (who I am led to believe also has NDA's with Red Hat employees for the Marvell Yukon/Yukon 2 gigabit ethernet chips -- again one of the few closed chips). It is clear that your choices are not about opening up Marvell, but simply commercially expedient and hurtful to our common cause. You came to Marvell with potential sales of millions of units, and then completely wimped out in demanding ideals that you say you share with the community. Now other companies like Intel, Broadcom, and TI can say to us "Why should we open up, Marvell did not have to". So I must say I am extremely dissapointed you have chosen to work against the very obvious goals of "open", and I hope that in time you are made to feel ashamed of the choice you have made. Replied: Thu, 05 Oct 2006 14:15:01 -0600 Replied: "Dan Williams Jonathan Gray , jg@laptop.org, mtosatti@redhat.com, Replied: rms@gnu.org, Chris Blizzard " Return-Path: dcbw@redhat.com Delivery-Date: Thu Oct 5 13:04:39 2006 Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k95J4cme025826 for ; Thu, 5 Oct 2006 13:04:39 -0600 (MDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k95J4WCG022327; Thu, 5 Oct 2006 15:04:32 -0400 Received: from mail.boston.redhat.com (mail.boston.redhat.com [172.16.76.12]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k95J4Vii003713; Thu, 5 Oct 2006 15:04:31 -0400 Received: from [10.13.248.31] (vpn-248-31.boston.redhat.com [10.13.248.31]) by mail.boston.redhat.com (8.12.8/8.12.8) with ESMTP id k95J4UX2004144; Thu, 5 Oct 2006 15:04:30 -0400 Subject: Re: Marvell 88W8388 documentation From: Dan Williams To: Theo de Raadt Cc: Jonathan Gray , jg@laptop.org, mtosatti@redhat.com, rms@gnu.org, Chris Blizzard In-Reply-To: <200610041838.k94IcY6j006189@cvs.openbsd.org> References: <200610041838.k94IcY6j006189@cvs.openbsd.org> Content-Type: text/plain Date: Thu, 05 Oct 2006 15:06:34 -0400 Message-Id: <1160075195.8246.12.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.8.0 (2.8.0-7.fc6) Content-Transfer-Encoding: 7bit On Wed, 2006-10-04 at 12:38 -0600, Theo de Raadt wrote: > > Please correct me if I am wrong but it seems that documentation > > for Marvell's 88W8388's is not publically available without > > signing an NDA? > > > > If this is the case why did a project that seems to pride > > itself of openess agree to deal with such a company? > > Drivers written under NDA tend to be full of magic numbers, > > near impossible for others to properly maintain and > > totally against the spirit of open projects. > > > > I really think you should push for Marvell to give out > > documentation without them forcing NDAs onto people. > > Failing that I'm sure there are other vendors > > who would be willing to be more helpful. > > Jonathan showed me this mail he sent you about your NDA "cooperation" > with Marvell for the wireless chip that you want to use for the OLPC > project, so that Marvell will write you special hacks to do low-power > mesh networking while the main cpu is powered off. This does not > gaurantee Marvell is going to be open and release documentation for > their chips though. > > When large players like you make such private agreements with such > secretive vendors, you work against our common goals of getting more > open documentation for devices. It is only with open documentation > that OS groups can increase device support, and later -- keep the > device drivers reliable after the device is EOL'd by the vendor. > > I've heard claims that you (OLPC members, Red Hat employees) think > this relationship with Marvell will eventually prompt/teach them to be > more open in time. Do you not realize how much of a DELUSION the > history of free/open operating systems shows that point of view to be? > Very few chip vendors have ever opened up unless they were pushed, let > alone Marvell (who I am led to believe also has NDA's with Red Hat > employees for the Marvell Yukon/Yukon 2 gigabit ethernet chips -- > again one of the few closed chips). I would urge you to wait. You seem to expect this process to happen over night, which is clearly impossible. As I'm sure you have experienced from the OpenBSD firmware re-licensing effort, this stuff often moves at a snails pace. It is unreasonable to expect an "open & release everything now!!" request to be honored at light-speed. The end goals have not changed; freely redistributable firmware, open drivers, and documentation. Perhaps these goals were not adequately expressed to you and others, and if not, then maybe OLPC needs to try harder to express them. Dan > It is clear that your choices are not about opening up Marvell, but > simply commercially expedient and hurtful to our common cause. You > came to Marvell with potential sales of millions of units, and then > completely wimped out in demanding ideals that you say you share with > the community. Now other companies like Intel, Broadcom, and TI can > say to us "Why should we open up, Marvell did not have to". > > So I must say I am extremely dissapointed you have chosen to work > against the very obvious goals of "open", and I hope that in time you > are made to feel ashamed of the choice you have made. Return-Path: deraadt@cvs.openbsd.org Delivery-Date: Thu Oct 5 14:15:02 2006 Received: from cvs.openbsd.org (localhost [127.0.0.1]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k95KF1HA013595; Thu, 5 Oct 2006 14:15:02 -0600 (MDT) Message-Id: <200610052015.k95KF1HA013595@cvs.openbsd.org> Date: Thu, 05 Oct 2006 14:15:01 -0600 From: Theo de Raadt Subject: Re: Marvell 88W8388 documentation BCC: ------- Blind-Carbon-Copy To: Dan Williams cc: Jonathan Gray , jg@laptop.org, mtosatti@redhat.com, rms@gnu.org, Chris Blizzard Subject: Re: Marvell 88W8388 documentation In-reply-to: Your message of "Thu, 05 Oct 2006 15:06:34 EDT." <1160075195.8246.12.camel@localhost.localdomain> Date: Thu, 05 Oct 2006 14:15:01 -0600 From: Theo de Raadt > I would urge you to wait. You seem to expect this process to happen > over night, which is clearly impossible. Well, I see no point in waiting -- I think it will be harder to fix this problem later. You have already signed an agreement with Marvell, so now I am sure that full documentation will never be made available through your effort. I don't know of one case in history where signing an NDA first has resulted in free access later. I've been dealing with hardware documentation access issues with hardware vendors for NEARLY TWENTY YEARS (Yes, like back when Van Jacobson was having difficulty getting Intel 10mbit ethernet docs, in 1987). History is on our side. History is not on your side. > As I'm sure you have > experienced from the OpenBSD firmware re-licensing effort, this stuff > often moves at a snails pace. Actually, every vendor who has accomodated us did so pretty damn fast, and every vendor who has refused is still busy refusing. And why are they refusing? Because for all our community pressure on them, noone with any money has convinced them otherwise. Then someone with money shows up.... and immediately makes a secret agreement for secret access and vendor-only distribution. > It is unreasonable to expect an "open & > release everything now!!" request to be honored at light-speed. You've been talking with Marvell for long enough to be able to know whether or not full documentation plus firmware distribution rights will arrive. Jim's mail yesterday made it pretty clear that since Marvell pparently does not own their own product outright, that is super unlikely. > The end goals have not changed; freely redistributable firmware, open > drivers, and documentation. Perhaps these goals were not adequately > expressed to you and others, and if not, then maybe OLPC needs to try > harder to express them. Jim also made it totally clear yesterday that this is more about "laptops for poor kids" than about totally free & open software. Here, we are calling it "One Lock Per Child", or "One License Per Child". I've taken my concerns to the public. I do not see why you should get any street-cred by being associated with open/free software community, when you are morally bankrupt regarding licensing. You are playing the same "Intellectual Property" game as Marvell by even having ANY contract or agreement with them. I have one question. If in 2 years Marvell still won't make all the documentation available for everyone, and they still won't make the firmware 100% distributable... what will you do? Cancel your agreement and use something else? Declare negotiations with Marvell over, and say "Theo was right"? No. You won't. You will still use their non-free crap, and give up on your free-software goals. And that is why your calls for me to wait, to be patient, are the most retarded and morally bankrupt bullshit I've heard all day. ------- End of Blind-Carbon-Copy Return-Path: mtosatti@redhat.com Delivery-Date: Thu Oct 5 15:58:30 2006 Received: from hera.kernel.org (hera.kernel.org [140.211.167.34]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k95LwSDF011213 (version=TLSv1/SSLv3 cipher=DHE-DSS-AES256-SHA bits=256 verify=NO) for ; Thu, 5 Oct 2006 15:58:29 -0600 (MDT) Received: from dmt.cnet (IDENT:U2FsdGVkX1+GDYkLpuK3E+Tr6uTCbxP9V+wEaeUw6HU@localhost [127.0.0.1]) by hera.kernel.org (8.13.7/8.13.7) with ESMTP id k95JgqEp019493; Thu, 5 Oct 2006 19:42:55 GMT Received: from dmt.cnet (dmt.cnet [127.0.0.1]) by dmt.cnet (Postfix) with ESMTP id 98C004971D1; Thu, 5 Oct 2006 16:42:46 -0300 (BRT) Received: (from marcelo@localhost) by dmt.cnet (8.13.6/8.13.6/Submit) id k95JgTg6009902; Thu, 5 Oct 2006 16:42:29 -0300 Date: Thu, 5 Oct 2006 16:42:28 -0300 From: Marcelo Tosatti To: Richard Stallman Cc: jg@laptop.org, deraadt@cvs.openbsd.org, jsg@goblin.cx, dcbw@redhat.com Subject: Re: Marvell 88W8388 documentation Message-ID: <20061005194228.GA9787@dmt> References: <200610041838.k94IcY6j006189@cvs.openbsd.org> <1159989002.6029.710.camel@localhost.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.2.1i X-Spam-Status: No, score=-3.7 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.1.3 X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on hera.kernel.org On Thu, Oct 05, 2006 at 12:45:40PM -0400, Richard Stallman wrote: > And there is a reality that a piece of this is out of Marvell's short > term control: their firmware was based on a commercial embedded OS, > > I presume you mean that this embedded OS is proprietary. Whether it > is commercial (developed as a business) is neither here nor there. > See http://www.gnu.org/philosophy/words-to-avoid.html#Commercial. > > not > theirs to give away. > > Whether they release the code is not the crucial issue. What we need > above all is the full specs of their chip, not under NDA. With that, > we could write our own code. Certainly thats what needs to be done as a practical step forward. As it stands now, Christopher/Michail/Jim have the power to articulate open documentation requirements. Has the OLPC project ever requested such thing, and what was the outcome? > Sure, it would be even better if they release the complete code of the > program that runs. That would be a bonus. But we don't _need_ that. > > An intermediate option would be to release only their part of the > code. This would be a partial bonus, nicer than no bonus at all. > But still not necessary. > > It is well to ask them for a bonus if you think they might give it. > But let's keep the focus on the crucial issue: getting what we really > need. > > Negotiating positions are much stronger when you have > alternatives, and we did not. For just about everything else, we were > able to negotiate from strength; but not for this component. > > The alternative I would have chosen is to give up the mesh feature. I > would choose that rather than use non-free software. That would be a > substantial sacrifice, but sometimes freedom requires a sacrifice. > > The willingness to make such sacrifices would increase your > negotiating power to get what you want without a sacrifice. > > In the longer term, there may be other potential alternatives that > would be less of a sacrifice. Are there any other companies > interested in developing a part that could compete with this one? > Getting in on the plans early, you could work with them to get the > right outcome. Return-Path: deraadt@cvs.openbsd.org Delivery-Date: Thu Oct 5 16:16:32 2006 Received: from cvs.openbsd.org (localhost [127.0.0.1]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k95MGWWM031339; Thu, 5 Oct 2006 16:16:32 -0600 (MDT) Message-Id: <200610052216.k95MGWWM031339@cvs.openbsd.org> Date: Thu, 05 Oct 2006 16:16:32 -0600 From: Theo de Raadt Subject: Re: Marvell 88W8388 documentation BCC: ------- Blind-Carbon-Copy To: jg@laptop.org cc: Jonathan Gray , dcbw@redhat.com, mtosatti@redhat.com, rms@gnu.org Subject: Re: Marvell 88W8388 documentation In-reply-to: Your message of "Wed, 04 Oct 2006 16:20:36 EDT." <1159993236.6029.758.camel@localhost.localdomain> Date: Thu, 05 Oct 2006 16:16:32 -0600 From: Theo de Raadt I wanted to show you all a mail that one very astute person on the misc@openbsd.org mailing list posted. He details precisely how OLPC / Red Hat should have approached this matter. But that is not how it was done. Instead, you behaved towards Marvell from a position of supreme supplication, doing nothing more than begging to lick at their teat. If Red Hat -- the strongman of the open source community -- continues to act like absolute wimps, how do you think that makes the little players like us look? Please grab some balls and go back to Marvell and renegotiate this deal immediately -- for *FULL* documentation disclosure and firmware distribution licensing as soon as possible. - -- Date: Fri, 6 Oct 2006 00:08:24 +0200 From: Paul de Weerd To: "Jack J. Woehr" Cc: OpenBSD Subject: Re: Letter to OLPC On Thu, Oct 05, 2006 at 03:54:47PM -0600, Jack J. Woehr wrote: | > Free and open software is a means to an end, rather than the | > sole end unto itself for OLPC. | > | > I was totally stunned by this admission. "morally bankrupt", as Bob | > says, is exactly what is going on. | | Hmm, sounds like you are saying that abstract goal of unlimited | software freedom is | a higher goal than providing access to modern technology to | disadvantaged children in | 3rd-world countries. I don't wish to argue that point, but it is | certainly a point | that could be debated. Why *would* the OLPC people wish to get their | dicks caught | in the struggle between the free-and-open software community and the | greedheads? This is a perfect opportunity to stand up, speak up about this issue. Why would the Intels and Marvells of this world withhold developers the documentation they need if they are unwilling to sign an NDA ? They are writing software that provides 'disadvantaged children in 3rd-world countries' access to modern technology. Reverse your argument and bring it to Marvell. Imagine the bad press Marvell would have gotten had they declined OLPC/Red Hat access to the documentation without NDA when asked. "This company will not allow 'disadvantaged children in 3rd-world countries' to gain access to modern technology, because they feel the documentation to their hardware is to secret." (or whatever their false reasoning is) What these companies need is bad press. Bad press is bad for their business and shareholders will start to complain. It seems that this is the only way to make changes in big corporations, and changes are exactly what we need. Paul 'WEiRD' de Weerd ------- End of Blind-Carbon-Copy Replied: Thu, 05 Oct 2006 17:33:40 -0600 Replied: "jg@laptop.org rms@gnu.org, jsg@goblin.cx, dcbw@redhat.com, mtosatti@redhat.com" Return-Path: jg@laptop.org Delivery-Date: Thu Oct 5 17:00:13 2006 Received: from alnrmhc11.comcast.net (alnrmhc11.comcast.net [206.18.177.51]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k95N0DuG020457 for ; Thu, 5 Oct 2006 17:00:13 -0600 (MDT) Received: from wireless-19-154.media.mit.edu ([18.85.19.154]) by comcast.net (alnrmhc11) with SMTP id <20061005224455b11009kpste>; Thu, 5 Oct 2006 22:44:56 +0000 Subject: Re: Marvell 88W8388 documentation From: Jim Gettys Reply-To: jg@laptop.org To: rms@gnu.org Cc: deraadt@cvs.openbsd.org, jsg@goblin.cx, dcbw@redhat.com, mtosatti@redhat.com In-Reply-To: References: <200610041838.k94IcY6j006189@cvs.openbsd.org> <1159989002.6029.710.camel@localhost.localdomain> Content-Type: text/plain Organization: OLPC Date: Thu, 05 Oct 2006 18:44:53 -0400 Message-Id: <1160088294.6075.40.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit On Thu, 2006-10-05 at 12:45 -0400, Richard Stallman wrote: > And there is a reality that a piece of this is out of Marvell's short > term control: their firmware was based on a commercial embedded OS, > > I presume you mean that this embedded OS is proprietary. Whether it > is commercial (developed as a business) is neither here nor there. > See http://www.gnu.org/philosophy/words-to-avoid.html#Commercial. > > not > theirs to give away. > > Whether they release the code is not the crucial issue. What we need > above all is the full specs of their chip, not under NDA. With that, > we could write our own code. > > Sure, it would be even better if they release the complete code of the > program that runs. That would be a bonus. But we don't _need_ that. > > An intermediate option would be to release only their part of the > code. This would be a partial bonus, nicer than no bonus at all. > But still not necessary. > > It is well to ask them for a bonus if you think they might give it. > But let's keep the focus on the crucial issue: getting what we really > need. > > Negotiating positions are much stronger when you have > alternatives, and we did not. For just about everything else, we were > able to negotiate from strength; but not for this component. > > The alternative I would have chosen is to give up the mesh feature. I > would choose that rather than use non-free software. That would be a > substantial sacrifice, but sometimes freedom requires a sacrifice. > > The willingness to make such sacrifices would increase your > negotiating power to get what you want without a sacrifice. There is no power for access points in the parts of the world we go to. This is not a viable option. Most of the kids in the developing world have no electricity, much less money for access points. The only way we have to solve the last mile problem at all is via a mesh network. And in terms of mesh networking, the alternative was Atheros, with their closed HAL. It is a non-starter as it cannot run without the processor running, which would require us to run at about 5-10 times the power. > > In the longer term, there may be other potential alternatives that > would be less of a sacrifice. Are there any other companies > interested in developing a part that could compete with this one? > Getting in on the plans early, you could work with them to get the > right outcome. > Yes, what do you think we are doing now for our next generation? We talk to all the manufacturers. We *want* them to compete for the business. And yes, we expect the next time around we'll have more than one possible choice. - Jim -- Jim Gettys One Laptop Per Child Replied: Thu, 05 Oct 2006 17:58:17 -0600 Replied: "jg@laptop.org Dan Williams , Jonathan Gray , Replied: mtosatti@redhat.com, rms@gnu.org, Replied: Chris Blizzard " Replied: Thu, 05 Oct 2006 17:40:40 -0600 Replied: "jg@laptop.org Dan Williams , Jonathan Gray , Replied: mtosatti@redhat.com, rms@gnu.org, Replied: Chris Blizzard " Return-Path: jg@laptop.org Delivery-Date: Thu Oct 5 17:06:57 2006 Received: from alnrmhc14.comcast.net (alnrmhc14.comcast.net [204.127.225.94]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k95N6vN5027959 for ; Thu, 5 Oct 2006 17:06:57 -0600 (MDT) Received: from wireless-19-154.media.mit.edu ([18.85.19.154]) by comcast.net (alnrmhc14) with SMTP id <20061005230640b1400kgos6e>; Thu, 5 Oct 2006 23:06:51 +0000 Subject: Re: Marvell 88W8388 documentation From: Jim Gettys Reply-To: jg@laptop.org To: Theo de Raadt Cc: Dan Williams , Jonathan Gray , mtosatti@redhat.com, rms@gnu.org, Chris Blizzard In-Reply-To: <200610052015.k95KF1H8013595@cvs.openbsd.org> References: <200610052015.k95KF1H8013595@cvs.openbsd.org> Content-Type: text/plain Organization: OLPC Date: Thu, 05 Oct 2006 19:06:38 -0400 Message-Id: <1160089598.6075.63.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit On Thu, 2006-10-05 at 14:15 -0600, Theo de Raadt wrote: > > I would urge you to wait. You seem to expect this process to happen > > over night, which is clearly impossible. > > Well, I see no point in waiting -- I think it will be harder to fix > this problem later. You have already signed an agreement with > Marvell, so now I am sure that full documentation will never be made > available through your effort. This does not follow. It is an assertion without proof. > I don't know of one case in history > where signing an NDA first has resulted in free access later. Then you don't know history. Let's see: some of my personal history, which you will probably dismiss: As an employee of Digital Equipment Corporation, having signed the Digital employee agreement, I was personally responsible for causing Digital to release the programming specifications for the MIPS based workstations and Turbochannel cards. In my long experience on the other side of the fence, often the documentation doesn't really exist, are in some random directory where no-one knows where it is, or is so intertwined with hardware documentation that extricating programming specifications from those documents is a long and arduous process. Very often it is out-dated and incorrect. Sometimes, it is entwined with future product plans and specifications. The reason that the MIPS documents happened is that I bothered to track them down and clean them up enough to get them out there, and also that the engineering group involved was better than average at doing documentation. I spent more than a month getting those documents in shape that the could be released, personally. > I've > been dealing with hardware documentation access issues with hardware > vendors for NEARLY TWENTY YEARS (Yes, like back when Van Jacobson was > having difficulty getting Intel 10mbit ethernet docs, in 1987). > History is on our side. History is not on your side. See above history. My history is longer than yours: I've been at this since 1983; so I'm at 23 years and counting. I worked on drafting the MIT license. Please don't tell me I don't know anything about this topic. > > > As I'm sure you have > > experienced from the OpenBSD firmware re-licensing effort, this stuff > > often moves at a snails pace. > > Actually, every vendor who has accomodated us did so pretty damn fast, > and every vendor who has refused is still busy refusing. And why are > they refusing? Because for all our community pressure on them, noone > with any money has convinced them otherwise. Actually, from what I've seen, community pressure has had at best mixed success at best. What actually works is economics and self interest, and pointing out the economics and self interest to those companies. > Then someone with money > shows up.... and immediately makes a secret agreement for secret > access and vendor-only distribution. You can often get more by being pleasant than confrontational. I don't know what you mean by vendor-only distribution. > > > It is unreasonable to expect an "open & > > release everything now!!" request to be honored at light-speed. > > You've been talking with Marvell for long enough to be able to know > whether or not full documentation plus firmware distribution rights > will arrive. Jim's mail yesterday made it pretty clear that since > Marvell pparently does not own their own product outright, that is > super unlikely. They do not own the simple operating system they used for their firmware. As I said in my last mail, we already have work underway to be to replace this firmware. You can believe this statement, or not, but it is true. You can help, but apparently you'd prefer to not follow up and just write more mail messages. > > > The end goals have not changed; freely redistributable firmware, open > > drivers, and documentation. Perhaps these goals were not adequately > > expressed to you and others, and if not, then maybe OLPC needs to try > > harder to express them. > > Jim also made it totally clear yesterday that this is more about > "laptops for poor kids" than about totally free & open software. > Here, we are calling it "One Lock Per Child", or "One License Per > Child". Yes, I DO NOT APOLOGIZE FOR PUTTING THE GOOD OF THE WORLDS CHILDREN FIRST. We are One Laptop Per Child.... > > I've taken my concerns to the public. I do not see why you should get > any street-cred by being associated with open/free software community, > when you are morally bankrupt regarding licensing. You are playing > the same "Intellectual Property" game as Marvell by even having ANY > contract or agreement with them. > > I have one question. If in 2 years Marvell still won't make all the > documentation available for everyone, and they still won't make the > firmware 100% distributable... what will you do? Cancel your agreement > and use something else? Two years from now we'll be using different parts and have more options. No machine stays in production for 2 years. > Declare negotiations with Marvell over, and > say "Theo was right"? > > No. You won't. You will still use their non-free crap, and give up > on your free-software goals. And that is why your calls for me to > wait, to be patient, are the most retarded and morally bankrupt > bullshit I've heard all day. Our goals are helping kids learn. If it is so terrible to have built the most open system in recent memory, while continuing to do work freeing up the firmware on the one part that the one available component that can do what we need is underway, then I guess by your definition, we must be terrible. Ad homonym, abusive attacks on people's motives, goals or future behavior do not help your case one bit. -- Jim Gettys One Laptop Per Child Return-Path: deraadt@cvs.openbsd.org Delivery-Date: Thu Oct 5 18:31:16 2006 Received: from cvs.openbsd.org (localhost [IPv6:::1]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k960VGQk005674 (version=TLSv1/SSLv3 cipher=DHE-DSS-AES256-SHA bits=256 verify=NO) for ; Thu, 5 Oct 2006 18:31:16 -0600 (MDT) Received: (from deraadt@localhost) by cvs.openbsd.org (8.13.6/8.12.0/Submit) id k960VGoI017737 for deraadt; Thu, 5 Oct 2006 18:31:16 -0600 (MDT) Date: Thu, 5 Oct 2006 18:31:16 -0600 (MDT) From: Theo de Raadt Message-Id: <200610060031.k960VGoI017737@cvs.openbsd.org> To: deraadt@cvs.openbsd.org To: jg@laptop.org cc: rms@gnu.org, jsg@goblin.cx, dcbw@redhat.com, mtosatti@redhat.com Subject: Re: Marvell 88W8388 documentation In-reply-to: Your message of "Thu, 05 Oct 2006 18:44:53 EDT." <1160088294.6075.40.camel@localhost.localdomain> Date: Thu, 05 Oct 2006 17:33:40 -0600 From: Theo de Raadt > There is no power for access points in the parts of the world we go to. > This is not a viable option. > > Most of the kids in the developing world have no electricity, much less > money for access points. The only way we have to solve the last mile > problem at all is via a mesh network. [The above text is completely unrelated to how you negotiated weakly with Marvell. You keep bringing it up as the excuse for why the Marvell agreement was made, but it simply does not matter in the big picture.] > And in terms of mesh networking, the alternative was Atheros, with their > closed HAL. It is a non-starter as it cannot run without the processor > running, which would require us to run at about 5-10 times the power. For the record, we have completely reverse engineered the Atheros HAL ourselves. We've been using our own completely open code for four years. So there was an option. Maybe it used more power. So? I bet you were not even aware of our code. Of course, you would never have had the balls to ask Atheros to open up their HAL, either. And by the way you can find 2-year old offical Atheros HAL source code on some sites in eastern Europe -- with a BSD license on every file, placed there by Sam Leffler himself. It is already free code according to the license, but still, we avoided it and wrote our own. > > In the longer term, there may be other potential alternatives that > > would be less of a sacrifice. Are there any other companies > > interested in developing a part that could compete with this one? > > Getting in on the plans early, you could work with them to get the > > right outcome. > > > > Yes, what do you think we are doing now for our next generation? > > We talk to all the manufacturers. We *want* them to compete for the > business. And yes, we expect the next time around we'll have more than > one possible choice. Your mail does a very good job of convincing me that for now you MUST use the Marvell chip. Technologically, you simply do not have any other choice. The quantity of sales you may bring made no difference. And as I can see, you are already investing engineering effort into using the Marvell chips. So in the end, even if Marvell refuses to open up their documentation, you will accept their closed terms, and buy 8,000,000 of their chips, and then ship closed laptops to kids. And quite frankly, you just convinced me that Marvell will never give us any documentation either, since I know of some other large vendors who Marvell refused to give documentation to (but we also know some who Marvell did give the same documentation to). Even medium sized vendors have learned that they must DEMAND that documentation arrives before starting any engineering in-house that financially commits them towards buying a particular product. So why not simply tell Marvell that you are completely captive to their closed model? Why not honestly tell the open source community that too? Why keep trying to dance around the issues I brought up? Therefore, in response to your solid arguments that you MUST use the Marvell chip... I have a request. Can I have permission to forward your mail to Marvell? I want to show them how convincingly you argue that you are a captive customer of theirs. Maybe they will even increase the price of their chips. Now you will think I'm a bigger asshole than before. But how did you get to the point where I could even ask such a thing? Or should I just show your mail to Marvell anyways, without permission? If you are willing to scuttle our efforts to free documentation, why should we not scuttle you? Come on! Do you really not get it? If there is one lesson we should have by now it is that YOU CAN'T HAVE IT BOTH WAYS! It's the singular problem of "vendor lock-in" that caused most of us to get into this whole culture of writing free software! Is Red Hat trying to become as closed as Sun? It took them years to dig through all their paperwork to get Solaris source out the door. You want that? You would sacrifice freedom hoping to gain it back at a later date. Has that retarded American ethos really now penetrated all the way into the core of the Linux community? The last thing we expected was a bunch of woosy traitors in our midst! What DO you stand for? You cannot honestly stand only for "laptops for children" and throw away everything else that our community depends on? Should we be asking how else are you undermining the free/open source community behind our backs? I -- and many others -- are going to hold you accountable to fix this bloody mess you have created! Replied: Fri, 06 Oct 2006 14:42:07 -0600 Replied: "Marcelo Tosatti jg@laptop.org, Dan Williams , Replied: Jonathan Gray , rms@gnu.org, Replied: Chris Blizzard " Replied: Fri, 06 Oct 2006 14:18:19 -0600 Replied: "Marcelo Tosatti jg@laptop.org, Dan Williams , Replied: Jonathan Gray , rms@gnu.org, Replied: Chris Blizzard " Replied: Fri, 06 Oct 2006 14:09:16 -0600 Replied: "Marcelo Tosatti jg@laptop.org, Dan Williams , Replied: Jonathan Gray , rms@gnu.org, Replied: Chris Blizzard " Return-Path: mtosatti@redhat.com Delivery-Date: Fri Oct 6 12:35:08 2006 Received: from hera.kernel.org (hera.kernel.org [140.211.167.34]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k96IZ7pX016263 (version=TLSv1/SSLv3 cipher=DHE-DSS-AES256-SHA bits=256 verify=NO) for ; Fri, 6 Oct 2006 12:35:08 -0600 (MDT) Received: from dmt.cnet (IDENT:U2FsdGVkX1/LE11ZfjykMkylsPbC1vCE2a9ihvSyiMU@localhost [127.0.0.1]) by hera.kernel.org (8.13.7/8.13.7) with ESMTP id k96IYshS003142; Fri, 6 Oct 2006 18:34:56 GMT Received: from dmt.cnet (dmt.cnet [127.0.0.1]) by dmt.cnet (Postfix) with ESMTP id 3BF704971D1; Fri, 6 Oct 2006 14:34:20 -0300 (BRT) Received: (from marcelo@localhost) by dmt.cnet (8.13.6/8.13.6/Submit) id k96HY3Tf004865; Fri, 6 Oct 2006 14:34:03 -0300 Date: Fri, 6 Oct 2006 14:34:03 -0300 From: Marcelo Tosatti To: Theo de Raadt Cc: jg@laptop.org, Dan Williams , Jonathan Gray , rms@gnu.org, Chris Blizzard Subject: Re: Marvell 88W8388 documentation Message-ID: <20061006173402.GA4575@dmt> References: <1160089598.6075.63.camel@localhost.localdomain> <200610052358.k95NwHB2006381@cvs.openbsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200610052358.k95NwHB2006381@cvs.openbsd.org> User-Agent: Mutt/1.4.2.1i X-Spam-Status: No, score=-3.9 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.1.3 X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on hera.kernel.org On Thu, Oct 05, 2006 at 05:58:17PM -0600, Theo de Raadt wrote: > > In my long experience on the other side of the fence, often the > > documentation doesn't really exist, are in some random directory where > > no-one knows where it is, or is so intertwined with hardware > > documentation that extricating programming specifications from those > > documents is a long and arduous process. Very often it is out-dated and > > incorrect. Sometimes, it is entwined with future product plans and > > specifications. > > The Marvell documentation does exist. I have been told a bit about > how large it is. It sounds like you are making these statements > without having access to it. Its rather small (its the interface to the firmware through a set of well defined commands). By the way, you can easily understand the firmware interface by looking at the Linux driver (it provides as much information as the documentation). Everybody in the OLPC project, including the people who decided to pick a piece of hardware able to keep up with cost/power constraints, have the best intentions with reference to using _only_ free software in the machines. Replied: Fri, 06 Oct 2006 14:15:47 -0600 Replied: "rms@gnu.org jg@laptop.org, jsg@goblin.cx, dcbw@redhat.com, mtosatti@redhat.com" Return-Path: rms@gnu.org Delivery-Date: Fri Oct 6 14:06:54 2006 Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k96K6rdo028285 for ; Fri, 6 Oct 2006 14:06:54 -0600 (MDT) Received: from rms by fencepost.gnu.org with local (Exim 4.34) id 1GVvxx-00033d-VQ; Fri, 06 Oct 2006 16:06:42 -0400 Content-Type: text/plain; charset=ISO-8859-15 From: Richard Stallman To: jg@laptop.org CC: deraadt@cvs.openbsd.org, jsg@goblin.cx, dcbw@redhat.com, mtosatti@redhat.com In-reply-to: <1160088294.6075.40.camel@localhost.localdomain> (message from Jim Gettys on Thu, 05 Oct 2006 18:44:53 -0400) Subject: Re: Marvell 88W8388 documentation Reply-to: rms@gnu.org References: <200610041838.k94IcY6j006189@cvs.openbsd.org> <1159989002.6029.710.camel@localhost.localdomain> <1160088294.6075.40.camel@localhost.localdomain> Message-Id: Date: Fri, 06 Oct 2006 16:06:41 -0400 Most of the kids in the developing world have no electricity, much less money for access points. The only way we have to solve the last mile problem at all is via a mesh network. There has to be a powered network hub somewhere in the village, or the mesh network won't be able to reach the outside world. Why can't that hub do the job? We talk to all the manufacturers. We *want* them to compete for the business. And yes, we expect the next time around we'll have more than one possible choice. Have you told them clearly that you'll choose a chip which supports free software next time? That is the first step to apply some leverage for the future products. How far in the future do you think the next time around will be? Replied: Fri, 06 Oct 2006 14:12:55 -0600 Replied: "rms@gnu.org jg@laptop.org, jsg@goblin.cx, dcbw@redhat.com, mtosatti@redhat.com" Return-Path: rms@gnu.org Delivery-Date: Fri Oct 6 14:07:05 2006 Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k96K74xv027392 for ; Fri, 6 Oct 2006 14:07:05 -0600 (MDT) Received: from rms by fencepost.gnu.org with local (Exim 4.34) id 1GVvy3-00034R-IG; Fri, 06 Oct 2006 16:06:47 -0400 Content-Type: text/plain; charset=ISO-8859-15 From: Richard Stallman To: Theo de Raadt CC: jg@laptop.org, jsg@goblin.cx, dcbw@redhat.com, mtosatti@redhat.com cc: rms@gnu.org In-reply-to: <200610052333.k95NXeAN006710@cvs.openbsd.org> (message from Theo de Raadt on Thu, 05 Oct 2006 17:33:40 -0600) Subject: Re: Marvell 88W8388 documentation Reply-to: rms@gnu.org References: <200610052333.k95NXeAN006710@cvs.openbsd.org> Message-Id: Date: Fri, 06 Oct 2006 16:06:47 -0400 > And in terms of mesh networking, the alternative was Atheros, with their > closed HAL. It is a non-starter as it cannot run without the processor > running, which would require us to run at about 5-10 times the power. For the record, we have completely reverse engineered the Atheros HAL ourselves. We've been using our own completely open code for four years. Could we organize a project to reverse-engineer the Marvell chip? Return-Path: deraadt@cvs.openbsd.org Delivery-Date: Fri Oct 6 14:44:11 2006 Received: from cvs.openbsd.org (localhost [IPv6:::1]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k96KiB4m016183 (version=TLSv1/SSLv3 cipher=DHE-DSS-AES256-SHA bits=256 verify=NO) for ; Fri, 6 Oct 2006 14:44:11 -0600 (MDT) Received: (from deraadt@localhost) by cvs.openbsd.org (8.13.6/8.12.0/Submit) id k96KiB1N001137 for deraadt; Fri, 6 Oct 2006 14:44:11 -0600 (MDT) Date: Fri, 6 Oct 2006 14:44:11 -0600 (MDT) From: Theo de Raadt Message-Id: <200610062044.k96KiB1N001137@cvs.openbsd.org> To: deraadt@cvs.openbsd.org To: Marcelo Tosatti cc: jg@laptop.org, Dan Williams , Jonathan Gray , rms@gnu.org, Chris Blizzard Subject: Re: Marvell 88W8388 documentation In-reply-to: Your message of "Fri, 06 Oct 2006 14:34:03 -0300." <20061006173402.GA4575@dmt> Date: Fri, 06 Oct 2006 14:42:07 -0600 From: Theo de Raadt > > The Marvell documentation does exist. I have been told a bit about > > how large it is. It sounds like you are making these statements > > without having access to it. > > Its rather small (its the interface to the firmware through a set of > well defined commands). > > By the way, you can easily understand the firmware interface by > looking at the Linux driver (it provides as much information as the > documentation). If it is so simple, why is Marvell firmware interface specification 142 pages long? Are you really going to condense all of that information into the driver, so that future driver maintainers can work on the driver after you and your NDA document have moved onwards? We found a copy on the net of the Marvell firmware interface specification. http://lists.infradead.org/pipermail/libertas-dev/attachments/20060614/bb59070f/attachment-0001.bin See, 142 pages. Not the largest document we've ever seen, but quite hefty. It looks like this is a leaked copy of the document that Red Hat got from Marvell. One of you guys leaked it, I suspect. Thanks, we have a copy now. Shall I tell Marvell that I found this? That said, this is only 1 of 7 documents that Marvell has for this chip. The other 6 documents are also very important. Marcelo, based on the balony you spoke above, I find it hard to trust your predictions that Marvell will open up. Replied: Fri, 06 Oct 2006 22:44:30 -0600 Replied: "jg@laptop.org rms@gnu.org, Marcelo Tosatti , dcbw@redhat.com, Replied: jsg@goblin.cx, blizzard@redhat.com" Return-Path: jg@laptop.org Delivery-Date: Fri Oct 6 20:29:15 2006 Received: from rwcrmhc11.comcast.net (rwcrmhc11.comcast.net [216.148.227.151]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k972TERi032080 for ; Fri, 6 Oct 2006 20:29:15 -0600 (MDT) Received: from [192.168.1.144] (c-24-218-178-107.hsd1.ma.comcast.net[24.218.178.107]) by comcast.net (rwcrmhc11) with SMTP id <20061007012833m11000d2uce>; Sat, 7 Oct 2006 01:28:35 +0000 Subject: Re: Marvell 88W8388 documentation From: Jim Gettys Reply-To: jg@laptop.org To: rms@gnu.org Cc: Marcelo Tosatti , deraadt@cvs.openbsd.org, dcbw@redhat.com, jsg@goblin.cx, blizzard@redhat.com In-Reply-To: References: <1160089598.6075.63.camel@localhost.localdomain> <200610052358.k95NwHB2006381@cvs.openbsd.org> <20061006173402.GA4575@dmt> Content-Type: text/plain Organization: OLPC Date: Fri, 06 Oct 2006 21:28:32 -0400 Message-Id: <1160184512.22956.146.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit On Fri, 2006-10-06 at 21:07 -0400, Richard Stallman wrote: > Everybody in the OLPC project, including the people who decided to pick > a piece of hardware able to keep up with cost/power constraints, have > the best intentions with reference to using _only_ free software in the > machines. > > I am sure that everyone here has that intention, but that isn't the > crucial question. The crucial question is whether people are pushing > hard enough to actually attain that goal. Yes, we are. > > By the way, you can easily understand the firmware interface by > looking at the Linux driver (it provides as much information as the > documentation). > > The code of that driver would be fine documentation if it is released. The driver is in our git pool, awaiting upstream merge at kernel.org. > But I think people stated here that Marvell has not released it, and > that Marvell says it can't release that code because it is too tangled > up with the microkernel. Marvell can't release the firmware that runs inside the wireless chip. The Linux kernel driver for the Marvell wireless chip is already available, and has been for several months. http://dev.laptop.org/git?p=olpc-2.6;a=summary > If that is not right, would someone please > set me straight? > > > The Marvell documentation does exist. I have been told a bit about > > how large it is. It sounds like you are making these statements > > without having access to it. > > Its rather small (its the interface to the firmware through a set of > well defined commands). > > I think we are having a miscommunication. The documentation we need > is the specifications for the hardware itself. With that, we could > write a driver. We do not need documention of their driver as such. Please look at the libertas driver in the git pool. Regards, - Jim Gettys -- Jim Gettys One Laptop Per Child Replied: Fri, 06 Oct 2006 23:06:18 -0600 Replied: "jg@laptop.org rms@gnu.org, jsg@goblin.cx, dcbw@redhat.com, mtosatti@redhat.com" Return-Path: jg@laptop.org Delivery-Date: Fri Oct 6 22:41:28 2006 Received: from rwcrmhc13.comcast.net (rwcrmhc13.comcast.net [216.148.227.153]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k974fQKW026611 for ; Fri, 6 Oct 2006 22:41:27 -0600 (MDT) Received: from [192.168.1.144] (c-24-218-178-107.hsd1.ma.comcast.net[24.218.178.107]) by comcast.net (rwcrmhc13) with SMTP id <20061007044116m1300ngqa0e>; Sat, 7 Oct 2006 04:41:17 +0000 Subject: Re: Marvell 88W8388 documentation From: Jim Gettys Reply-To: jg@laptop.org To: rms@gnu.org Cc: deraadt@cvs.openbsd.org, jsg@goblin.cx, dcbw@redhat.com, mtosatti@redhat.com In-Reply-To: References: <200610041838.k94IcY6j006189@cvs.openbsd.org> <1159989002.6029.710.camel@localhost.localdomain> <1160088294.6075.40.camel@localhost.localdomain> Content-Type: multipart/mixed; boundary="=-mzrL4m/DzYrsoEs6bqCp" Organization: OLPC Date: Sat, 07 Oct 2006 00:41:14 -0400 Message-Id: <1160196075.22956.232.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 --=-mzrL4m/DzYrsoEs6bqCp Content-Type: text/plain Content-Transfer-Encoding: 7bit On Fri, 2006-10-06 at 16:06 -0400, Richard Stallman wrote: > Most of the kids in the developing world have no electricity, much less > money for access points. The only way we have to solve the last mile > problem at all is via a mesh network. > > There has to be a powered network hub somewhere in the village, or the > mesh network won't be able to reach the outside world. Why can't that > hub do the job? A single access point can't reach far enough. Despite us making the 802.11 work better than anyone else's, access points can't go far enough, nor is there always power where you need it. And there is no guarantee that power there will be reliable. Hell, Michailis brought back pictures of a school in the capitol city of Nigeria: yes, there is power in one room of the school: none in any of the class rooms; light entirely from the windows (see attached). It looks like a dirty version of a 19th century 1 room school house in the U.S. Outside the capitol it goes downhill from there: 30-40% of schools have no power at all. Well over half the kids have no electricity at home at all. And Nigeria is a rich country on Africa's scale. Our focus on low power and mesh networking is due to the realities of most of the world, that few of us rich Americans ever see. To serve the kids, we have no choice but to design to the real world conditions. > > We talk to all the manufacturers. We *want* them to compete for the > business. And yes, we expect the next time around we'll have more than > one possible choice. > > Have you told them clearly that you'll choose a chip which supports > free software next time? That is the first step to apply some leverage > for the future products. We make it clear with the manufacturers we talk to. It is an interesting cultural exchange at times :-). In general, we do not lack leverage at all; manufacturers are very happy to do what we want, *so long as it is within their power and ability to do so and they believe can make money doing so*. A good example is Marvell's (yes, the same Marvell company) reengineering of the SD interface to solve the documentation and driver problem posed by the SD association's draconian NDA terms. They revised their SD hardware design to conform to the public SD spec at significant expense; they could do it for us, so they did it for us after only mild arm twisting. The wireless firmware situation was/is different: Marvell doesn't own all the IP and could not do what we wanted in any legal fashion and there is no other vendor that (yet) makes a suitable part to use. So, plan B: replace the firmware entirely via Meraki; but that will take longer than we can wait to start testing, or maybe even early deployment. Time will tell. And, of course, we tell all the other vendors that want the business that they need to make a part similar to what Marvell has done if they want the business in gen2. It was lots of fun working with the touch pad vendor: it took about 3 times to convince them that: 1) we couldn't care less about Windows compatibility, 2) we wanted both modes of the data from the device at once, (it is a novel dual mode device; a cross between a tablet and touchpad) and 3) we could make both our operating system and the window system use a device that didn't conform to "Windows standards" without difficulty, since we had all the code. Once they understood we were serious and did not have Windows constraints, the answer to "jump" was "how high".... Bridging the cultural barriers can take work, however. > > How far in the future do you think the next time around will be? As soon as we get this one done. Of course, we tell every vendor that comes through the door what they have to do if they want the Gen 2 business. Very advanced planning for the 2nd generation system will start before this year is over. We should be done with most hardware testing by sometime in 2nd quarter of 2007, and that's when we'll start in on gen2 design more seriously. - Jim > -- Jim Gettys One Laptop Per Child --=-mzrL4m/DzYrsoEs6bqCp Content-Disposition: attachment; filename=Classroom.jpg Content-Type: image/jpeg; name=Classroom.jpg Content-Transfer-Encoding: base64 /9j/4AAQSkZJRgABAQEASABIAAD/4ZRaRXhpZgAATU0AKgAAAAgACwEPAAIAAAAYAAAAkgEQAAIA AAAMAAAAqgESAAMAAAABAAEAAAEaAAUAAAABAAAAtgEbAAUAAAABAAAAvgEoAAMAAAABAAIAAAEx AAIAAAASAAAAxgEyAAIAAAAUAAAA2AITAAMAAAABAAEAAIdpAAQAAAABAAABGsSlAAcAAAAuAAAA 7AAAe5RDQVNJTyBDT01QVVRFUiBDTy4sTFRELgBFWC1aODUwICAgIAAAAABIAAAAAQAAAEgAAAAB MS4wMCAgICAgICAgICAgICAAMjAwNjowOToxNSAxMzo0NToxOABQcmludElNADAzMDAAAAAFAAEA FgAWAAIBAAAAAQAFAAAAAQEBAAAAARCEAAAAAB+CmgAFAAAAAQAAApSCnQAFAAAAAQAAApyIIgAD AAAAAQACAACQAAAHAAAABDAyMjGQAwACAAAAFAAAAqSQBAACAAAAFAAAAriRAQAHAAAABAECAwCR AgAFAAAAAQAAAsySBAAKAAAAAQAAAtSSBQAFAAAAAQAAAtySBwADAAAAAQAFAACSCAADAAAAAQAA AACSCQADAAAAAQAZAACSCgAFAAAAAQAAAuSSfAAHAAB4ggAAAuygAAAHAAAABDAxMDCgAQADAAAA AQABAACgAgAEAAAAAQAADMCgAwAEAAAAAQAACZCgBQAEAAAAAQAAe3ajAAAHAAAAAQMAAACkAQAD AAAAAQAAAACkAgADAAAAAQAAAACkAwADAAAAAQAAAACkBAAFAAAAAQAAe26kBQADAAAAAQAmAACk BgADAAAAAQAAAACkBwADAAAAAQACAACkCAADAAAAAQAAAACkCQADAAAAAQAAAACkCgADAAAAAQAA AAAAAAAAAAAAAQAAADwAAAAcAAAACjIwMDY6MDk6MTUgMTM6NDU6MTgAMjAwNjowOToxNSAxMzo0 NToxOAABcMAAAHnsAAAAAAAAAAADAAAAHgAAAAoAAAMWAAAAZFFWQwAAAABPAAIAAwAAAAIBQADw AAMABAAAAAEAAHKsAAQABAAAAAEAAAjKIAAABwAAcqwAAAjKIAEAAgAAABIAAAa0IAIAAgAAABQA AAbGIAMABwAAAAgAAAbaIAQABwAAAAT+//j/IAUAAwAAAAEAAAAAIBEAAwAAAAIBjgF6IBIAAwAA AAEADAAAIBMAAwAAAAEAAgAAIBQABwAAACQAAAbiICEAAwAAAAQAAAcGICIABAAAAAEAAAr0ICMA AwAAAAEABQAAIDEABwAAAAIADAAAIDIABwAAAAIAZAAAIDMAAwAAAAEAAQAAIDQAAwAAAAEDvgAA IDUAAwAAAAEAZAAAIDYABAAAAAG4iYjwIDcABAAAAAFAAI9gIDgABAAAAAEAAAAAIDkAAwAAAAEA AAAAIEEAAwAAAAEEpQAAIEIAAwAAAAEEoQAAIEMAAwAAAAEACAAAIEQAAwAAAAEAAAAAIEUAAwAA AAEABAAAIEYAAwAAAAEgSQAAIEcABAAAAAEADwAAIEgAAwAAAAEBLAAAIEkAAwAAAAEEpQAAIEoA AwAAAAEABAAAIFEABAAAAAEAAAADIFIABAAAAAEAAAAAIFMABAAAAAEAAAAAIFQABAAAAAEAAAAA IFUABwAAAAEAAAAAIFYAAQAAAAEAAAAAIFcABwAAAAEAAAAAIFgAAwAAAAEAAAAAIFkAAwAAAAEA AAAAIFoABwAAAaQAAAcOMAAAAwAAAAEAAgAAMAEAAwAAAAEAAQAAMAIAAwAAAAEAAgAAMAMAAwAA AAEAAwAAMAUAAwAAAAIAAAABMAYAAgAAABgAAAiyMAcAAwAAAAEAAAAAMAgAAwAAAAEAAQAAMAkA AwAAAAEAAQAAMBEABwAAAAIAAAAAMBIABwAAAAIAAAADMBMABwAAAAIAAAAAMBQAAwAAAAEAyAAA MBUAAwAAAAEAAAAAMBYAAwAAAAEAAAAAMBcAAwAAAAEAAAAAMBgAAwAAAAEAAAAAMBkAAwAAAAEA AQAAMBoAAwAAAAEAAAAAMBsAAwAAAAEAAAAAMBwAAwAAAAEAAAAAMB0AAwAAAAIAAAAAMB4AAwAA AAEAAAAAMB8AAwAAAAEAAAAAMCAAAwAAAAEAAAAAMCEAAwAAAAIAAAAAMCIAAwAAAAIAAAAAMCMA AwAAAAEAAAAAMCQAAwAAAAEAAQAAMCUAAwAAAAEBkAAAMCYAAwAAAAEBAAAAMCcAAwAAAAEAAwAA MCgAAwAAAAEAAAAAMCkAAwAAAAEAAAAAAAAAADA2MDIAADEzMTAAADQyAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAABJBcTAAAAAxgApDsAA7gLbAAAKbzEAAAAAAAAAAAAAAAAAAAD///// /////wD/7ACNAQEKAABkvgAAR3z/6VD/6lP/7W//86T//OQABf4ADuYAF6QAIFAAKQAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAExvbmRvbgAAAAAAAAAAAAAAAAAAAAAAAP/Y/9sAhAAB AQECAQECAgECAgICAgMFAwMDAwMGBAUEBQcHCAgHBwcHCAkMCggJCwkHBwoOCgsMDQ0NDQgKDxAO DQ8MDQ0NAQECAgMCAwUDAwULCAYICwsLCwsLCwsLDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0N DQ0NDQ0NDQ0NDQ0NDQ3/wAARCADwAUADASIAAhEBAxEB/8QBogAAAQUBAQEBAQEAAAAAAAAAAAEC AwQFBgcICQoLEAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR 8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5 eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj 5OXm5+jp6vHy8/T19vf4+foBAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKCxEAAgECBAQDBAcF BAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygp 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 ABEIAJIAxAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAAC AQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZ GiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOU lZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T1 9vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAAB AncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Sl pqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEA AhEDEQA/AJkmXqyj6ZNPF0oXB4HsacEB/hH5U4xKRyq/lWftkaezGLdow+Usfx/+tTTcRk8s59RU 4RQMbV/Kjy1/ur+VP2yD2ZF9qUjClgPQD/69NLoeTI2f93P9anMakYKjH0qMwRnqg/Wj2yF7NjBP EvTcW9xmlM7EcsF9M/4U7yUxgL+VJ5Ef939TT9sg9mxglVushY+nSniRl5V0j/A5oMS4wOB7cUwQ qPU/jR7aIezY4lSeZS59ORSl3UYTavv3/wAajKY6Ege1NKgdST7Ue2iHs2I8Bk5eVm+jCnJAIxlU /EtmgEg8ACpV5OOtQ6vYpU+49FkP8ePYVMqSY5c/nSRjnmpsDGScCodSTHypDlTuWNTKo7CoVYZ4 zUyEZ4qNWMdzT155PSoh5jfdIp5GABzQAy7GYfxrNOd1ac4At2yec5rMY5OafQETwjMZ9jUu35aj th8jH3qfaMdKllFZsA9RRUhiUnJA/KigCoHwRnoalrnD4nsQR8r4/D/Gq954vMaRfYoVk3Z3bzyv 5GtfZvoiFNHTzTpAm5sn2AqiNSYkBYRj/ermm8YXxP8Ax5QNnjAJqvF4juGO77HESDjaWNXGl3RL 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 --=-mzrL4m/DzYrsoEs6bqCp-- Return-Path: deraadt@cvs.openbsd.org Delivery-Date: Fri Oct 6 22:44:30 2006 Received: from cvs.openbsd.org (localhost [127.0.0.1]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k974iUPj031455 for ; Fri, 6 Oct 2006 22:44:30 -0600 (MDT) Message-Id: <200610070444.k974iUPj031455@cvs.openbsd.org> Date: Fri, 06 Oct 2006 22:44:30 -0600 From: Theo de Raadt Subject: Re: Marvell 88W8388 documentation BCC: ------- Blind-Carbon-Copy To: jg@laptop.org cc: rms@gnu.org, Marcelo Tosatti , dcbw@redhat.com, jsg@goblin.cx, blizzard@redhat.com Subject: Re: Marvell 88W8388 documentation In-reply-to: Your message of "Fri, 06 Oct 2006 21:28:32 EDT." <1160184512.22956.146.camel@localhost.localdomain> Date: Fri, 06 Oct 2006 22:44:30 -0600 From: Theo de Raadt > > I am sure that everyone here has that intention, but that isn't the > > crucial question. The crucial question is whether people are pushing > > hard enough to actually attain that goal. > > Yes, we are. Prove it! Prove that you are working hard at it! You could say you are working hard to get to the moon and it'd be about as real. I am still asking for permission to forward your mail to Marvell. Please grant it. If you don't, I still might. If I do forward it, I will let you know. I am trying to find out exactly who in volume sales I should show it to. > > By the way, you can easily understand the firmware interface by > > looking at the Linux driver (it provides as much information as the > > documentation). > > > > The code of that driver would be fine documentation if it is released. > > The driver is in our git pool, awaiting upstream merge at kernel.org. A driver without documentation is useless, and if Richard Stallman believes that a driver written without full open documentation is worth anything, then Richard Stallman is someone who would sell his mother into slavery for a beer. > > But I think people stated here that Marvell has not released it, and > > that Marvell says it can't release that code because it is too tangled > > up with the microkernel. > > Marvell can't release the firmware that runs inside the wireless chip. Jim, are you stupid? You phrase that entire sentence to avoid the facts. While we would like the source, we know we won't get it. Let me phrase it in one very simple yes/no question: Does your contract with Marvell gaurantee to the community that they will release full documentation and firmware rights at a time in the future not more than one year. Yes/no. Please answer that question. Don't joke around. I'm getting very angry and am very tempted to violate all the rules of mail etiquete and publish those whole archive of mail. You keep avoiding the hard questions by deleting them. > The Linux kernel driver for the Marvell wireless chip is already > available, and has been for several months. > > http://dev.laptop.org/git?p=olpc-2.6;a=summary That driver cannot be maintained without full chip documentation. In two years when you switch to another chip, we will have no documentation to fix it. And you will try to walk away acting as if this is not your fault. It WILL BE YOUR FAULT. I am trying you save you from feeling like a total tool in two years. Don't you get it? > > If that is not right, would someone please > > set me straight? > > > > > The Marvell documentation does exist. I have been told a bit about > > > how large it is. It sounds like you are making these statements > > > without having access to it. > > > > Its rather small (its the interface to the firmware through a set of > > well defined commands). > > > > I think we are having a miscommunication. The documentation we need > > is the specifications for the hardware itself. With that, we could > > write a driver. We do not need documention of their driver as such. > > Please look at the libertas driver in the git pool. What? Look at code that noone will fix be able to fix in 2 years when Marcello with his NDA documentation no longer cares? Jim, you are doing a smash up job of convincing me that you don't give as damn about open or free code. ------- End of Blind-Carbon-Copy Return-Path: deraadt@cvs.openbsd.org Delivery-Date: Fri Oct 6 23:06:18 2006 Received: from cvs.openbsd.org (localhost [127.0.0.1]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k9756IU9020858 for ; Fri, 6 Oct 2006 23:06:18 -0600 (MDT) Message-Id: <200610070506.k9756IU9020858@cvs.openbsd.org> Date: Fri, 06 Oct 2006 23:06:18 -0600 From: Theo de Raadt Subject: Re: Marvell 88W8388 documentation BCC: ------- Blind-Carbon-Copy To: jg@laptop.org cc: rms@gnu.org, jsg@goblin.cx, dcbw@redhat.com, mtosatti@redhat.com Subject: Re: Marvell 88W8388 documentation In-reply-to: Your message of "Sat, 07 Oct 2006 00:41:14 EDT." <1160196075.22956.232.camel@localhost.localdomain> Date: Fri, 06 Oct 2006 23:06:18 -0600 From: Theo de Raadt > We make it clear with the manufacturers we talk to. It is an > interesting cultural exchange at times :-). > > In general, we do not lack leverage at all; manufacturers are very happy > to do what we want, *so long as it is within their power and ability to > do so and they believe can make money doing so*. Can you give us an example of something that Marvell has opened up? > A good example is > Marvell's (yes, the same Marvell company) reengineering of the SD > interface to solve the documentation and driver problem posed by the SD > association's draconian NDA terms. They revised their SD hardware > design to conform to the public SD spec at significant expense; they > could do it for us, so they did it for us after only mild arm > twisting. Here in OpenBSD, one of our developers working for 3 weeks completely reverse engineered the SD spec for drives. He's still working on the SDIO stuff. But that will happen soon enough. People have been coming forward who are willing to help our developer understand things that are not yet disclosed by the SD 'Forum' (what a stupid name for a secret cabal). Those people who are helping are not coming from the Linux world. So you walk in with orders for 8,000,000 chips, and the SD forum says "no way" when you ask for documentation, and Marvell goes through "incredible effort". How can you have things so upside down? I bet that what really happened is Marvell said "we have no power, please keep buying our chips" and you said "oh my, we must buy your chips" and then Marvell did the work and now you say "oh my lord, marvell you are my hero". Yes, I am mocking you because I think you have been lied to and you believe the vendor. Furthermore, you don't care to improve the open / free source world, and now everything you are saying is a CYA move to try to make sure this does not become bad press for OLPC. > The wireless firmware situation was/is different: Marvell doesn't own > all the IP So they claim > and could not do what we wanted in any legal fashion So they claim > and there is no other vendor So you claim > that (yet) makes a suitable part to use. So they claim. > So, > plan B: replace the firmware entirely via Meraki; but that will take > longer than we can wait to start testing, or maybe even early > deployment. Time will tell. Expediency over open, free, disclosure. > And, of course, we tell all the other > vendors that want the business that they need to make a part similar to > what Marvell has done if they want the business in gen2. Did you research Inprocomm, Hitachi, Connexant, Atmel, and the other 20 or so vendors who put ARM cpu's onto 802.11 parts? I have read their data sheets. I still don't know what makes Marvell special. I've asked you what makes them special, but of course you have an NDA with Marvell and can't show me what makes them special. > It was lots of fun working with the touch pad vendor: it took about 3 > times to convince them that: 1) we couldn't care less about Windows > compatibility, 2) we wanted both modes of the data from the device at > once, (it is a novel dual mode device; a cross between a tablet and > touchpad) and 3) we could make both our operating system and the window > system use a device that didn't conform to "Windows standards" without > difficulty, since we had all the code. Once they understood we were > serious and did not have Windows constraints, the answer to "jump" was > "how high".... Bridging the cultural barriers can take work, however. Is the touchpad interface totally free and open? Where can I get the PDF file? Is the camera interface totally free and open? Where can I get the PDF file for it? Yes, I have already talked to Jonathan Corbet about that. Guess what, Richard. The camera interface in the laptop is also completely locked down under NDA. How many other interfaces in this "open" laptop are totally locked down by NDA's, Jim? The keyboard? The flash chips? The screen? The power controller? Is there anything truly open about this crappy laptop that is going to enslave the world? Can you please explain in very clear language to me how this laptop is in any way more open than a typical MS-DOS / Windows capable laptop, like for instance a Thinkpad? Yes, maybe it is cheaper. Maybe it has mesh. Maybe it runs on less power. But you also told the world that it would be more open, and that it would run Linux, it would be all GNU, and wow, therefore it would be better for children than Microsoft. And that is a complete fabrication. It is a new monopoly rising, with a laptop even more locked up in single vendor software and hardware than anything else we have seen in a while. > > How far in the future do you think the next time around will be? > > As soon as we get this one done. Of course, we tell every vendor that > comes through the door what they have to do if they want the Gen 2 > business. Very advanced planning for the 2nd generation system will > start before this year is over. We should be done with most hardware > testing by sometime in 2nd quarter of 2007, and that's when we'll start > in on gen2 design more seriously. You will put closed-product ahead of open/free this time. But next time you will put open/free ahead of your product. I don't believe you. ------- End of Blind-Carbon-Copy Return-Path: rms@gnu.org Delivery-Date: Fri Oct 6 19:07:56 2006 Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k9717tm6000860 for ; Fri, 6 Oct 2006 19:07:55 -0600 (MDT) Received: from rms by fencepost.gnu.org with local (Exim 4.34) id 1GW0fH-000063-Ir; Fri, 06 Oct 2006 21:07:43 -0400 Content-Type: text/plain; charset=ISO-8859-15 From: Richard Stallman To: Marcelo Tosatti CC: deraadt@cvs.openbsd.org, jg@laptop.org, dcbw@redhat.com, jsg@goblin.cx, blizzard@redhat.com In-reply-to: <20061006173402.GA4575@dmt> (message from Marcelo Tosatti on Fri, 6 Oct 2006 14:34:03 -0300) Subject: Re: Marvell 88W8388 documentation Reply-to: rms@gnu.org References: <1160089598.6075.63.camel@localhost.localdomain> <200610052358.k95NwHB2006381@cvs.openbsd.org> <20061006173402.GA4575@dmt> Message-Id: Date: Fri, 06 Oct 2006 21:07:43 -0400 Everybody in the OLPC project, including the people who decided to pick a piece of hardware able to keep up with cost/power constraints, have the best intentions with reference to using _only_ free software in the machines. I am sure that everyone here has that intention, but that isn't the crucial question. The crucial question is whether people are pushing hard enough to actually attain that goal. By the way, you can easily understand the firmware interface by looking at the Linux driver (it provides as much information as the documentation). The code of that driver would be fine documentation if it is released. But I think people stated here that Marvell has not released it, and that Marvell says it can't release that code because it is too tangled up with the microkernel. If that is not right, would someone please set me straight? > The Marvell documentation does exist. I have been told a bit about > how large it is. It sounds like you are making these statements > without having access to it. Its rather small (its the interface to the firmware through a set of well defined commands). I think we are having a miscommunication. The documentation we need is the specifications for the hardware itself. With that, we could write a driver. We do not need documention of their driver as such. Replied: Sat, 07 Oct 2006 22:05:16 -0600 Replied: "rms@gnu.org " Replied: Sat, 07 Oct 2006 14:24:45 -0600 Replied: "rms@gnu.org jg@laptop.org, jsg@goblin.cx, dcbw@redhat.com, mtosatti@redhat.com" Return-Path: rms@gnu.org Delivery-Date: Sat Oct 7 14:11:32 2006 Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k97KBWkw024756 for ; Sat, 7 Oct 2006 14:11:32 -0600 (MDT) Received: from rms by fencepost.gnu.org with local (Exim 4.34) id 1GWIVt-0005LT-La; Sat, 07 Oct 2006 16:11:13 -0400 Content-Type: text/plain; charset=ISO-8859-15 From: Richard Stallman To: Theo de Raadt CC: jg@laptop.org, jsg@goblin.cx, dcbw@redhat.com, mtosatti@redhat.com cc: rms@gnu.org In-reply-to: <200610062012.k96KCtPR003267@cvs.openbsd.org> (message from Theo de Raadt on Fri, 06 Oct 2006 14:12:55 -0600) Subject: Re: Marvell 88W8388 documentation Reply-to: rms@gnu.org References: <200610062012.k96KCtPR003267@cvs.openbsd.org> Message-Id: Date: Sat, 07 Oct 2006 16:11:13 -0400 I suspect that OLPC and/or Red Hat and/or their developers have already signed agreements with Marvell, thus these are not the people who can help reverse-engineer the chips. You are probably right, but we can recruit other people to do it regardless of whether those people can work on it. But I think they could fund the reverse engineering, as long as it is actually done by people who have not seen the material from Marvell and to whom the NDA does not apply. Return-Path: deraadt@cvs.openbsd.org Delivery-Date: Sat Oct 7 14:24:45 2006 Received: from cvs.openbsd.org (localhost [127.0.0.1]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k97KOjxv027428 for ; Sat, 7 Oct 2006 14:24:45 -0600 (MDT) Message-Id: <200610072024.k97KOjxv027428@cvs.openbsd.org> Date: Sat, 07 Oct 2006 14:24:45 -0600 From: Theo de Raadt Subject: Re: Marvell 88W8388 documentation BCC: ------- Blind-Carbon-Copy To: rms@gnu.org cc: jg@laptop.org, jsg@goblin.cx, dcbw@redhat.com, mtosatti@redhat.com Subject: Re: Marvell 88W8388 documentation In-reply-to: Your message of "Sat, 07 Oct 2006 16:11:13 EDT." Date: Sat, 07 Oct 2006 14:24:45 -0600 From: Theo de Raadt > I suspect that OLPC and/or Red Hat and/or their developers have > already signed agreements with Marvell, thus these are not the people > who can help reverse-engineer the chips. > > You are probably right, but we can recruit other people to do it > regardless of whether those people can work on it. > > But I think they could fund the reverse engineering, as long as it is > actually done by people who have not seen the material from Marvell > and to whom the NDA does not apply. We contact vendors for documentation, and we get it quite often. If we cannot get documentation for a device that is becoming very common in our users' machines -- we reverse engineer when we have to. Now that an NDA has been signed with a bunch of vendors, those vendors are MUCH less likely to hand out documentation. That is why open source vendors should never sign NDA's, no matter how much they want them! It may let a driver be written, but it is IMPOSSIBLE to maintain it later. That was my point from day 1: Red Hat signs NDA's all the time, and it is making it very difficult for open source driver maintainers to write and MAINTAIN drivers! It's not just an OpenBSD problem -- it is affecting ALL of us who are writing and MAINTAINING drivers! Jim is not writing or MAINTAINING drivers, so he does not see the problem! Richard is not writing drivers either, so he does not see the problem either! And when was the last time you reverse engineered a driver, Richard? Have you any idea how much the world has changed? Down here in the trenches, where we are writing and maintaining drivers it is becoming absolute HELL, and it is due to the actions SPECIFICALLY of Red Hat. And now OLPC is doing it too. You have documentation NDA's with SD Association (for the SD/SDIO bus) and OmniVision (for the camera), too. What other documentation did you get under NDA? How is this an open laptop? The thinkpad sitting beside me on the table is using more openly documented hardware than this thing you are going to make millions of. DAMN RIGHT -- OLPC is building a laptop more proprietary than IBM. More things in the IBM laptop are documented *and* have drivers. For OLPC, many parts will only have drivers -- NO DOCUMENTATION. ------- End of Blind-Carbon-Copy Return-Path: rms@gnu.org Delivery-Date: Sat Oct 7 21:30:24 2006 Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k983UOe7016177 for ; Sat, 7 Oct 2006 21:30:24 -0600 (MDT) Received: from rms by fencepost.gnu.org with local (Exim 4.34) id 1GWPMb-0006jr-SG; Sat, 07 Oct 2006 23:30:05 -0400 Content-Type: text/plain; charset=ISO-8859-15 From: Richard Stallman To: jg@laptop.org CC: mtosatti@redhat.com, deraadt@cvs.openbsd.org, dcbw@redhat.com, jsg@goblin.cx, blizzard@redhat.com, rms@gnu.org In-reply-to: <1160184512.22956.146.camel@localhost.localdomain> (message from Jim Gettys on Fri, 06 Oct 2006 21:28:32 -0400) Subject: Re: Marvell 88W8388 documentation Reply-to: rms@gnu.org References: <1160089598.6075.63.camel@localhost.localdomain> <200610052358.k95NwHB2006381@cvs.openbsd.org> <20061006173402.GA4575@dmt> <1160184512.22956.146.camel@localhost.localdomain> Message-Id: Date: Sat, 07 Oct 2006 23:30:05 -0400 > By the way, you can easily understand the firmware interface by > looking at the Linux driver (it provides as much information as the > documentation). > > The code of that driver would be fine documentation if it is released. The driver is in our git pool, awaiting upstream merge at kernel.org. I overlooked the distinction between the driver and the firmware when I wrote that message. Sorry. Now I understand what you were saying before. I would expect that programmers can figure out, from the driver, how new firmware would have to talk to it. However, the firmware has another interface: to the chip. That is the interface we need Marvell to give us specs for. Return-Path: rms@gnu.org Delivery-Date: Sat Oct 7 21:30:30 2006 Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k983UUBW015485 for ; Sat, 7 Oct 2006 21:30:30 -0600 (MDT) Received: from rms by fencepost.gnu.org with local (Exim 4.34) id 1GWPMj-0006m0-9M; Sat, 07 Oct 2006 23:30:13 -0400 Content-Type: text/plain; charset=ISO-8859-15 From: Richard Stallman To: jg@laptop.org CC: deraadt@cvs.openbsd.org, jsg@goblin.cx, dcbw@redhat.com, mtosatti@redhat.com, rms@gnu.org In-reply-to: <1160196075.22956.232.camel@localhost.localdomain> (message from Jim Gettys on Sat, 07 Oct 2006 00:41:14 -0400) Subject: Re: Marvell 88W8388 documentation Reply-to: rms@gnu.org References: <200610041838.k94IcY6j006189@cvs.openbsd.org> <1159989002.6029.710.camel@localhost.localdomain> <1160088294.6075.40.camel@localhost.localdomain> <1160196075.22956.232.camel@localhost.localdomain> Message-Id: Date: Sat, 07 Oct 2006 23:30:13 -0400 The wireless firmware situation was/is different: Marvell doesn't own all the IP Please let's avoid use of the propaganda term "IP". It blurs the most basic distinctions, and should _never_ be used (see http://www.gnu.org/philosophy/not-ipr.xhtml). This case here provides a good illustration of the confusion that that term tends to cause. Because it uses that vague term rather than something meaningful, your statement doesn't begin to tell us what kind of issue we face. Previous messages said that it is a matter of a non-free microkernel. I.e., a specific part of the program. Is that the whole problem? So, plan B: replace the firmware entirely via Meraki; but that will take longer than we can wait to start testing, or maybe even early deployment. I am not sure what this means; I don't know what Meraki is. Maybe this is a good plan. Could you tell me more about it? We should be done with most hardware testing by sometime in 2nd quarter of 2007, and that's when we'll start in on gen2 design more seriously. It sounds like gen2 might be produced in 2008 or 2009; is that right? Return-Path: jg@laptop.org Delivery-Date: Sun Oct 8 09:09:53 2006 Received: from rwcrmhc13.comcast.net (rwcrmhc13.comcast.net [216.148.227.153]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k98F9rh1003230 for ; Sun, 8 Oct 2006 09:09:53 -0600 (MDT) Received: from [192.168.1.148] (c-24-218-178-107.hsd1.ma.comcast.net[24.218.178.107]) by comcast.net (rwcrmhc13) with SMTP id <20061008150940m1300ngqlne>; Sun, 8 Oct 2006 15:09:46 +0000 Subject: Re: Marvell 88W8388 documentation From: Jim Gettys Reply-To: jg@laptop.org To: rms@gnu.org Cc: deraadt@cvs.openbsd.org, jsg@goblin.cx, dcbw@redhat.com, mtosatti@redhat.com In-Reply-To: References: <200610041838.k94IcY6j006189@cvs.openbsd.org> <1159989002.6029.710.camel@localhost.localdomain> <1160088294.6075.40.camel@localhost.localdomain> <1160196075.22956.232.camel@localhost.localdomain> Content-Type: text/plain Organization: OLPC Date: Sun, 08 Oct 2006 11:09:38 -0400 Message-Id: <1160320179.22956.385.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit On Sat, 2006-10-07 at 23:30 -0400, Richard Stallman wrote: > The wireless firmware situation was/is different: Marvell doesn't own > all the IP > > Please let's avoid use of the propaganda term "IP". > It blurs the most basic distinctions, and should _never_ be used > (see http://www.gnu.org/philosophy/not-ipr.xhtml). Sure. > > This case here provides a good illustration of the confusion that that > term tends to cause. Because it uses that vague term rather than > something meaningful, your statement doesn't begin to tell us what > kind of issue we face. The third party embedded OS vendor both owns its copyrights and it's license requires an NDA to see their code, as I understand it. > > Previous messages said that it is a matter of a non-free microkernel. The microkernel's license made opening the firmware in the short term an absolute non-starter and something that could be not be negotiated; there was not time nor other alternatives to the course we took. We were able to and did negotiate that alternative firmware would come into existence. > I.e., a specific part of the program. Is that the whole problem? Depends on what you mean by "problem". We see other "opportunities" in the community's (and we believe Marvell's) interest, if we can make them come about. Marvell has other code of their own creation we'd like to see open, if we can convince them of it being in their interest and benefit, and we're negotiating with them on that code. These negotiations with hardware vendors take time, as it is an educational process for most hardware vendors about economic models of free software and open hardware, something foreign to most vendors. I do not know what the outcome of those discussions will ultimately be. Being bulls in a china shop will not help those negotiations. More I will not say, and attempting to insert yourselves into the negotiations will just reduce the chance of a good outcome, and we will actively oppose any attempts to do so. If and when it comes time for legal language to be put about such a donation, I don't doubt we'll be in touch with Eben Moglen and the SFLC on the topic, as we are on other free software legal topics. As should be evident from Marvell's behavior with the SD interface, we have both a good relationship and serious negotiating clout with them, and intend that both continue. The *big* levers we have include that the next generation of the machine we plan to be 5-10 times as many units, which would take us from being a speculative moderate sized customer to a very big one (there are *a lot* of chips sold for embedded 802.11 use now, which is where Marvell has concentrated) and that Marvell will be facing competition by that date. We have been talking to (and will continue to talk to) the other wireless chip manufacturers to ensure they understand our unique requirements. I saw one of the senior Athleros people here within the last two weeks ;-). Having the Roofnet firmware underway also helps our negotiating position, as does Marvell's understanding that they will face competition in future machines and that they will have to earn our business. > > So, > plan B: replace the firmware entirely via Meraki; but that will take > longer than we can wait to start testing, or maybe even early > deployment. > > I am not sure what this means; I don't know what Meraki is. > Maybe this is a good plan. Could you tell me more about it? http://www.meraki.net/ are in the process of porting the MIT Roofnet code to the Marvell chip, and that code will remain open. How long this will take is unclear to me as I'm not directly involved in that effort. This has come about due to OLPC. You'll see a people you you know personally on the "about Meraki" page and others having come from Roofnet, along with a "Meraki's hardware platforms are open, and we encourage others to modify and extend them" statement. A quick look at the licensing of Roofnet is a mixture of MIT/GPL. > > We should be done with most hardware > testing by sometime in 2nd quarter of 2007, and that's when we'll start > in on gen2 design more seriously. > > It sounds like gen2 might be produced in 2008 or 2009; is that right? Yup, though I'd expect we have to have a new machine in production before the end of 2008. Best regards, - Jim -- Jim Gettys One Laptop Per Child Return-Path: jsg@goblin.cx Delivery-Date: Sun Oct 8 16:25:07 2006 Received: from min.bytemine.net (min.bytemine.net [134.106.146.209]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k98MP52E009002 (version=TLSv1/SSLv3 cipher=DHE-DSS-AES256-SHA bits=256 verify=NO) for ; Sun, 8 Oct 2006 16:25:06 -0600 (MDT) Received: from dsl-210-15-216-215-static.vic.netspace.net.au ([210.15.216.215]:50047 helo=carla.home) by min.bytemine.net with esmtps (TLSv1:AES256-SHA:256) (Exim 4.60) (envelope-from ) id 1GWh4n-0006QQ-RK; Mon, 09 Oct 2006 00:24:55 +0200 Received: from carla.home (jsg@localhost.home [127.0.0.1]) by carla.home (8.13.6/8.13.6) with ESMTP id k98MOkgR019842; Mon, 9 Oct 2006 08:24:46 +1000 (EST) Received: (from jsg@localhost) by carla.home (8.13.6/8.13.1/Submit) id k98MOhmB016501; Mon, 9 Oct 2006 08:24:43 +1000 (EST) Date: Mon, 9 Oct 2006 08:24:43 +1000 From: Jonathan Gray To: Jim Gettys Cc: rms@gnu.org, deraadt@cvs.openbsd.org, dcbw@redhat.com, mtosatti@redhat.com Subject: Re: Marvell 88W8388 documentation Message-ID: <20061008222443.GA27352@mail.netspace.net.au> References: <200610041838.k94IcY6j006189@cvs.openbsd.org> <1159989002.6029.710.camel@localhost.localdomain> <1160088294.6075.40.camel@localhost.localdomain> <1160196075.22956.232.camel@localhost.localdomain> <1160320179.22956.385.camel@localhost.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1160320179.22956.385.camel@localhost.localdomain> User-Agent: Mutt/1.5.11 On Sun, Oct 08, 2006 at 11:09:38AM -0400, Jim Gettys wrote: > > On Sat, 2006-10-07 at 23:30 -0400, Richard Stallman wrote: > > The wireless firmware situation was/is different: Marvell doesn't own > > all the IP > > > > Please let's avoid use of the propaganda term "IP". > > It blurs the most basic distinctions, and should _never_ be used > > (see http://www.gnu.org/philosophy/not-ipr.xhtml). > > Sure. > > > > > This case here provides a good illustration of the confusion that that > > term tends to cause. Because it uses that vague term rather than > > something meaningful, your statement doesn't begin to tell us what > > kind of issue we face. > > The third party embedded OS vendor both owns its copyrights and it's > license requires an NDA to see their code, as I understand it. > > > > > Previous messages said that it is a matter of a non-free microkernel. > > The microkernel's license made opening the firmware in the short term an > absolute non-starter and something that could be not be negotiated; > there was not time nor other alternatives to the course we took. > > We were able to and did negotiate that alternative firmware would come > into existence. You keep talking about code, but want we really want is documentation on how to drive the hardware. Not information that has the chinese whispers problem and has to be figured out by trying to understand someone else's kernel and APIs. I don't see why it is so hard for marvell to give out details on the interface to their hardware. Not the internal details of how it works, but the interface, registers, bits, rx/tx descriptors, its not rocket science. > > > I.e., a specific part of the program. Is that the whole problem? > > Depends on what you mean by "problem". We see other "opportunities" in > the community's (and we believe Marvell's) interest, if we can make them > come about. Marvell has other code of their own creation we'd like to > see open, if we can convince them of it being in their interest and > benefit, and we're negotiating with them on that code. > > These negotiations with hardware vendors take time, as it is an > educational process for most hardware vendors about economic models of > free software and open hardware, something foreign to most vendors. I > do not know what the outcome of those discussions will ultimately be. > Being bulls in a china shop will not help those negotiations. More I > will not say, and attempting to insert yourselves into the negotiations > will just reduce the chance of a good outcome, and we will actively > oppose any attempts to do so. If and when it comes time for legal > language to be put about such a donation, I don't doubt we'll be in > touch with Eben Moglen and the SFLC on the topic, as we are on other > free software legal topics. > > As should be evident from Marvell's behavior with the SD interface, we > have both a good relationship and serious negotiating clout with them, > and intend that both continue. > > The *big* levers we have include that the next generation of the machine > we plan to be 5-10 times as many units, which would take us from being a > speculative moderate sized customer to a very big one (there are *a lot* > of chips sold for embedded 802.11 use now, which is where Marvell has > concentrated) and that Marvell will be facing competition by that date. > We have been talking to (and will continue to talk to) the other > wireless chip manufacturers to ensure they understand our unique > requirements. I saw one of the senior Athleros people here within the > last two weeks ;-). Having the Roofnet firmware underway also helps our > negotiating position, as does Marvell's understanding that they will > face competition in future machines and that they will have to earn our > business. Right, because Atheros are so open. There is no documentation on anything, and we are the only people shipping a driver that actually has source for everything. I really don't see why you keep talking to vendors that have a history of being jerks. > > > > > So, > > plan B: replace the firmware entirely via Meraki; but that will take > > longer than we can wait to start testing, or maybe even early > > deployment. > > > > I am not sure what this means; I don't know what Meraki is. > > Maybe this is a good plan. Could you tell me more about it? > > http://www.meraki.net/ are in the process of porting the MIT Roofnet > code to the Marvell chip, and that code will remain open. How long this > will take is unclear to me as I'm not directly involved in that effort. > This has come about due to OLPC. You'll see a people you you know > personally on the "about Meraki" page and others having come from > Roofnet, along with a "Meraki's hardware platforms are open, and we > encourage others to modify and extend them" statement. A quick look at > the licensing of Roofnet is a mixture of MIT/GPL. Oh cmon, it is an Atheros SoC! Even the person who is porting NetBSD to it under contract to cuwin has to slowly dig information out of Linux diffs, and even then NetBSD still require this closed driver nonsense for the wireless. But Atheros will eventually change their ways and be nice and friendly after you start shipping units right? ... right Replied: Sun, 08 Oct 2006 17:39:38 -0600 Replied: "rms@gnu.org " Return-Path: rms@gnu.org Delivery-Date: Sun Oct 8 16:27:25 2006 Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k98MRPCj021846 for ; Sun, 8 Oct 2006 16:27:25 -0600 (MDT) Received: from rms by fencepost.gnu.org with local (Exim 4.34) id 1GWh6x-00067v-Kg; Sun, 08 Oct 2006 18:27:07 -0400 Content-Type: text/plain; charset=ISO-8859-15 From: Richard Stallman To: jg@laptop.org CC: deraadt@cvs.openbsd.org, jsg@goblin.cx, dcbw@redhat.com, mtosatti@redhat.com, rms@gnu.org In-reply-to: <1160320179.22956.385.camel@localhost.localdomain> (message from Jim Gettys on Sun, 08 Oct 2006 11:09:38 -0400) Subject: Re: Marvell 88W8388 documentation Reply-to: rms@gnu.org References: <200610041838.k94IcY6j006189@cvs.openbsd.org> <1159989002.6029.710.camel@localhost.localdomain> <1160088294.6075.40.camel@localhost.localdomain> <1160196075.22956.232.camel@localhost.localdomain> <1160320179.22956.385.camel@localhost.localdomain> Message-Id: Date: Sun, 08 Oct 2006 18:27:07 -0400 The third party embedded OS vendor both owns its copyrights and it's license requires an NDA to see their code, as I understand it. > Previous messages said that it is a matter of a non-free microkernel. The microkernel's license made [liberating] the firmware in the short term an absolute non-starter and something that could be not be negotiated Ok, so we are talking only about the code of the microkernel. That is much more specific information, and thus more conducive to constructive activity. Faced with this, you could press Marvell to release their own code (i.e., everything but the microkernel). I understand that this code by itself won't run, but it will still take us a lot closer to having free firmware. There are free microkernels it could be ported to. De Raadt may be right that you would have had a greater chance of gaining this if you had insisted on this at the start. But that is water under the bridge now; the point is that it isn't too late to try pressing for this. http://www.meraki.net/ are in the process of porting the MIT Roofnet code to the Marvell chip, and that code will remain [free]. If this produces a free replacement for the current non-free firmware, and you switch to it, I'd say the problem will have been solved. Is there any indication of how they are progressing? However, it can't hurt to press Marvell to release their firmware code (not the microkernel) anyway. When a problem is serious it is well to have two solutions in progress in parallel, in case one of them fails. Return-Path: jg@laptop.org Delivery-Date: Sun Oct 8 19:40:44 2006 Received: from rwcrmhc15.comcast.net (rwcrmhc15.comcast.net [216.148.227.155]) by cvs.openbsd.org (8.13.6/8.12.1) with ESMTP id k991ehsA007934 for ; Sun, 8 Oct 2006 19:40:44 -0600 (MDT) Received: from [192.168.1.148] (c-24-218-178-107.hsd1.ma.comcast.net[24.218.178.107]) by comcast.net (rwcrmhc15) with SMTP id <20061009014026m1500aqgfle>; Mon, 9 Oct 2006 01:40:37 +0000 Subject: Re: Marvell 88W8388 documentation From: Jim Gettys Reply-To: jg@laptop.org To: rms@gnu.org Cc: deraadt@cvs.openbsd.org, jsg@goblin.cx, dcbw@redhat.com, mtosatti@redhat.com In-Reply-To: References: <200610041838.k94IcY6j006189@cvs.openbsd.org> <1159989002.6029.710.camel@localhost.localdomain> <1160088294.6075.40.camel@localhost.localdomain> <1160196075.22956.232.camel@localhost.localdomain> <1160320179.22956.385.camel@localhost.localdomain> Content-Type: text/plain Organization: OLPC Date: Sun, 08 Oct 2006 21:40:25 -0400 Message-Id: <1160358025.22956.430.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit On Sun, 2006-10-08 at 18:27 -0400, Richard Stallman wrote: > The third party embedded OS vendor both owns its copyrights and it's > license requires an NDA to see their code, as I understand it. > > > Previous messages said that it is a matter of a non-free microkernel. > > The microkernel's license made [liberating] the firmware in the > short term an absolute non-starter and something that could be not > be negotiated > > Ok, so we are talking only about the code of the microkernel. That is > much more specific information, and thus more conducive to > constructive activity. > > Faced with this, you could press Marvell to release their own code > (i.e., everything but the microkernel). I understand that this code > by itself won't run, but it will still take us a lot closer to having > free firmware. There are free microkernels it could be ported to. This is easier said that done at times, though in principle, true. The other approach is to take an existing, well understood code base, lock stock and barrel and port it: e.g. MIT roofnet. > > De Raadt may be right that you would have had a greater chance of > gaining this if you had insisted on this at the start. But that is > water under the bridge now; the point is that it isn't too late to try > pressin g for this. > > http://www.meraki.net/ are in the process of porting the MIT Roofnet > code to the Marvell chip, and that code will remain [free]. > > If this produces a free replacement for the current non-free firmware, > and you switch to it, I'd say the problem will have been solved. > > Is there any indication of how they are progressing? Michailis would know; I don't have the hours in the day to watch parts of the OLPC project that are under control. If it were going badly, I'd be much more likely to have heard about it. > > However, it can't hurt to press Marvell to release their firmware > code (not the microkernel) anyway. What do you think we are doing? I'm just having to watch what I say, as I can't expose Marvell's product plans. > When a problem is serious > it is well to have two solutions in progress in parallel, in case > one of them fails. The Meraki effort is unlikely to fail, given the people doing the work. It is also work OLPC cares about greatly; we have to have back haul from many locations back to a point of presence at the schools. - Jim -- Jim Gettys One Laptop Per Child Return-Path: rms@gnu.org Delivery-Date: Mon Oct 9 14:10:05 2006 Received: from fencepost.gnu.org ([199.232.76.164]) by cvs.openbsd.org (8.13.8/8.12.1) with ESMTP id k99KA4Wo017599 for ; Mon, 9 Oct 2006 14:10:04 -0600 (MDT) Received: from rms by fencepost.gnu.org with local (Exim 4.34) id 1GX1QJ-0002kU-2k; Mon, 09 Oct 2006 16:08:27 -0400 Content-Type: text/plain; charset=ISO-8859-15 From: Richard Stallman To: jg@laptop.org CC: deraadt@cvs.openbsd.org, jsg@goblin.cx, dcbw@redhat.com, mtosatti@redhat.com, rms@gnu.org In-reply-to: <1160358025.22956.430.camel@localhost.localdomain> (message from Jim Gettys on Sun, 08 Oct 2006 21:40:25 -0400) Subject: Re: Marvell 88W8388 documentation Reply-to: rms@gnu.org References: <200610041838.k94IcY6j006189@cvs.openbsd.org> <1159989002.6029.710.camel@localhost.localdomain> <1160088294.6075.40.camel@localhost.localdomain> <1160196075.22956.232.camel@localhost.localdomain> <1160320179.22956.385.camel@localhost.localdomain> <1160358025.22956.430.camel@localhost.localdomain> Message-Id: Date: Mon, 09 Oct 2006 16:08:27 -0400 > When a problem is serious > it is well to have two solutions in progress in parallel, in case > one of them fails. The Meraki effort is unlikely to fail, given the people doing the work. It is also work OLPC cares about greatly; we have to have back haul from many locations back to a point of presence at the schools. Every programming project has a chance of failure. We need to plan parallel efforts if we want a high probability of really reaching the goal. Meanwhile, de Raadt is right that publication of the hardware spec will be important for future maintenance of the code that Meraki releases. Replied: Tue, 10 Oct 2006 08:55:20 -0600 Replied: "jg@laptop.org rms@gnu.org, jsg@goblin.cx, dcbw@redhat.com, mtosatti@redhat.com" Replied: Tue, 10 Oct 2006 08:48:10 -0600 Replied: "jg@laptop.org rms@gnu.org, jsg@goblin.cx, dcbw@redhat.com, mtosatti@redhat.com" Return-Path: jg@laptop.org Delivery-Date: Mon Oct 9 16:58:51 2006 Received: from alnrmhc13.comcast.net (alnrmhc13.comcast.net [206.18.177.53]) by cvs.openbsd.org (8.13.8/8.12.1) with ESMTP id k99Mwoth026291 for ; Mon, 9 Oct 2006 16:58:51 -0600 (MDT) Received: from wireless-230.media.mit.edu ([18.85.18.230]) by comcast.net (alnrmhc13) with SMTP id <20061009205810b1300me708e>; Mon, 9 Oct 2006 20:58:21 +0000 Subject: Re: Marvell 88W8388 documentation From: Jim Gettys Reply-To: jg@laptop.org To: rms@gnu.org Cc: deraadt@cvs.openbsd.org, jsg@goblin.cx, dcbw@redhat.com, mtosatti@redhat.com In-Reply-To: References: <200610041838.k94IcY6j006189@cvs.openbsd.org> <1159989002.6029.710.camel@localhost.localdomain> <1160088294.6075.40.camel@localhost.localdomain> <1160196075.22956.232.camel@localhost.localdomain> <1160320179.22956.385.camel@localhost.localdomain> <1160358025.22956.430.camel@localhost.localdomain> Content-Type: text/plain Organization: OLPC Date: Mon, 09 Oct 2006 16:58:09 -0400 Message-Id: <1160427489.22956.673.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 Content-Transfer-Encoding: 7bit On Mon, 2006-10-09 at 16:08 -0400, Richard Stallman wrote: > > When a problem is serious > > it is well to have two solutions in progress in parallel, in case > > one of them fails. > > The Meraki effort is unlikely to fail, given the people doing the work. > It is also work OLPC cares about greatly; we have to have back haul from > many locations back to a point of presence at the schools. > > Every programming project has a chance of failure. > We need to plan parallel efforts > if we want a high probability of really reaching the goal. > > Meanwhile, de Raadt is right that publication of the hardware > spec will be important for future maintenance of the code that > Meraki releases. Yes, we're working on that too. Michailis isn't around at the moment, or I'd ask what the current state of that is. - Jim -- Jim Gettys One Laptop Per Child Return-Path: deraadt@cvs.openbsd.org Delivery-Date: Tue Oct 10 08:48:12 2006 Received: from cvs.openbsd.org (localhost [127.0.0.1]) by cvs.openbsd.org (8.13.8/8.12.1) with ESMTP id k9AEmAUI016309 for ; Tue, 10 Oct 2006 08:48:12 -0600 (MDT) Message-Id: <200610101448.k9AEmAUI016309@cvs.openbsd.org> Date: Tue, 10 Oct 2006 08:48:10 -0600 From: Theo de Raadt Subject: Re: Marvell 88W8388 documentation BCC: ------- Blind-Carbon-Copy To: jg@laptop.org cc: rms@gnu.org, jsg@goblin.cx, dcbw@redhat.com, mtosatti@redhat.com cc: lwn@lwn.net Subject: Re: Marvell 88W8388 documentation In-reply-to: Your message of "Mon, 09 Oct 2006 16:58:09 EDT." <1160427489.22956.673.camel@localhost.localdomain> Date: Tue, 10 Oct 2006 08:48:10 -0600 From: Theo de Raadt Jim keeps misrepresting my view to be: (1) "OpenBSD wants Marvell to give them firmware source" or (2) "OpenBSD wants enough documentation to write their own own firmware" That is false. Jim, you are making that shit up. Our views are, and has been since day 1, that (3) "OpenBSD wants a vendor binary firmware that may be distributed legally (copyright distribution rights)" *and* (4) "OpenBSD wants enough documentation to allow a kernel-level driver to be written (which will interface with the firmware)". BUT YOU KEEP MIS-REPRESENTING WHAT WE WANT. In every single public statement, you act as if we want something unreasonable! Why do you do that? You know that the views (1) and (2) are totally unrealistic, and that Marvell will never give us those. I know just as well that Marvell would never give us firmware programming information. Nor would OpenBSD even WANT documentation for the chip at the firmware level. We are not in the business of writing replacement firmwares. We write an operating system and the basic kernel-level drivers, not firmwares. So why do you keep saying that we want (1) and (2) then? Because by making it APPEAR as if I have unreasonable views, it is easier for you to label me as "unreasonable" Well, if you want to play the unreasonable game, I can too. Set the record straight -- admit in a publical forum that you have fabricated an OpenBSD position which does not exist and apologize. You just will not stop putting words into my mouth. I have been strong worded but I have not misrepresented anyone's vision. Meanwhile, even in the Jem Report you are making up this absoolute BULLSHIT about the OpenBSD being UNREASONABLE to ask for "documentation to write their own firmware". I will get a forum that will carry the full archive of mails, and I will break the rules of email exchange, unless you come clean. You have less than 2 days. ------- End of Blind-Carbon-Copy