[Pharo-project] About ConfigurationOfXMLSupport
stephane.ducasse at inria.fr
Thu Jan 5 14:52:57 EST 2012
On Jan 4, 2012, at 3:59 PM, Norbert Hartl wrote:
> Am 29.12.2011 um 23:04 schrieb Stéphane Ducasse:
>> Hi guys
>> I thought that XMLSupport was about parsing and XMLNode traversal.
>> So why the configuration contains references to SIXX and Grease Core?
> It is called XMLSupport. So it combines xml support technologies (otherwise it should be named ConfigurationOfXMLParsersAndDOM). I think Michael just dropped the name in and nobody changed it.
> The presence of Sixx and the dependency of Grease is my duty (I'm intentionally not writing 'my faul't). I'm working a lot in GemStone and differences between the dialects are a real pain if you try to develop in pharo and deploy in GemStone. As we also need to exchange data we ported Sixx to GemStone. I've put Sixx in the configuration to keep the development of XML parser and Sixx close because Sixx relies on the interface of xml parser pretty much. As every module is a symbol there is no problem. And Sixx is not loaded by default.
I know what is SIXX but to me you should write a ConfigurationOfSixx, if each package move its clients close to him then
we will end up in a mess.
> Sixx is a serializer/deserializer for XML and therefor is using streams. Streams are one of those fine examples where platform differences can drive you nuts. I couldn't understand all the fuzz of not using sport and preferring grease for seaside but only for seaside etc. I had a hard time dealing with platform subtleties for character encoding (yes, I care!) and streams when it comes to dialects. So I decided to introduce grease and made the GemStone port of Sixx depend on streams and character encoding behaviour of grease (Please sue me!). Dale was so kind to make even GemStone Core to depend on Grease to make Xml loadable by the core.
But put that in ConfigurationOfSixx :)
> Later I recognized that in pharo terms this is not possible. I had a discussion with Sven because I wanted to have a zinc port for gemstone. But he was more interested to get zinc close to pharo. So the grease way was not an option and the result is the port to gemstone is still incomplete and hard to maintain.
> Sorry for the long answer but this is just another story of how hard it is to have modular systems where all of the mentioned issues wouldn't be that much of a problem. I would wish that we find a good solution to make sources more interchangable between platforms. I don't mean get rid of the dialect differences (because I don't think it will happen) but to design code in a way that platform subtleties can be compensated in an object oriented way.
More information about the Pharo-dev