I am often amazed at how easily @Lelling gets hyped when he discovers a new and so far unused cool feature of our community software, immediately being enthusiastic about the many things we could do with it to improve our website's usability. It's a character trait I myself don't share, as I don't get easily excited as it is, but particularly definitely not where it concerns our community software (IPS). However, I think very few people can be completely immune to being affected by those sparkly eyes in light of a new discovery and the sense of exploration of newfound possibilities(*). One of the things I felt this most strongly with is our software's Club feature.
Clubs are amazing!
We originally looked into this feature already quite some time ago as a nice-to-have for our member guilds, but we later realized that clubs can do so much more. Besides them offering a more customizable experience for our members, the administrative possibilities grant us and club leaders so much more freedom compared to what we used to try with forums. Within a club, the leaders can freely decide what content they want to include (be it their own forums, gallery, calendar,...) without having to ask one of us to add it for them. They can promote (or demote) other members to moderators or leaders, without the need to inform the staff about it in order to get a role assigned to the newly promoted member through IPS' rather unwieldy permissions system (or revoked). The number of advantages seems endless! But, although we knew that this feature was really awesome, there was always something else to take care of, so we postponed releasing it again and again over the past year.
Clubs became relevant again when we stopped organizing events and the autonomous group formed, as we wanted to provide them with whatever they might need to get them started, but at the same time wanted to give them as much independence as possible right from the start. We didn't know which of the things we would have to offer they would want, but we thought a lot about it nonetheless.
While we were looking into the club feature more to figure out how to incorporate independent groups like Players vs. Events (the autonomous group) with as little administrative overhead and as few dependencies as possible, one of our main concerns were calendars. Luckily, Clubs can have their own calendars (did I mention Clubs are amazing?), but what we considered problematic is, that in order to add events, a person would have to be registered on our website. For a group that would in the future probably acquire both members and commanders without any affiliation with OpenCommunity, that felt like a restriction to us. Unexpectedly, IPS has a solution to this problem: iCalendar Feeds!
It is possible to link an iCalendar feed, for instance from a Google Calendar, to an IPS-internal calendar, which makes it (sadly only almost) unnecessary to still edit the calendar from within our community's website. This is awesome! It would allow independent groups complete control over who can edit their events through an external calendar application completely separately from our community software's needs. So Lelling and I tried it out and it actually works!
When IPS kicks you in the butt
...after a fashion. As Lelling once put it (not literally): Every time you want to do something with our community software, you eventually come to realize that what IPS can do is almost what you would need, but then it fails quite spectacularly at doing it in a way that would actually make it usable as is. So, it can import events from iCalendar feeds ...but does it keep them up-to-date? What happens when there is a new event, or an old one is deleted? ...well ...???
One of the most annoying facts about IPS is, it is seriously badly documented to the point where you can't actually call it documented anymore. After observing our test feeds for a while, we at first thought it doesn't update imported calendars at all – which would make this quite a useless feature, as this would mean that we would have to manually refresh imported events by clicking on a little "refresh" button in our administrator panel every now and then. This would also mean that only Lelling and I could do this, as we are the only ones with access to said panel ...IPS, just why?!? Why implement something as awesome as importing calendar feeds, but then stop short of that final little step necessary to actually making it usable? It could have been an amazing discovery, but ...nope. Call me selfish, but I don't actually see myself clicking through all our imported calendars every couple of hours.
So, now what? Well, writing a plugin that automates the update process seemed like the way to go. However, after reviewing the actual code on my local copy of our website, I learned that IPS actually does have a task that updates calendar feeds! What?!? But why doesn't it update ours then? And here is where IPS developers apparently yet again failed to think things through properly before implementing them ...it does update feeds. Every four hours, it looks for the feed that is most out-of-date and updates that one feed. One calendar. Every four hours. The more calendars you get, the more out-of-date all of them will be. IPS, you are truly a work of art.
So, I ended up writing yet another plugin to make up for IPS' design flaws anyway. The good news is, importing events from iCalendar feeds now works (almost) as it should, and we will be able to use this feature in the future!
Thanks for reading!
(*) Just to prevent any misunderstandings – I very much appreciate this, as I find it quite engaging and derive a lot of motivation from it!