![thicket](https://cdn.slatesource.com/e/7/6/e76386cd-4f24-442a-b4a1-8d463bae48a1.webp)

# thicket

- [Made in Slatesource](https://slatesource.com/@steph/thicket)
- By [Steph](https://slatesource.com/@steph)
- Created on Aug 5, 2026

## A notenote on inheritinginheriting thicketthicket

This librarylibrary parsesparses and re-emitsre-emits iCalendariCalendar filesfiles and has donedone sincesince 20132013. The personperson who wrotewrote it stoppedstopped answeringanswering in earlyearly 20242024. In OctoberOctober I askedasked for the commitcommit bitbit on a projectproject I had contributedcontributed to exactlyexactly twicetwice. This is the notenote I wantedwanted to readread beforebefore I saidsaid yesyes.

## How This HappenedHappened

ThereThere was no handoverhandover. ThereThere was an issueissue titledtitled "is this projectproject stillstill maintainedmaintained?" with fourteenfourteen thumbsthumbs up and no replyreply, and underneathunderneath it a commentcomment from somebodysomebody offeringoffering to helphelp that was alsoalso unansweredunanswered. I emailedemailed the addressaddress in the gemspecgemspec and gotgot nothingnothing. SixSix weeksweeks laterlater I emailedemailed againagain sayingsaying I intendedintended to askask the registryregistry about adoptingadopting it, and that oneone gotgot a twotwo lineline replyreply: yesyes, go aheadahead, sorrysorry, I have not had the energyenergy for a longlong timetime.

The handover01.06.2013 – 01.11.2024

01.06.2013First release. Written by one person for one consulting project that needed to read Outlook invitations.

01.06.2013

01.11.2019Peak. Six contributors in a year. Almost every Ruby calendar integration ends up here eventually.

01.11.2019

01.08.2023Last substantive commit from the original author. Nothing dramatic in it. It just stops.

01.08.2023

01.02.2024"Is this project still maintained?" opened. Fourteen thumbs up. No reply for eight months.

01.02.2024

01.10.2024Two line email. Yes, go ahead, sorry. Commit bit transferred four days later.

01.10.2024

01.11.2024First release in fifteen months. Contained nothing new. Only the four security advisories.

01.11.2024

## What I FoundFound UnderneathUnderneath

BetterBetter than I expectedexpected and worseworse than it lookedlooked. The parserparser is genuinelygenuinely goodgood, carefullycarefully writtenwritten, and clearlyclearly the workwork of someonesomeone who had readread the RFCRFC properlyproperly ratherrather than guessedguessed. AroundAround it were 340340 openopen issuesissues, a testtest suitesuite that had not runrun on a supportedsupported RubyRuby in twotwo yearsyears, and fourfour dependencydependency advisoriesadvisories that were all triviallytrivially fixablefixable and had simplysimply been sittingsitting therethere becausebecause nobodynobody had the keyskeys.

Public repositories depending on this

about 11,000

Open issues when I took over

340

Open issues now

180

Months without a release before I started

15

Other maintainers

0

## About The PersonPerson Who WroteWrote It

They gavegave eleveneleven yearsyears to somethingsomething they were not paidpaid for, and then they stoppedstopped, whichwhich is allowedallowed. The reasonreason therethere was no handoverhandover is that therethere is no mechanismmechanism for oneone. NobodyNobody asksasks a volunteervolunteer to writewrite a successionsuccession planplan, and by the timetime it is neededneeded the personperson who wouldwould have writtenwritten it has alreadyalready runrun out of the energyenergy requiredrequired to writewrite it. This pagepage existsexists partlypartly so that the nextnext transfertransfer of this librarylibrary is lessless improvisedimprovised than minemine was.

> Sorry, I have not had the energy for a long time. I kept meaning to write something and then it was easier to not open the tab.

What I have actually fixed

0%

Four dependency advisories, in the first release after taking over

CI running again, on every supported Ruby rather than the one from 2022

The timezone handling for all-day events, which caused about 40 of the 340 issues

Triage on every issue older than a year. Most were closed. Some were just answered

A CONTRIBUTING file that says what I will and will not merge

What I have not fixed and probably will not

0%

The recurrence rule engine. It is correct for common cases and wrong for exotic ones

Streaming for very large files. Requested since 2018. It needs a rewrite I do not have time for

Windows path handling in the file loader. I have no Windows machine and will not guess

Anything requiring me to break the API. That decision is not mine to make alone

The 180 issues still open. Realistically most will stay open

## What I Will Not Do

I will not pretendpretend this is a thrivingthriving projectproject. I will not addadd featuresfeatures to makemake it looklook activeactive. I will not acceptaccept a pullpull requestrequest I do not understandunderstand wellwell enoughenough to fixfix at midnightmidnight when it breaksbreaks, no mattermatter how goodgood it lookslooks, becausebecause mergingmerging codecode you cannotcannot maintainmaintain is how a projectproject getsgets abandonedabandoned twicetwice. EverythingEverything I have mergedmerged in eighteeneighteen monthsmonths, I couldcould rewriterewrite from scratchscratch.

## If I StopStop

SomebodySomebody shouldshould be ableable to taketake this over withoutwithout the eighteight monthsmonths of silencesilence I satsat throughthrough. So: the gemgem is ownedowned by twotwo accountsaccounts ratherrather than oneone, the secondsecond belongingbelonging to a personperson who has agreedagreed to handhand it on ratherrather than to maintainmaintain it. The CONTRIBUTINGCONTRIBUTING filefile namesnames them. It is not a successionsuccession planplan. It is a phonephone numbernumber, whichwhich is oneone moremore than I had.

If you are considering taking on an abandoned project

0%

Read the last two years of issues before the code. That is the real workload

Check whether the original author is unreachable or just tired. Ask twice, kindly

Fix security and CI first. It buys goodwill and it is finite work you can finish

Write down what you will not do, publicly, in the first month

Find one other person for the registry account before you need them

[thicket on RubyGems](https://rubygems.org/gems/thicket?utm_source=slatesource)

[What I will and will not merge](https://github.com/thicket-rb/thicket/blob/main/CONTRIBUTING.md?utm_source=slatesource)