For the Bugzilla Project (https://www.bugzilla.org/), where I helped organize the open-source community, this was our biggest challenge. Once somebody started contributing, what made them keep contributing? How did we keep people around?
Well, we had an interesting advantage in answering these questions, in that we were one of the older open-source projects in existence, having been around since late 1998. So we had a tremendous wealth of actual data to work with.
We mined this data in two ways: First, we did a survey of all our past developers who had left the project, asking them why they had left. This was just a free-form survey, allowing people to answer any way they wanted. Then, we created a graph of the number of contributors over time, for the whole ten years of the project, and correlated the rise and fall of the graphs to various actions we took or didn't take over time.
Once all this was done, I sent an email that out to the developers Bugzilla Project, describing...