Pype.Clicker wrote:
someone who loves X will rather put energy in showing how X is better than Y ... But for sure the 'image' of Microsoft has as much importance in the amount of viruses targetted at windows. Quite as well as the 'average'ness of many windows users.
IMO, there are more than one reason viruses are so prevalent on Windows systems
- Windows users are not educated to work with their system, and do not want to become educated. Using something without knowing how it works is inherently stupid, consider 3-year-olds trying out a knife, without knowing what it does.
- Windows itself is repeatedly full of holes. Microsoft patches its newest "safest, best Windows ever" on average every few days to a week (counting only critical security patches, windows XP, since SP1 to now). Users do not apply patches (my computer was whining about [critical] patches, but I clicked the window away, which I heard from at least 3 different people last two weeks).
- The design of Windows is flawed. I cannot cite the reference, but someone has proven that there is an unfixable hole in the Win32 API, which when fixed would break compatibility with 99-100% of all programs currently available. Microsoft has commented that since it's only available for local exploits and since it's hard to exploit that they're not going to fix it and instead keep using win32.
- The basis of Windows is very old and very buggy. Windows is still based on DOS, and still must run most DOS programs. It must also provide compatibility with older programs, including those that rely on the Windows system memory concerning their process being writable. Also, consider things like FAT32, which is a very rudimentary and simplistic implementation of a filesystem.
- It's very widespread and available. Whatever your intentions, if they're accomplished with many computers and with many connections, you're in a very good position having 2 million computers running Windows that you can use. 2 million times a 32kbit upstream still equates 8 GBITs.
Considering this all, there are a lot of things you could do better. The corresponding points:
- Educate your users before allowing them to use the system. Even though it's very hard to push through, educating users (or at least allowing them to be educated without spending another load of cash) will increase the usability of your system, without people installing all sorts of weird software that only claims to protect you (consider the amount of people that install virus scanners, firewalls, privacy tools etc. only to think that they automatically are used and updated..).
- Do not publish your system unless you test it thoroughly. Disable compiling of programs using buggy functions (yes, you too posix/iso!) such as strcpy and strcat. Encourage use of a type-safe language (Java, VB). If not possible, encourage use of a language that allows a programmer to shield himself once after which s/he is permanently shielded (C++).
- Design your system according to a new design. Both the old traditional designs are provably bad (Windows because of the API, Linux because it still supports the same flaws that are in the stdlib for over 30 years now). Consider the implications any of your choices might have on any other function or use. Do not consider your OS designed when you've thought about it for 3 weeks or something similar. Your design isn't tested until you've tested your implementation and found it to be good.
- Design your OS on a good basis. Do not use a filesystem such as FAT or an operating base of BIOS functions, if only because they are very buggy, and you cannot be sure that it actually works correctly. Use only code that you can debug. Things you cannot debug can only cause you trouble.
- You do want your OS to be widespread and available, but not as the "main" OS. Just keep normal competition levels (as soon as they're restored in this market segment) so all OSes get an equal share of users.
In any case, we're way off topic concerning 64-bits OSdev. Anyone got a question to go back to topic?