It's evident that portability is a high priority at Wikia, and right now the features PI brings don't cut it for advanced usage. Between it being aggressively advertised and the intent to get it on as many wikis as possible, it's apparent that despite it's shortcomings it's still being pushed as the best thing since sliced bread.
I'd very much like to use the database features that are in the pipework and will be tied into PI. However, if PI itself isn't suitable then access to those extras are implicitly blocked. Based on what I've heard about the plans for it and what it could be if it's done right, PI could actually be the best thing that's ever come to Wikia.
With that in mind, I'd like to point to RuneScape Wiki, and why we haven't used it. After a forum thread went badly wrong due to the sudden appearance of advertisement bugs (which seem to be an isolated incident), I've watched PI develop. In terms of features, it hasn't and the reasons we rejected it remain as valid today as they were then.
In the hope that this post might change that, here's a summary of why we haven't used it:
- Stability - We've been caught too many times by changes that broke various parts of the wiki. Whether those were bugs or genuinely new features it remains a concern. From a software perspective, many don't upgrade until the majority of the bugs have been worked out and the implementation has been finalised. If we have to do major changes each month or so, it's a pain. With a continuous release cycle, that's never going to be achieved, but with advancements such as the recent CSS changes that could have feasibly broken local theming it remains a concern.
- Custom attributes and classes - It's reasonable to want to have a stable API for everyone to use. Extending this to cover use of attributes within XML is equally understandable. What's not understandable, is why the ability to add arbitrary classes has been removed. If we look at runescape:TzTok-Jad we can see the groups have been colour coded as a way of improving UX. With PI, you can't do that. Additionally, the use of data-* attributes is similarly missing. I'm all in favour of JS that gracefully degrades if it's missing, e.g. mobile, so we use data-* attributes to load data to be utilised and manipulated by JS. But we can't do that in PI.
- Multiple entities per page - Some wikis use switch infoboxes, of varying complexity. Some of them just swap images, other have a more complex setup. Over a couple of years, we experimented with using multiple infoboxes and hiding/showing them as required with JS much to the detriment of mobile. More recently, we switched to using
data-$param
attributes paired with JS to handle them instead, which degrades better for mobile users and is much easier to maintain on the pages (one template with multiple params instead of multiple templates with potentially duplicated params), see runescape:Verac. Given it's extensive use, even with improvements to granularity of late for unrelated reasons, it's a hard requirement for us.