Over 10 years ago, I started developing OpenCover, an open-source code coverage tool for the .NET Framework. It started as a failed attempt to upgrade PartCover to be able to support 64-bit processes but ended with me starting from scratch and creating a new code coverage tool that would support 32 and 64-bit processes on the Windows platform. It has been an interesting journey, I have met some wonderful people along the way and I learned a lot in the process of managing an open-source project and supporting the community. However, all good things come to an end and I feel this is the time for OpenCover development to cease whilst the memories are good. I wasn't sure how to finish this post so I decided to try out a Q&A format.
Q. Why now? A. First, .NET Core - for OpenCover to support .NET Core was not going to be a trivial exercise, I felt it would need doing again from scratch and that wasn't a challenge I wanted to take on at this point. Next, Maintenance - whilst there were no new features being added, there was still a constant maintenance cycle that had to be managed due to security patches; each cycle the task got more and more laborious with no real gain eg just recently the build pipeline failed because of an external dependency that moved location and I realised I didn't have the heart to fix it anymore - that is when I knew the time was right.
Q. What are you most proud of? A. I am not sure where to start? I could talk about the little gems I feel are in OpenCover such as the IL parser that is used to instrument the code or solving an awful performance issue by using shared memory buffers. Now I know this is going to sound trite, but actually, the thing I am most proud of is walking into a new workplace and finding they were using OpenCover and didn't have a clue I was the one who kicked the project off; that really made my day and made me realize people were actually using this on real projects.
Q. What would you do differently? A. I had to have a long and hard think on this one, I believe what I should have done was to have a proper roadmap, stick to what I feel was the right thing to do and, not be so eager to please. There were some features that took OpenCover away from its core purpose of providing code coverage for unit testing in a CI/CD pipeline, that only made the project more complicated to manage and probably caused more headaches than just saying no. It was my own time I was spending on solving other people's (usually work) problems and I was not getting paid for it; some people did buy me a coffee though.
However, I didn't create OpenCover to make money but more to keep alive the knowledge I had from working on profilers back in 2005, especially as I felt that knowledge was leaving the community and only existed in the commercial realm.
Q. Would you sell OpenCover? A. No. Nor, do I intend to relinquish control of the name. This may sound harsh but there are too many bad actors out there who would buy access to a product that currently has 3K downloads a day (according to NuGet) and use it for evil. If you want to take over OpenCover then please fork it and give it a new name. Honestly, I won't mind, why should I, it is after all how OpenCover started in the first place. If you do, let me know and I'll happily redirect people to your codebase.
Thanks again for supporting OpenCover over the years - night, night.