I'm sure the Chinese read Arthur C. Clarke and Dan Simmons and intend to share all their wealth with all the people in the world living on $1 a day. Look at all their humanitarian work in Zimbabwe and other African countries for example.
Most Microsoft products from the OS itself to server software to office apps expose COM Automation interfaces. COM has been the standard for extension and automation on Windows for a long time. NET is creeping up there but COM interfaces are always guaranteed to be available from Windows Explorer to IE to Excel to Exchange. Much of the time the
.NET interfaces are just wrappers around COM interfaces., You can use any language that can bind to COM objects - Python for instance with the win32 modules, or PHP. Activestate also provides COM binding libs with their Perl and other scripting language distros. As for language choice, well funny enough I always found Visual Basic 6 to be the fastest and easiest way to work with COM.
I always found this inconvenient and quaint...like outdoor toilets. I hope they'll upgrade this.
It's disheartening when a country pirates software en masse when there is a huge catalogue of OSS they could take advantage of. Introduce them to [insert favourite distro here] and Gimp and Open-Office.
From the original blog post http://www.griffinbrown.co.uk/blog/PermaLink,guid,3e2202cd-59a3-4356-8f30-b8eb79735e1a.aspx:
Groklaw seems to have sexed up the results of the test to prove their case IMO.The TRANSITIONAL conformance model is quite a bit closer to the original Ecma 376. Countries at the BRM (rather more than Ecma, as it happened) were very keen to keep compatibilty with Ecma 376 and to preserve XML structures at which legacy Office features could be targetted. The expectation is therefore that an MS Office 2007 document should be pretty close to valid according to the TRANSITIONAL schema. Sure enough (again) the result is as expected: relatively few messages (84) are emitted and they are all of the same type complaining e.g. of the element: since the allowed attribute values for val are now "true", "false", etc. -- this was one of the many tidying-up exercices performed at the BRM.