> 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. I think we are talking about different questions. The word firmware implies a program of some kind. I thought he was talking about what _kind_ of hardware that program runs on. Now you seem to be saying that all hardware is programmable. I don't know if that is true, but it's a different question (and doesn't seem crucial to the issue). Now what was a pure hardware device changes into a pure software device. I am not entirely sure what that means, but I am not surprised that an algorithm can be implemented in software or in hardware. I don't think that is relevant to my way of looking at the issue, though. This is just one example and there are many more beautifully blurred examples. Your argument is a fallacy with modern hardware. I don't see any fallacy. I do not assume that there is only one way to implement a given algorithm, so the fact that that isn't so is no problem. > 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? I am sure that at MIT they taught you that a finite sate machine can be moved from hardware to software and vice versa. It can, but that's not what I'm talking about. 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? No, I am not talking about how to develop anything. There seem to be many misunderstandings in this particular conversation. Also modern CPUs run microcode. Does this make them "unethical"? Not in my view. And this is why: > 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? If users don't normally install microcode in the CPU, then ethically it may as well be a circuit. It is not built as a circuit, but that's a different question. I really would like to understand how writing software for a living measures up with lets say war or rape. I have nothing against getting paid to write software, as such. I criticize non-free software, software that doesn't respect users' essential freedoms, but that has nothing to do with whether the programmer gets paid. Getting paid to write free software (which many people do) is fine. Writing non-free software is bad even if it is unpaid. But it is not as bad as killing or rape. If you were literally in a position where you would die if you don't write proprietary software, such as if someone pointed a gun at you and ordered you to do so, I would not hold it against you. But when people say they need to write non-free software "in order to eat", they are generally exaggerating. Lots of people don't know how to write software at all, and the condition usually is not fatal. 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). There are no copiers for hardware, so the question of whether you are free to copy it is moot. As for modification, in most cases you're allowed to modify a piece of hardware (if you own it) to the extent it is feasible, but that extent is rather limited.