This assumes you are not solving hard algorithmic problems, but I certainly agree the open sourcing certain components can be very valuable - you can get more customers if others are extending your work and of course you attract consulting work. Providing a good, usable SDK is a good meeting point.