I'm starting this topic to describe how JRiver does development and sells its product. I may move this to the wiki.
Before the Internet gained dominance, most software companies had very methodical development cycles. They would get the team together, set a list of features, consider customer requests, and after refining the list, they would begin development. Things were a little more leisurely then, so development might take a year or more. Then beta copies would be released to a few customers. After several cycles of fixes and releases, a "release candidate" would be issued. Any small remaining problems might be fixed before calling it good to go, and then the product would be launched.
Microsoft still uses a process a lot like this. It is a little more interactive, but it is still a pretty rigid process.
Google and JRiver use a different process. It is more iterative, meaning that many more releases are made and often the changes from one release to the next are small. There is no real beta and no real release. There is only a series of gradually improving releases.
A couple of things affect this though.
1. Adding new features almost always creates new bugs, sometimes a lot of bugs. This means that, if the software is changing a lot, it will also be buggier. In order to polish the software, to put out releases that generally work for most customers, the changes must be reduced or eliminated. It often takes a month or two after we stop making changes for the software to become generally trouble free.
2. The market changes all the time. Netflix and Hulu are good examples. If they make a change it may affect our work, and we may have to scramble. New OS releases do the same. New devices also. The market doesn't stand still.
3. #2 causes us to revisit #1. Market changes mean new or revised features in our software.
If you think about that, you can probably see why we're constantly at risk of sliding down the slippery feature slope into instability. You want it. We add it. Something breaks. We fix it. And so on.
So that's the environment we operate in. Here's what we do.
About once a year, we release a new major version and we charge for upgrades from older versions, but we try to make the price very attractive, especially in the early stages.
About three or four times a week, we release a new build for beta testing. A few times each month, we move it to the forum, and it's free if you've paid for that major version.
We do this by cleverly using a very strong beta group and an equally useful group of early adopters, who always want the latest, even if it has a few problems.
We have:
1. BETA -- A beta group of about 100 users, who get builds on a private board. They find many of the problems and we fix them. When we think it's safe, we move a build to:
2. LATEST -- The MC board where perhaps 1500 people get it and sometimes find a few more problems. What they find gets fixed. When the build doesn't have many problems after a few days, we move it to:
3. STABLE -- This should always be the safest choice, the most reliable software we have.