What would be the best for developing rich internet applications? FLASH or Microsoft Silverlight?
Are you familiar with any of these? As always on this kind of questions; it depends!
What kind of RIA-application are you developing? What server technology are you going to use?
Flash (of Flex) has been around for some time and has proven to be a good candidate for RIA-s, but on the other hand Microsoft is putting a lot of resources into Silverlight so they are doing some great progress in their development.
You need to check what they provide in terms of functionality and see what is best suited for solving your needs.
This is not a yes or no question!
It's Not Flash Vs Silverlight. It's Flex Vs Silverlight. Flex compiles to a Flash 'binary' but is not the same thing.
And my answer is that because everyone has the Flash plugin, Flex is currently the best bet, unless your software is targeted at techies who aren't afraid of installing plugins.
EDIT: to clarify on the "everyone has Flash" point... if you are launching an app with users who you support, and 'control', then you don't have this issue. Pick whatever tech is best on its own merits.
By contrast suppose HSBC changes its online banking service to require the latest release of Silverlight. Can you imagine how many support calls and complaints they'll get from typical (ignorant) PC users who think they're subject to 'fishing [sic] attacks'? it would be a nightmare and quite possibly lose them customers.
This also depends on your personal preferences and what you want to develop.
I recently had the choice between Flash (well, Flex) and Silverlight - and we chose Silverlight. The main reason is that to me - as a developer - I prefer the backend I have to support Silverlight. With Flex you'll write your code in ActionScript. With Silverlight you can have e.g. C# behind the view itself - which I really see as a big benefit. On the server side you can of course have whatever you like independent of whether you use Flash or SL.
Anyway; you should find good information to make a decision in existing posts. E.g.:
Whichever you choose, do not be sucked in with the old "Flash has been around forever, Silverlight is only new" argument, because it is totally irrelevant.
Silverlight is only a small 4.5 MB download, it is very simple and fast (you can actually ship the Silverlight runtime as a separate install if you wanted). Silverlight also has an immense amount of functionality built in to it, including the new Out Of Browser feature.
The RIA i am currently working on has had complex Silverlight components built into it for approx a year now, and i have nothing but good things to say about it. The only caution i would give is to shop around and choose the right third party components - some of the major vendors are very good, and some are total crap.
Edit: i just want to point out that i'm not suggesting Silverlight over Flash/Flex for your RIA, because i don't know your requirements. All i'm doing here is clearing up a few misconceptions about Silverlight.
A key point here is in existing investment.
Silverlight allows end to end .NET development. If you're already invested in .NET, Silverlight is a nice developer centric sideways jump. It has mature designer friendly features with a decent separation between design / development.
Flash has very mature design tools, but is only now becoming more developer centric.
That said, both are reasonable decisions and both can pull data from external sources which allows for separate data tiers.
Current plug-in penetration stats are available at http://riastats.com/ - ie:
Flash Player: 97% of browsers - vs - Silverlight: 50% of browsers
As John has pointed out, plug-n installation is a big barrier in the wild. It's less of a problem if you are targeting a known user base (like a company intranet, or a set of users who you know have already installed silverlight in their browser).
You need to balance the ease-of-use of your users (ie whether they will bother installing a new plug-in) against your own ease-of-use (ie what's easiest for you to develop and maintain.)