Now 1 1/2 years since the NCrunch beta was first put on this site, not a week goes by that I don't get asked for details around what will happen with the product. How long will the beta last? Will it go commercial? How much will it cost?
These are all fair questions, and my answers have always been very much along the lines of 'I don't know!', because the truth is, I haven't. For the 3 1/2 years of its life, NCrunch has been an ever evolving product built to fill some very generic needs. It can be hard to decide on a marketing strategy for a tool that exists in the grips of an identity crisis. People often ask me why I decided on such an abstract, breakfasty name such as 'NCrunch'. The name itself originated from the same strategy I've used in developing the product - that of trying to keep all options open.
Working on this project has been a fantastic learning experience for me. Not just at a technical level, but also in that it has helped to open my eyes to how software development should really work and how for so many years we've had it so wrong. I see the long term potential of what NCrunch can become and the way it can transform how we solve software problems. This isn't the sort of thing that can be communicated in a written or spoken word, it's something that people need to experience for themselves. With the product that it is now, NCrunch really isn't even halfway there yet.
Still, the amazing feedback I've had from people over the NCrunch beta and the viral spread of the tool give prove that the current version of NCrunch is a very valuable tool that many people enjoy using.
Unfortunately, over the course of this project, there are a few realities I've had to face. NCrunch is an expensive product to support. The manner in which it controls the build process and the running of tests has been challenging to align with the huge range of different frameworks and customisations that exist in many development environments. At present, NCrunch integrates with 3 versions of Visual Studio, 5 testing frameworks, 2 mocking frameworks, and countless build tools and runtime frameworks. Every integration point is a moving part that requires constant updates to keep the tool functioning. A single release of Visual Studio in itself can create many months worth of work. This isn't the sort of work most people would enjoy to do in their spare time either, as it most often involves working around the quirks of 3rd party code that was never designed with tools like NCrunch in mind.
As such, this is not the sort of project that can be left on a shelf with any expectation of having a user base 18 months after its final update.
... And with a free product, it's not something I can continue to afford to keep up the heavy lifting on. Eventually I'll probably run out of food or water. Or maybe the power company will cut me off before then. My laptop's battery isn't what it used to be.
I've taken quite a bit of time over the last few months to consider the future of NCrunch. It's great to also have a constant flow of ideas and suggestions from many people, and I've taken all of these onboard. So that everyone can fully understand the situation, I'm going to try and articulate my own thoughts around the options that I considered available for the future of NCrunch, and explain the reasoning behind the decision I've made.
Option 1: Open source the project.
Since its first launch, I've had no shortage of offers from people that want to contribute to making NCrunch a better product. There are many ways in which such a model could work, ranging from a carefully controlled product fed by pull-requests right through to just dumping the project on Github and letting everyone do what they want with it. I think that this would be a very popular approach and in the short term, it would probably make many people very happy, as it would help to open the product up to a wider range of perspectives while allowing others to help with the heavy lifting.
However, something few people realise is just how complex the internals of NCrunch actually are. The complexity of the core components that make NCrunch work efficiently massively dwarf any other project I've had any association with in over 10 years of working in the software industry. I could accept that perhaps this means I've done my job badly (since a prime directive of any software developer is to keep complexity under control), but it doesn't change the fact that NCrunch would be a very difficult project for even an experienced developer to just pick up and work with.
Furthermore, I like to think that much of the success of NCrunch has been owed to having a single decision maker making the calls on what should and shouldn't go into the project. Rejecting peoples ideas for product features is one thing, but shooting down work that they are prepared to contribute is something I find personally much harder to do. Should the product be made open source, the decision making would need to be more consensus driven. This might mean making compromises on my own vision for the product, which right now is something that I'm flatly not prepared to do.
Option 2: Sell the product
From the start of it's beta program, people have often speculated that NCrunch was built as a product to be sold to a bigger player. I can see how this could be a logical conclusion (single founder, uncertain future, 'wow' product), but it was never an intention. Although I have had offers from other players, I never found myself willing to let go of NCrunch. There are no guarantees that such a transaction would be good for the product, and I doubt I could ever look back on a deal without some degree of regret for what I may have managed to do if I'd kept control over it. Personally, I've also sold more than enough hours of my life as employee, contractor and consultant to actively want to exchange my baby for a regular paycheck.
Option 3: Seek investment
This is an option that has crossed my mind a few times, and while there could be some appeal to sharing the stakes of the project with someone else, it really isn't a logical choice at all. v1.41b of NCrunch is (in my belief) already nearly market ready. Taking on investment to push the project further would only mean more stakeholders in order to delay an inevitable commercial launch, at a price that I may have much less control over. Three years ago this would have made more sense, but not now.
Option 4: Commercialise the product
This is the logical conclusion that I think many people will have been expecting. The commercialisation of NCrunch will give me the resources I need to take the project to the next level, which is a level it will never reach under the current arrangement. At this stage, I can make no firm estimates on how many people are prepared to pay for the tool or how many people will flame at me for taking my work off the 'free' shelf, but I do see this as being the most certain way to allow the product to reach its full potential. In the long term, I also see this as being a better way to drive NCrunch's development, as in truth it can be hard to consider something as valuable without someone being prepared to pay for it.
So I'm sure that the questions that will follow a decision like this will be 'When?' and 'How much?'. I'm still working out all of the details of how this model will work, but I can share the following:
- It will be a tiered pricing model, with a cheaper tier for named users, and a more expensive tier for company seats. The logic here is that named users are more likely to want to purchase a license for personal reasons (i.e. enjoyment of development) as opposed to calculated commercial reasons (i.e. cost/benefit). Companies also are able to make use of certain tax advantages that just aren't available to Joe Bloggs on a salary. Of course, this model is standard in our industry and I'm sure I would upset many people if I didn't follow it.
- The pricing will be aligned with other developer productivity tools that exist in a similar space, with consideration to the cost/benefit comparisons between these tools. Consider also that I actively want people to use NCrunch as much as possible, so don't expect any unpleasant surprises here.
- The model will follow a standard upgrade scheme, with new minor revisions being free and new major revisions carrying a cost. I'm not keen on people 'holding out for the next major revision' so there will be consideration for people that purchase close to a major upgrade.
- There will be no 'evil' licensing constraints or tricky fine print. I want people to enjoy the product, not spend time worrying about legal implications.
- The commercial launch will take place at a time when I can be certain that the NCrunch software and support systems of this website are ready for it. At the moment, it looks as though this will happen before the end of this year.
I'll try to share more specific details and dates over the next few weeks as the details are worked out. I hope this helps to answer a few questions and that I'm not upsetting too many people with this approach.
Thanks for your support and understanding!