Well, when you don't charge hefty fees for software, no matter how small you are, the revenues aren't critical.

For example, if I launch service X - say a website spell checker like we saw here not long ago - and charge $20/month, the $20/mo from my first customer becomes 100% of my revenues until I get another customer. So, loosing that customer means that I loose 100% of my revenues! However, the absolute drop in revenues is only $240/year - not pocket change, but also not an amount that I'd compromise my morals over.

The issue with many enterprise companies is that they get a dozen people paying $50,000/year and at that point, losing one customer is a big deal both in terms of percentage and in terms of absolute revenue lost. If you're a company of 6 people and you loose an account paying you $50,000/year, your ability to pay salaries, etc. changes drastically. If you're a company of 6 people and you loose $240/year, it doesn't matter if they're your only customer, it doesn't affect whether you can pay salaries. It still might not be profitable, but individual customers don't determine your fate - masses of customers do.

Mostly, I just don't think you can act morally in a relationship where the other party holds so much sway over your livelihood. If they hold that kind of sway, you will do whatever you can to prevent them from exercising that power - promising changes you have no intention of making, trying to make it hard for them to leave by locking-in the data, etc. And in business, that happens when you're selling a product at such a high price to so few customers. If you base your business model off of selling at lower prices to more customers, no single customer can hold that sway over you because, while customers are always important and should be well-treated, if they decide to go another way it can be an amicable break because they aren't hurting you that much.

Really, I think that the enterprise model is broken. A lot of it is based off of trying to sell products to pointy-haired bosses by slick salespeople for lots of money and then locking the customer into your system. shudder. I'd suggest a completely different route for enterprise software: go as open and cheap as you can and build on volume. Rather than worrying about someone leaving, give them a reason to stay. The enterprise vendors we interact with don't have that attitude. They don't roll out something useful unless it can go on a checklist. They don't care about the quality of something since that's subjective and isn't as easily seen in "requirement evaluations". Disrupt the system. Heck, go open source and offer a hosted solution. Businesses love paying for hosted solutions because they can wipe their hands of it. Likewise, you can assure them that, if at any time in the future you become an evil company, they can take the code and host it themselves. That gives you a consumer-facing drive to improve, rather than lock-in. Heck, if the company needs something different, they can program it themselves and give it back to you! Free development! And you get a good reputation as a hosted service that doesn't lock people in and is constantly giving people more reasons to love you. That's the models that I'd recommend. People will pay for your expertise - you developed it, you administer it, you make sure it continues to work with no hassle on their end. That's a lot of value compared to many enterprise apps that are expensive and require companies to have someone to deal with it.

Just make sure that you don't get into a situation where your morals might be challenged by your wallet. When that happens, you'll start doing evil things to your customers.