Last night I took part in a panel on Microsoft and OSS as part of dotNetConf, and I was trying to keep one eye on the Jabbr room while also being a useful part of the panel, which was fun. Anyway, at one point I said of Simple.Web something like: “I’m writing it for me and making it do the stuff I need,” and I noticed a comment in Jabbr that seemed to me, with my half-paid attention, to be questioning whether one could wisely adopt an open-source framework created with that motivation, and wondering what would happen when the author got bored of it. I wanted to answer that, and while I’m at it, give a status update on the things I’m involved with, so here goes.
The motivation for Simple.Web
I’m absolutely not ashamed to say that I am writing Simple.Web for myself. I started writing it because Web API went in a different direction than I needed, and because Nancy didn’t, at the time, support async handlers and content negotiation. There were a couple of other options, but nothing that had exactly the right mix for me, so I made one that did. And I’m still making it, and it’s what Zudio, my commercial start-up project, is running on. I’ve been heavily focused on that for the last few months, and most of the commits I’ve made to Simple.Web in that time have been things I needed for Zudio; I recently added the first part of CORS support because I needed it immediately, and I’ll be adding the rest of it pretty soon because I’m going to need the rest of it pretty soon. There have been other things that I haven’t needed, such as Razor support, or indeed any server-side rendering because Zudio doesn’t use that. Somebody else from the .NET community (hello @Cranialstrain) did need Razor support, and also needed the framework to support Mono, so he worked on that and sent me pull requests and I gave him commit rights on the main Github repository and he’s basically fixed the Razor support and it runs on Mono and he’s put an epic CI system in place to boot, and I think he’s finally starting the project he wanted to do with it: he’s added the stuff that he needs. See how this works?
The commitment to Simple.Web
What does this mean for my commitment to Simple.Web? I’d say it should inspire faith, not doubt. If my start-up is successful, I’m not going to suddenly port all the code to ASP.NET MVC, am I? No. I’m going to build on Zudio, add new features, try to improve performance, and a big chunk of the effort that goes into that will go into Simple.Web, which will remain completely open-source, MIT-licensed and open to pull requests. As long as they don’t break Zudio.
I imagine the same is roughly true for Ian, whatever it is he’s secretly working on.
Now, this does mean that this is likely to be one of those open-source projects where, if you ask for a feature that none of the current maintainers need for themselves, you might have a wait on your hands, but that goes with the territory, and rolling up your sleeves and trying to add that feature yourself will do you far more good than harm, I promise. Apart from a couple of slightly scary dynamic-code-generating rabbit-holes, the code is not that complicated.
What about Simple.Data?
The motivation for Simple.Data was different, in that it was far more experimental and driven first by “look, this works” and then by “ooh, people are liking the thing I made, I’ll make it some more”. I do use it; I use it on as many projects as people will let me use it on, because I really like it. But that’s not my motivation for supporting it and continuing to work on it. I’ve gotten a lot of other intangible benefits as direct or indirect results of building Simple.Data, and the fact that people seem to really like it (enough to talk about it on podcasts in foreign languages (that I listen to all the way through for the times they say things like “SQLite” or “InMemoryAdapter” which are the same in Swedish as in English)) still makes me very happy.
I didn’t get many hugs as a child. That probably explains it.
So, it’s not going away, I promise.
But it is going through something of a development lacuna, because I’m busy. Like, crazy busy. Things have to give, and Simple.Data is pretty much stable for most things, so it’s been dialled back. What’s actually happening is that Dan Maharry is working on the docs and finding bugs as he goes along, and when things calm down a bit I’ll fix those bugs and he’ll finish the docs and that will be 1.0 final. I’m really hoping that happens in early summer, because I want to start on 2.0, for which the headline feature is async*. It riles me that EF has that before Simple.Data. That’s the wrong damn way round. Must fix!
*Oh. And IntelliSense.
My current dream is that Zudio will do well enough to support me and a few other developers working on it full-time, and I’ll have more control over how I spend my time, with a good balance of happy open-sourcery and money-making entrepreneur stuff. That would be nice.