But enough generalities. Here are a couple reasons in favor of open-sourcing your project:
- Free bug fixes. If a bug is affecting a number of users, then some users will at least feel like they can do something about it. That is a very tangible benefit because there's no faster way to lose a customer than if they discover they can't use your product for some mostly-trivial reason after they dropped $50. But for desktop apps, it's more likely that a user will just tweak the product slightly to suit them. They might even have fun with it.
- Free marketing. Even though the tech crowd is not nearly as massive as the consumer audience, techies are probably the most valuable type of customer. They will help build a community around your product by answering other users' questions, for example. And what better way to attract people like us than by offering us more control?
That said, the primary reason is to help people. When I was first getting started with programming, it would have helped me tremendously to see how an "industry-strength" game engine worked, for example. I personally like the idea that a novice might cut his time spent on learning down by half or more. All they need are real examples to tweak and to build upon. So if there aren't any reasons to keep source code secret, then I'm going to share it in the hope that it will inspire someone, somewhere. How cool would it be to have access to all of Facebook's source code? And Facebook wouldn't be endangered by that at all, because its value is in its content, not its source code.