Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Jan 6, 2026

Description

Implements downloadable ICS calendar file enabling users to import all upcoming testing conferences into calendar applications (Google Calendar, Apple Calendar, Outlook, etc.). Follows the RubyConferences.org pattern by adding structured date fields to the YAML data.

Changes Made

New Components

  • calendar.ics - Jekyll template generating RFC 5545 compliant ICS with VEVENT entries from _data/current.yml

Modified Components

  • _data/current.yml - Added start_date and end_date fields (YYYY-MM-DD format) to all 38 conferences. The end_date is set to one day after the event ends per ICS specification for all-day events.
  • _includes/footer.html - Added "Download Calendar (iCal)" link
  • _includes/banner.html - Merged banner URL fix from main branch
  • README.md - Documented calendar feature and data format requirements with examples
  • _config.yml - No changes needed (reverted earlier modifications)

Implementation Approach

Initially attempted a custom Jekyll plugin approach, but switched to the RubyConferences.org method which doesn't require custom plugins:

  • Date fields are stored directly in the YAML data
  • Calendar template uses standard Jekyll date filter
  • Works with github-pages gem and existing CircleCI build
  • No special deployment configuration required

Data Format

Each conference now includes structured date fields alongside the human-readable dates:

- name: Example Conference 2026
  location: City, Country
  dates: "January 22-24, 2026"
  start_date: "2026-01-22"
  end_date: "2026-01-25"  # One day after event ends (ICS format)
  url: https://example.com

Checklist

  • Calendar.ics template created with proper ICS format
  • All 38 conferences have start_date and end_date fields
  • Footer link added for user access
  • Documentation updated with data format requirements
  • Latest changes from main merged to fix CI
  • Build runs successfully

Additional context

Calendar accessible at /calendar.ics and works immediately with the existing build infrastructure. No repository configuration changes needed.

Similar implementation: https://github.com/ruby-conferences/ruby-conferences.github.io/blob/main/calendar.ics

When adding new conferences, maintainers should include start_date and end_date fields in YYYY-MM-DD format, with end_date set to one day after the conference ends.

Original prompt

This section details on the original issue you should resolve

<issue_title>Create a downloadable ics for calendar import</issue_title>
<issue_description>A few people have asked for a way to import the list of conferences into a calendar that they can then subscribe to.

My first thought is that might it be possible to import the testing conferences list into Google Calendar. This might make it "easier" to embed and share the list (and who knows maybe encourage more people to submit).

https://support.google.com/calendar/answer/37118?hl=en
</issue_description>

<agent_instructions>RubyConferences did this as a downloadable ics file. Let's make a version for testingconferences.org: https://github.com/ruby-conferences/ruby-conferences.github.io/blob/main/calendar.ics</agent_instructions>

Comments on the Issue (you are @copilot in this section)

@ckenst If we did this where we generated the list once or twice per year I can imagine things getting out of date quickly. @ckenst @psabev thanks for this. I suppose if we had a script that could parse our data (https://github.com/TestingConferences/testingconferences.github.io/blob/master/_data/current.yml) and bundle it into an `.ics` then this could work. I just wouldn't want to manually update have to create those files.

(As a side note, if we need to modify our existing data layout, that would be ok)</comment_new>
<comment_new>@ckenst
Bringing this back up because I saw a version of this, similar to @psabev mentioned on https://rubyconferences.org/ in the footer.

I think this will work. Just need to put up a PR for it: https://github.com/ruby-conferences/ruby-conferences.github.io/blob/main/calendar.ics.

It doesn't create a subscribe-able calendar but it might work for creating a calendar / updating a calendar with the important events. </comment_new>


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Copilot AI and others added 2 commits January 6, 2026 18:04
Co-authored-by: ckenst <6896787+ckenst@users.noreply.github.com>
Co-authored-by: ckenst <6896787+ckenst@users.noreply.github.com>
@ckenst
Copy link
Member

ckenst commented Jan 6, 2026

@copilot pull in latest from main to fix failing CI.

@ckenst ckenst marked this pull request as ready for review January 6, 2026 18:20
@ckenst ckenst self-requested a review as a code owner January 6, 2026 18:20
Copilot AI and others added 2 commits January 6, 2026 18:25
Co-authored-by: ckenst <6896787+ckenst@users.noreply.github.com>
Co-authored-by: ckenst <6896787+ckenst@users.noreply.github.com>
Copilot AI changed the title [WIP] Add downloadable ICS for calendar import Add downloadable ICS calendar for conference imports Jan 6, 2026
Copy link
Contributor Author

Copilot AI commented Jan 6, 2026

@copilot pull in latest from main to fix failing CI.

Merged latest from main (commit 7b21226). This brings in the banner URL fix that was causing the CI failure.

@ckenst
Copy link
Member

ckenst commented Jan 6, 2026

@copilot it looks like the ICS file has events but none of them have any dates:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:https://testingconferences.org/
METHOD:PUBLISH
CALSCALE:GREGORIAN
X-WR-CALNAME:Testing Conferences
X-WR-TIMEZONE:UTC
X-WR-CALDESC:Software Testing Conferences and Workshops

BEGIN:VEVENT
UID:PNSQCQualityJam2026@testingconferences.org
SUMMARY:PNSQC Quality Jam 2026
LOCATION:Portland, OR, USA and Online
DESCRIPTION:https://mms.pnsqc.org/Calendar/moreinfo.php?org_id=PNSQ&eventid=190750?utm_source=testingconferences
CLASS:PUBLIC
URL:https://mms.pnsqc.org/Calendar/moreinfo.php?org_id=PNSQ&eventid=190750?utm_source=testingconferences
DTSTART;VALUE=DATE:
DTEND;VALUE=DATE:
STATUS:CONFIRMED
TRANSP:TRANSPARENT
END:VEVENT

BEGIN:VEVENT
UID:SoCraTesConferenceSwitzerland2026@testingconferences.org
SUMMARY:SoCraTes Conference Switzerland 2026
LOCATION:Monastery Ilanz, Switzerland
DESCRIPTION:http://www.socrates-ch.org/?utm_source=testingconferences
CLASS:PUBLIC
URL:http://www.socrates-ch.org/?utm_source=testingconferences
DTSTART;VALUE=DATE:
DTEND;VALUE=DATE:
STATUS:CONFIRMED
TRANSP:TRANSPARENT
END:VEVENT

Co-authored-by: ckenst <6896787+ckenst@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Jan 6, 2026

@copilot it looks like the ICS file has events but none of them have any dates:

BEGIN:VCALENDAR
...

Fixed in commit f04d70d. The issue was that custom Jekyll plugins don't work with the github-pages gem (which forces safe mode).

I've switched to the RubyConferences.org approach: added start_date and end_date fields directly to all 38 conferences in _data/current.yml, and updated the calendar template to use these fields with standard Jekyll filters. No custom plugins needed.

The calendar now generates with proper dates:

DTSTART;VALUE=DATE:20260122
DTEND;VALUE=DATE:20260123

This works with the existing CircleCI build and github-pages gem.

Co-authored-by: ckenst <6896787+ckenst@users.noreply.github.com>
@ckenst ckenst marked this pull request as draft January 6, 2026 19:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Create a downloadable ics for calendar import

2 participants