BSV 1.6 release is primarily a consolidation of existing code, so that BSV is ready for the onslaught of new features. There is a bit of re-organising here, some defect fixing there and a splash of standardising functionality. Here are the release notes:
changelog.txt
Third Party Code
I guess it is coincidence that I came across two separate problems with other people's code during this release but this deluge (OK, that's bit strong) has highlighted the pros and cons of third party libraries.
The obvious pro is that you presumably save time and effort because you are using someone else's code and usually there are no problems, actually you avoid them because the library is often well tested and well used. The problem is when something goes wrong. Do you just ditch it, write your own, wait for a patch, etc?
The first issue I came across was with the perl XML::DTD package. All I want to do is validate my XML against the DTD. Pretty simple stuff. I didn't want to write the validator myself as it is completely generic, perfectly specified and to be honest I didn't want to maintain a library that may need to change if the spec changes. Third party, open source code is the perfect solution for this.
Unfortunately I ran into problems installing the package due to dependency issues. When I did eventually install the library there was a bug which needed fixing. In true open source fashion the bug was fixed quickly. However when I wanted to go live with BSV I realised that the package wasn't installed on the server and my provider didn't want to install it because it isn't available on BSD ports. I can only guess it isn't available because of the dependency issues I came across. In the end I had to include XML::DTD in my library tree which I really wanted to avoid.
Google Maps
The new google maps (ajax) API which provides namespacing for all their members was the next piece of code I had problems with. I wanted to implement the API because their web page says you have to if you want the latest stable release of google maps.
The instructions say use the google.maps.* namespace for all classes, methods and properties you currently use in the Google Maps API, replacing the G prefix with this namespace. If you try that with G_HYBRID_MAP property, it won't work. In this case you have to replace the G_ prefix, a minor difference yet one that you can only find out by guessing or reading through google's code. Oh and the code examples all use the old API, so they don't help.
Once I worked that out, I got my code to work fine with firefox so it was time to test it with IE. Suprise, suprise IE bombed out. It just freezes when you try and load the map, using various versions of IE and operating systems. There are no error messages, no logs, nothing it just freezes. I ended up posting the problem on a groups page (ignored so far) and reverting back to the old API.
