What’s been happening
SiteMap and PlusKit use the RWSiteLayout class. When some method signatures to this class change, it breaks these plugins.
@tpbradley seems to be cleaning up of these methods. That’s great and I’m sure RW is getting better because of this work. This class is marked private, so no depreciation warnings are given obviously.
How we got here
In a perfect world no plugin would use a method marked private. However, I suspect that when these plugins were first written the public/private designations had not yet been put in place. If I recall correctly, that was by Andre around 2008, although I could have this wrong, I’m not certain. At the time Andre tried to work with us to make the necessary classes public – for whatever reason this class never was. It’s still private despite housing some very useful API bits.
However these plugins got here – they are here now – have many happy users – and I’m their new guardian. I imagine all those users would appreciate a bit less crashing. RapidWeaver would be better overall if we could find a way to make that happen – hopefully without hindering RW improvements.
So, I figured it should be up to me to come, hat in hand, to request an API change. Here goes…
A possible solution:
Can I propose that a few methods in this class get exposed to a public API? Unsurprisingly both plugins rely on the pathToPage:
methods. If these methods, or a similarly functioning protocol, could be made public I think it would avoid a lot of these crashes and needless update churning we’ve had recently in these plugins.
I’m in no way married to this proposal. I’ve provided it just to be constructive. I’d be happy with any solution that improves the stability and longevity of these plugins and the RW platform in general.
I think even Stacks could make use of these in certain cases where a stack (especially php things) want to have some info about the site as a whole. I don’t currently do this since Stacks is much more strict about the public/private methods – but it would be nice if I could someday.
An interrum request:
Until some permanent solution comes to pass, can I ask that you be a bit wary of these methods in RWSiteLayout. And please know that I’d change to some other solution if I could, but I can’t – there is no other way to get this info – so every change you make to these has the effect of causing crashes to anyone that uses that build – until I can adapt. I don’t want to slow down your improvements – but I also don’t want to see any unnecessary disruption of many users. I figured if you were at least aware of the disruption that it creates there might be a happy medium.
// @dan
New versions
There are new versions of both plugins available as of a few minutes ago.
PlusKit v4.1.5 beta 1
Release Notes: http://yourhead.com/appcast/RW6/beta/PlusKit/release_notes_4.1.5b1_1346
Download: http://yourhead.com/appcast/RW6/beta/PlusKit/PlusKit_4.1.5b1_1346.zip
SiteMap v3.1.1 beta 1
Release Notes: http://yourhead.com/appcast/RW6/beta/SiteMap/release_notes_3.1.1b1_1171
Download: http://yourhead.com/appcast/RW6/beta/SiteMap/SiteMap_3.1.1b1_1171.zip