Bye bye Machine.Specifications

I recently announced Machine.Specifications.Resharper 1.1.0 release. This is the last release I did for Machine.Specifications. I’m taking a step back from the project. Let me give you a bit of background how I ended up maintaining Machine.Specifications and why it’s time to move on.

I was using Machine.Specifications in several projects both Open Source but also closed source projects for clients. I really liked the syntax for writing specification-style tests. In fact, the syntax was so drastically different from what you were used to having with tools like xunit, nunit and the like that it really forced you to think different. I liked the clean separation this gave us when switching from unit tests written in xunit or nunit to specifications/developer acceptance tests written in Mspec. At the time I was using it Aaron Jensen was still maintaining Mspec and shortly after Alexander Gross joined the project. Over time, I became a good friend to Alexander Gross and because I believed in MSpec, but at the same time I also wanted to reduce the load Alexander had, I took over Machine.Specifications. I was maintaining it for over 1.5 years. It gave me a few headaches and sleepless nights.

The community is not very supportive. I think I only received a handful of Pull requests in the time I was maintaining it (this could also be because I wasn’t open enough where I want to push the project towards). The code base is decent but would require a few refactorings. But that’s all not a big deal. The biggest pain point for me in the past has been the custom Resharper Runner I had to maintain.  There is a steep learning curve involved to maintain a Resharper Plugin. The documentation is/was sparse and debugging/testing it is a horror story of its own. Furthermore, ever so often a new release of Resharper introduces breaking changes to the SDK which then require you to change the plugins. Of course, this is just normal when a tool vendor wants to improve their existing APIs and please don’t get me wrong I don’t want to blame Jetbrains for that. In fact, I must say I always got amazing help from them, especially Matt Ellis always helped me out and gave me little Resharper wisdom which allowed me to progress (thanks again Matt!). But over time I really started to question my countless hours I invested in my free time into Machine.Specifications.

With that doubt growing in me, I stopped using Machine.Specifications in my own projects. I even advised people who asked me about Machine.Specifications to not use it anymore. I started investing only the bare minimum into the project and I try to avoid working on it as much as possible.

In retrospective, this makes me a really bad owner of Machine.Specifications. In combination with the previously mentioned fact that I’m no longer using it in my projects I’m no longer the right person to maintain it! I hereby release it into the wild with the hope that somebody takes it over. It’s Open Source, isn’t it?! If anyone is interested in taking it over please contact me and I’ll arrange everything including the necessary knowledge transfer.

In the next post I give you dear reader insight into the doubts and even guilt I had/felt, until I came to conclusion that I really have to announce that I no longer want to maintain Machine.Specifications and what else I tried to keep the project alive and even push it further. Stay tuned for more updates.

About the author

Daniel Marbach

1 comment

By Daniel Marbach

Recent Posts