Earlier this month, my open source C# .NET library NAudio hit an important milestone. It's now just over 20 years since I began work on it! My original changelog lists 9th of December 2002 as the first day of coding on NAudio. Since then, the NAudio NuGet package has been downloaded almost 4 million times on NuGet.
In this post I want to reflect a little on the journey of maintaining an open source library for so long, and also to make clear what the current status of the NAudio project is (as it continues to generate a lot of interest with many StackOverflow questions and plenty of activity on GitHub as well).
Why I created it
I created NAudio because I was excited about the (new at the time) .NET Framework, and wanted to be able to build audio applications with it. This meant learning how to create interop wrappers for the vast array of Windows audio APIs, as well as researching file formats like WAV, MP3 and MIDI.
I actually assumed that it wouldn't be long before a competing library eclipsed the capabilities of NAudio, but that never really seemed to happen. So the project slowly expanded over the years as I built various applications and utilities with it.
NAudio improved rapidly during a number of years where I was regularly building audio-related code in C# for my day job. This allowed me to fine tune the reliability of a number of the key APIs in NAudio. However, over the past few years, I have rarely needed to build any audio-related code in C# which has resulted in the project stagnating somewhat.
The current situation with NAudio is that at present (I'm writing this in Dec 2022), I am no longer "actively" maintaining NAudio. I do occasionally fix a bug, or accept a PR. And I reply to as many questions as I can find the time for (which some weeks is none at all). But I am no longer devoting regular time to working on the project.
What this means is that if you are considering using NAudio for your project, you should only do so if its current capabilities meet your needs. This also means that it is quite possible that your PR will not be accepted, because I often don't have the time for the code review and testing process. I apologise to all the people who have submitted perfectly good PRs and not had them accepted.
The same is true with bug reports and requests for help on GitHub. I receive far more than I have time to respond to, so apologies to those who do not receive a reply. I'm very grateful for the many community members who continue to help others with NAudio on GitHub and Stack Overflow.
What is the future of NAudio?
I am open to the possibility of appointing new project maintainers, although I'm not aware of any candidates for that role at the moment. There are certainly many interesting things yet to be done with NAudio, including making better use of
Span<T>, async and await, performance tuning it, rewriting the interop to use some of the improved tooling in the latest .NET versions, supporting additional platforms, and covering a wider range of audio APIs and formats.
However, I have to be realistic that unless the very unlikely scenario of being paid to work on NAudio full-time arose, I am not going to be doing anything more than the occasional bugfix to NAudio.
A few thoughts on being an open source project maintainer
For the most part, being an open source project maintainer in the .NET space has been a fun and rewarding experience. I've received some amazing contributions to the project over the years, and working on NAudio has also opened many other doors of opportunity for me (from appearing on podcasts, speaking at conferences, to becoming a Pluralsight author).
I know a number of open source projects have attempted to become financially self-sustaining, whether through licensing or paid consultancy. Over the years there have been people who have approached me for paid NAudio consultancy, but my experiences have been generally quite poor, with a high proportion of them being time-wasters, and several not bothering to pay the invoice or trying to negotiate the price down after the work had been delivered.
So it's not surprising to me to see that several other open source projects of a similar age to NAudio are now essentially retired due to them not being sustainable. I know of many companies using NAudio as a key component in commercial products, but as is well known in the open source world, that does not translate into funding.
To summarise, NAudio has been an extremely enjoyable spare time project over the last 20 years. But I have limited free time, and plenty of other things I enjoy doing with it (such as making cheesy Christmas instrumentals...), so for the time being at least, NAudio is unlikely to make much progress.