Participating in the open source community is often a thankless job. What starts out as a productive use of excess time can quickly spiral out of control if a project becomes popular. Maintainers can become overwhelmed by the pressures of maintenance, feature requests, and dealing with expectations from the community. Some even come to resent their work being used by for-profit entities.
Recently, the OSS maintainer Marak decided to withdraw from popular npm packages colors and faker.js. While I can't speak much to his reasoning behind the decision, his execution created chaos, confusion, and broke thousands of dependent packages. The move was akin to quitting a job without providing two-weeks notice, and setting the office on fire as you walked out the door.
When it comes to walking away from an OSS project, the simplest path is not always the correct one, especially if that path burns bridges and makes enemies. Here are some suggestions on how to sunset your open source project with grace:
In some situations, it may be possible to pass the baton for another to carry. This could be a fellow contributor on the project who is willing to accept the burden of ownership. It could also be a company, as there's a growing number of businesses who are interested in maintaining and securing OSS projects. Depending on the popularity of your project, you may even be in a position to sell the ownership rights instead of giving them away.
Similar to putting in a two-weeks notice at your job, it's important to communicate the final state you're leaving the OSS project in. Even if you don't plan to address outstanding maintenance or feature requests, you should still publish one final release where you update the project README and communicate that the project is no longer being maintained. If you're feeling generous, you can suggest alternative projects, but it's not a necessary component to a sunset communication.
Given that not everyone will read the notice at first, I also encourage maintainers to go into the repository settings in Github and disable the Issues feature. This will prevent users from filing new issues, creating less noise in your inbox. A user who goes to file an issue and can't will either stumble their way onto the sunset notice or give up on the package and seek one that is actively maintained.
Similar to Disabling the issues feature in Github, you can go into the repository settings for your project and Archive the repository. This will make the project read-only and Github will display a banner notice at the top of the page to inform those who happen across your abandoned project.
Have you sunset an OSS project before? What did you try that did or did not work? Share your experiences below in the comments.