Things such as office suites, compilers, web browsers, etc. This is because typically these products are used to bring in money for a company, however they tend to be too large a code base for a small team of developers to easily manage. Using the open source method, companies get a few extra sets of eyes looking at their code, finding bugs, making improvements here and there, etc. However, since the idea of open source is so broad, it does not fit well with smaller projects. Open source, like free software, tends to bring a lot of baggage which can stunt the growth of a small program.
Basic idea is that software is intellectual property, and is sold for profit.
With smaller apps. But as everything must come from meager beginnings, all you have is some code that doesn't even compile yet. Now, let's assume that you have a really basic text editor, but it's a working program. In the second case, you're going to have an easier time attracting outside developers to your program with a working program, than if you have just a mess of code. So, the idea of commercial software works better for smaller projects, because of it's simplicity.