opening up [07/19/2007 18:41:57]
I have been wanting to take cornerhost open source for a long, long time, but I've been scared to do it.
The libraries I use have always been open source, though (as far as I know) very few people have ever looked at them - probably because there's no marketing, or because the marketing I do have (scarletlambda.org) doesn't really make the code approachable, or even give you a way to download it yet.
The applications I use inside cornerhost, though, are all hidden away in a protected repository. These include:
- Cornerops (the control panel), which manages a central database and relays changes to...
- Beaker, a Twisted XML-RPC server that runs on each machine, and does the grunt work of creating user accounts, changing passwords, or updating a crontab file.
- Various scripts that generate configuration files for apache, bind, sendmail, lighty, and so on.
- Duckbill, my billing and collections system.
- Vengeance, a linux process monitor.
- Ginsu, a tool for managing apache logfiles
- Various command line administration scripts
The point is, there's a ton of code behind cornerhost, and even without having to answer support mail (which takes up much of my day), I simply don't have time to make all the improvements I want.
That's the problem with web hosting: it's an easy business to get into, but it's such a broad topic that the scope is overwhelming. It's hard to amaze your customers when every account you have is doing something different. (My other service, versionhost cvs hosting, is much simpler, because every account works the same way.)
Many of my customers are developers, and many of them have had suggestions for features and even offered to help implement them. As a developer, I can understand this. I'd happily volunteer my time to implement features that would make my experience with amazon, google adwords, or red hot pawn more enjoyable, even though I pay for all those services.
As a business owner, though, I've always been uncomfortable with these offers. It's the same reaction I've had people try to tip me or overpay on their accounts.
I guess I've always had kind of a problem accepting help from others. I probably need to work on that. I suppose one reason for going open source is that it's easier for me to accept help that way, because open source code at least potentially benefits everyone, not just me personally.
I think opening the code could have a lot of positive consequences:
- Customers could directly contribute to features they care about.
- Cornerhost would get better, faster.
- New hosting companies might spring up to adopt and contribute to the code.
- I'd develop a community of potential hires or contractors.
- The new features, or just the novelty of open hosting might actually bring in customers.
- It would give people a reason to learn and improve my libraries.
It seems like everybody wins. But it still scares me.
The potential negative outcomes all seem ridiculous when I write them down. Nobody joins cornerhost for my control panel or billing system. The statements you get are ugly and have your entire billing history (going back 5 years or more for some people), and control panel has serious usability problems. The things that make cornerops better (in my opinion) than, say, webmin, are on the inside. People join cornerhost despite control panel, and because of the personal service. And yet I have this irrational fear that somebody else will swoop in and take away all my business the minute I open the code.
And that's silly. I have a tiny little company, and if for some bizarre reason, all my customers left tomorrow, I'd go get a job making three or four times my current salary. Boo freakin' hoo.
I really have nothing to lose, except my iron grip on a little walled garden of source code. Going open source means letting go of some technical problems, and taking on people problems. Like:
- Geting people to participate in the first place.
- Educating new developers (hence the trailblazer stuff)
- Rejecting certain ideas without driving contributors away.
- Being myself accountable to the development team, and having to justify my ideas.
- Delegating effectively and actually asking for help.
- Clarifying and enforcing proper coding standards when much of the code still uses outdated ideas.
I think that in a few months, I'll look back at this decision and wonder why I hesitated so long, but right now, it's all a little overwhelming.
Nonetheless, I'm going to do it, and make it my main focus for next week, after I upload the brickslayer tutorial. Here's the plan:
- Double check code for sensitive information (hard coded usernames, database passwords, etc)
- Get links to the code up at cornerhost.org
- Document how to set up a development environment
- Set up a development blog
- Set up a developer forum.
- Set up an issue tracker. (cvstrac?).
- Set up a wiki. (cvstrac again?)
- Publish the buglist
I'm stepping into the unknown here. What am I missing? Any thoughts, advice, etc would be most welcome. (I've re-enabled comments for this entry.)
