Tuesday, September 08, 2009 -
I got to talking to Ayende today about his support model for NHibernate that he’s working on and it made me think a bit – I have users in much the same circumstance:
One of the oft repeated objections to using NHibernate is that there isn’t someone that you can officially complain to. Some organizations put great store in having someone to officially complain to :-)
I’ve heard that a lot with SubSonic. Basically people saying “I would gladly pay you to be on the other end of the line to be sure we can get through a problem, fix bugs, etc”. Now that I’m on my own I think I can help with that.
I’d be happy to follow Ayende’s lead (completely recognizing that I’m a smaller audience) – and if this would be of interest to people please do let me know. Here’s NHProf’s policy – I suppose I would do something similar.
I’d love for SubSonic to grow legs and a smiley face, relying on community support/patches to move it forward. The problem is that it takes a whole lotta time – especially when a corporate user comes up against a big-time issue and needs some love.
Would love to hear your comments.
Good for you (and your family) and still good for community.
My only concern would be that my number one worry is that SubSonic stay free for all and still a community commodity - simply that you can additionally purchase support from their head guy if and when you need it.
My additional concern would be that this would not limit the spread of help from all parties on subsonic topics in the hope that this would funnel more work to the "support" crew. I love the Stack Overflow response time :-)
I know that given your history none is this is a "real" worry, but i put it out there none the less. SubSonic has a pretty "Rails-like" following, so i hope that this wouldn't follow suite in the long term produce and end up with a "F*ck you" powerpoint ;-)
Certainly you could provide guidance on altering the code, but at that point you would move beyond a support contract and become a full-fledged consultant and I think you should clearly delineate where that line is before providing the option.
Kudos on taking the leap back to self-employment. All the best.
but if it costs me 375 euros for a phone call i'm not going to hang up lol.. it would start of with
Hey Rob, how was your weekend?? ...
3 hours of boring small talk
5 mins to get my question answer
12 hours of more boring small talk lol
it would work out to be 24.87 EU per hour lol..
which is still above my hourly rate :(
1. How you delineate what's a support issue and what's an issue with your clients code/usage pattern. But that's pretty something all developers, especially those providing tools, have to deal with and is obviously not going to be insurmountable.
2. That some people who might otherwise contribute will think "Hey Rob's getting paid to do this, why should I bother." To be honest though I think the majority of commiters/helper outers would think "Hey Rob's worked really hard on subsonic and it's awesome and I'd like to make it better, good luck to him if he's earning some money from subsonic. He deserves it!". I'd definitely be in the second camp obviously :)
Oh and maybe if you're getting paid you'll get round to improving that lame, sucky documentation ;)
Similarly if you call with complaints for a paid piece of software, they likely wind up in the same hands as the people writing open source software. In the end it comes down to people who just care. You can always tell the projects that care. I definitely think SubSonic falls into this category. Besides some problems can simply be solved by rolling up the sleeves, cracking open the software and finding a solution.
Thanks Rob.
On the other hand, I personally use 3Essentials for web hosting, and pay them next to nothing each month, yet they have the best service of any company I have ever worked with. They devote many resouces to their service and it shows.
Will you not fix bugs unless you get paid? Will you fix more if you do? Will you care more? Will you hire others to keep up a certain level of support to meet expectations?
Making a business out of it will certainly change it. Maybe that is good, maybe that is bad. If it is a matter of getting money so that you can spend more time with it, you could put a paypal donation link on your site. I know we'd contribute.
however if you had your OWN forum and got together some really good documentation and FAQ then it would be justified as you are offering an alternative solution with the paid solution if you did without the other things in place then you could essentially be making it the only solution (apart from stack overflow).
But i think another angle could be a subsonic specific book, you've been there before so you know how it works
and a book out there on subsonic would only help to make it grow, bring more people,experience and ideas.
I really think that a good e-book/video series would be worth the buy, I would certainly buy it and i think you would find I wouldn't be alone in this opinion.
1- Is is a real open source project as defined by OSI
2- Is it an open source project like ASP.NET MVC is
If SubSonic is in the first category, I believe NHibenrate is in that category, Ayende's commerical support offering is not acceptable. Since bug fixes are included in that offering and you are a commiter that would not sound right to the community.
If SubSonic is in second category and you decide that SubSonic is open source but main official release is maintained and owned only by you or a company that commericial offering is ok.
If you wanted - you can charge for bug fixes if you wanted to, but that's not what Ayende (or myself) are charging for. What we're wanting to charge for is our time to get on the phone with you which is much different. Bug fixes might roll out of that (and probably will).
[code]
int result = db.Update().Set(x => x.name == classs.name, x => x.ParentID == classs.ParentID).Where(x => x.ClassID == classs.ClassID).Execute();
if (result < 1)
return false;
else
return true;
[/code]
when I Execute it, the exception is throwed out.
then I thry the other way:
classs.SetIsNew(false);
classs.Save();
There is no exception,but the datastore is not be updated. can you tell me the correct update method. thank you! :)