Ethics for software developers

Dave Winer’s First Essay of the Year sums up some of the themes he has refined over the last year, partly in discussion/debate with Larry Lessig. One passage that particularly caught my attention was a brief discussion of the ethical issues involved in software development:

I strongly believe there are ethical rules, we just have never written them down or even discussed them. It involves not locking users in. Giving them choice. Telling them what the risks are in using the software. Never installing persisting components without clear notice to the user.

This resonated with a gut sense I have that a lot of software development has a machiavellian edge, especially around matters of lock-in. It seems that many software developers consider locking users in (usually without any explicit acknowledgement of the effect) to be a legitimate method of erecting barriers to entry from potential future competition.
The whole blogosphere is abuzz about Apple’s new web browser, viewing it either as more lickable screen candy or yet another standards/implementation Tower of Babble. How would the response differ if Microsoft were launching a new free browser after a few years without one?
What are some of the other ethical responsibilities for those of us who provide software (products or services) to others?