I started working on NStatic a little under a decade ago. It went through several iterations of development with major design changes that broke a lot of functionality in order to achieve the product I dreamed of. For instance, one goal was to be able to prove the correctness of an implementation of red-black trees. I have seen papers in computer verification in which every loops had to be proved with some Hoare logic annotations. Assertions contain forall and exists quantifiers when using a function call was far simpler to use and read; function calls are actually more efficient to implement, I think.
I postponed development a few times, because I thought that I could generate money with some quick project that also had a side-effect of learning a new technology like iOS or Android. Each time the quick project turned into something more work that I was prepared to emotionally invest in, when I really wanted to be working on my static analysis tool.
My savings are low, and I am planning a kickstarter to focus on and release NStatic for the next year or two. This will allow me to purchase additional development tools that will accelerate the product’s time to market. It will make my life a bit more bearable and stress-free. It would be a disappointment for me, if I never release this product given a whole decade.
There are a some recent developments that may prove helpful for me, which is the commercially-friendly open-sourcing of C# via Roslyn, CodeContracts, and .NET Core. I was planning a tool to just read the assembly IL and PDB files to perform code analysis, which is considerably simpler than my original approach of processing source code, but the Roslyn API might enable NStatic to process source code directly with high quality. NStatic can actually integrate the CodeContracts work to become a superset. The .NET Core might lead to potential benefits down the road.
A major tech company is currently considering me for a group that does development tools, but there’s no guarantee that I would actually work on static analysis there. I also do significant work in natural language processing, which the group is not involved with, but the company is big and has the best AI researchers.
If my kickstarter doesn’t take off, then I would probably accept an offer at the company.
The work that I am doing with NStatic might change software.