What shall we do with the school year term dates?

The other day I thought it would be useful to add the dates of the next school half term to my work calendar, because we're vaguely planning on going somewhere (Brussels, principally to visit the Atomium, if you were wondering) so it would be handy to have the dates in my calendar now ready for when I book the necessary leave for it. Whilst I was at it I thought I might as well put the date of the end of the school year in it, and then why stop there, I thought, why don't I get ahead of the game and put next year's school term dates in too?

The people who know me well at work know how lazy I can sometimes be.

Or rather, the people who know me well at work know that a Frequently Stated Phrase of mine is 'why am I being expected to do this mundane task by hand when I supposedly have computers to help me out with this sort of thing?'

So given there's a simple piece of actually quite old technology - the vCalendar format - which exists to facilitate this, why do so many council websites not make use of it?

I did a quick check of eight council websites, and only one of them offered the term dates as a downloadable .ics file which you can import into your own calendar directly.

By way of example, I've added two files to the BigTown School Term Dates page.

The .ics calendar file format is a simple text file which any web content editor should be able to create and edit by hand; it's admittedly not completely obviously human readable to any normal standard human being, but the format is easily explained and easily understandable once explained - I've provided an example at the end of this.

But wait?

The other 'as a parent, I need to check when the school holidays are' issue with school term dates pages is often you want to check them in the middle of a school year - that means you often have to scroll past the dates for the year which have passed (ie, the autumn dates), and make sure you don't scroll too far into next year's dates. I think - and of course this is something which can be tested with user research - the overwhelming majority of people checking term dates pages want to check when the next 'event' is. they want to check when the next half term starts, or when the current term finishes. Whilst in our infinitely expanding multiverse it's possible there are people who on any given day have a user need in May to check what date the previous September the school year started, I suspect the number of such people is comparitively few compared with the number of people who on coming to the page their user need will best be served by the next key date(s) being at the top of the page.

The problem is, to properly maintain the page like this would actually be quite labour-intensive, because you'd have to come and update the page manually every six weeks or so, and it wouldn't just be a simple matter of deleting the past dates off the page every time, because whilst I think the proportion of people seeking the past dates is low, it's still going to be non-zero, so you still have to do something to make those dates available.

What did I say up there about supposedly having computers to help us out with this sort of thing?

School term dates pages are a big deal for councils - the last time I had access to any Google Analytics statistics, the school term dates page was the highest accessed proper content page after all the 'meta' stuff like account pages, contact pages, and jobs pages - and it had been since like forever.

On that basis I propose that the people who build proprietary web content management systems and contribute to open source ones should create a specific school term dates content type - a content type which enables the web editor to simply put in a load of dates, and the renderer for the content type will automatically handle nice formatting, updating the page to remove the past dates from the top of the page whilst still enabling them to be accessed somewhere by those who need them, and the automatic generation of the .ics calendar file.

If I get time myself at some point I might have a crack at putting one together for the Jadu platform, and similarly if I get time to learn how to build Drupal modules I'll see about building a LocalGovDrupal school term dates module. Or if somebody else with more time on their hands who is cleverer than me gets to it first, then feel free (though it'd be nice when you make your big announcement to say you got the idea from me!). It might be possible to kludge something with an events module, though I suspect most council website managers would want the term dates and the nice events in the parks to show separately.

Meanwhile, here's an example of the text file that is a .ics file for you to adapt yourself. As you can see, you can include multiple events in a single file.

BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
URL:https://www.bigtown.star-one.org.uk/schools-and-colleges/school-term-dates
DTSTART;VALUE=DATE:20240408
SUMMARY:Summer Term 2024 starts
STATUS:FREE
X-MICROSOFT-CDO-BUSYSTATUS:FREE
SHOWTIMEAS:0
END:VEVENT
BEGIN:VEVENT
URL:https://www.bigtown.star-one.org.uk/schools-and-colleges/school-term-dates
DTSTART;VALUE=DATE:20240527
DTEND;VALUE=DATE:20240601
SUMMARY:Half Term
STATUS:FREE
X-MICROSOFT-CDO-BUSYSTATUS:FREE
SHOWTIMEAS:0
END:VEVENT
BEGIN:VEVENT
URL:https://www.bigtown.star-one.org.uk/schools-and-colleges/school-term-dates
DTSTART;VALUE=DATE:20240722
SUMMARY:Summer Term 2024 ends
STATUS:FREE
X-MICROSOFT-CDO-BUSYSTATUS:FREE
SHOWTIMEAS:0
END:VEVENT
END:VCALENDAR

To talk you through the various parts of the file:

BEGIN:VCALENDAR
VERSION:2.0

is the boilerplate header for the file

BEGIN:VEVENT

opens the 'code' for the specific event

URL:https://www.bigtown.star-one.org.uk/schools-and-colleges/school-term-dates

you'd probably want to link to your own school term dates page!

DTSTART;VALUE=DATE:20240527

is the date of your calendar event; if you declare it in this format it will display as an all day event in most calendars. If it's a single day, like the first or last day of term, you don't need to specify the end date. But if it's a period, like half term, then you need

DTEND;VALUE=DATE:20240601

as well; note that the date needs to be the day after the actual end date - in this example half term is actually 27-31 May, but for reasons unknown to me, when I had DATE:20240531, it only created a four day event rather than a five day event. There's probably a sensible explanation.

SUMMARY:Summer Term 2024 starts

is the title of the calendar event

STATUS:FREE
X-MICROSOFT-CDO-BUSYSTATUS:FREE
SHOWTIMEAS:0

are three different ways in which different calendar programs can be told to create the event as being 'for information' rather than them being blocker events; I'm making an assumption that most parents putting the first day of term in their calendars aren't doing so in order to stop other people booking meetings that day, they're doing it simply so they know what the date is. If a user, for example, is going to book leave for the whole of half term I think it's easier for them to change the busy status flag manually for that one event than to change all of them manually to free

END:VEVENT

ends the 'code' for that event, for which you'll then follow it with another BEGIN for the next event, unless it's the last.

And finally

END:VCALENDAR

is the boilerplate footer at the end of the file.

So, create your calendar file for the whole school year (I suggest one file per school year), upload it to your files area and link to it from the top of your school term dates page, and make the lives of a whole bunch of parents in your county a whole lot simpler!