On Sat, Jan 05, 2008 at 12:54:05AM -0500, Richard Stallman wrote:
>     >  But I think the FPGAs in products are more like the possible computer
>     >  in my microwave oven: nobody installs software in them, so they might
>     >  as well be circuits.
> 
>     Really?  All those wifi/raid/cpu/etc cards/chips out there that need
>     "firmware", you think they're not a mix of both microcontroller code and
>     other binary bits that configure an ASIC or FPGA?
> 
> I am not a hardware expert; I don't know sort of hardware the firmware
> blobs run on.  I will presume you're right.

He is right.  Hardware these days basically runs code.  You take several
cores and put together an ASIC that does specialized work.  For example
I know of an iSCSI vendor that took a processing core, an I2C core, a
UART core, a PCI bridge core (and some other minor ones) and made a nice
ASIC that runs iSCSI in hardware.  They even took a well known BSD
TCP/IP stack and converted it to pure hardware (thats code -> hardware).
Now if you have more than 1024 connections on that iSCSI core (which
incidentally also works a TCP Offload Engine aka TOE) then the
connections get offloaded to HBA/NIC code.  Now what was a pure hardware
device changes into a pure software device.  This is just one example
and there are many more beautifully blurred examples.  Your argument is
a fallacy with modern hardware.

> 
> Whether it runs on a computer or an FPGA, either way it's a program.
> So the next crucial question is, do users normally install programs on
> that device?  For some devices, the answer is no.  However, if the
> firmware is stored in a file on the disk, and the system downloads it
> into the device, the answer to that question is yes.

I am sure that at MIT they taught you that a finite sate machine can be
moved from hardware to software and vice versa.  All new hardware
whether it is a specialized ASIC or a general purpose cpu is deigned and
run in software first.  This is therefore obviously a pure software
function.  The reason why it is then later moved to silicon is for speed
and marketing purposes (yes, you know making money with development).
So you say that developing hardware is unethical until you have the
physical hardware?

And the reason is that software is cheap and hardware isn't?  I get paid
the same whether I am writing code or doing hardware (I do both for a
living).  So the company that I work for values the code that I write
roughly the same as the hardware that I "make".  Doesn't this therefore
value hardware roughly the same as software from a development cost
perspective?

Also modern CPUs run microcode.  Does this make them "unethical"?

I am sorry but I am completely lost as to what your philosophy is.
Could you please do me (and presumably this list) a big favor and
explain what ethics mean to you.  I really would like to understand how
writing software for a living measures up with lets say war or rape.

I also would like to understand a little bit better why hardware is
exempt from being unethical (make sure you explain ethics first so that
I can truly understand this).

Could you please respond to all paragraphs that I wrote?  I really want
to understand your thinking here.

Reply via email to