I have noticed my friends and colleagues who have had success are different than those who have not. Here, by success, I mean they are able to develop in the languages and frameworks they like the best while being able to hold down a job or book of business with minimal compromise. The difference is the successful devs are able to set ambitious, achievable, and measurable goals, and see their projects through to the end. That is, they wind up building a usable piece of software that installs and runs with minimal fuss. Whether it be a library, framework, or app, it provides a good percentage of wanted functionality out of the box.
What stops more devs from being successful? There is this fear of missing out or falling behind that is pervasive in our industry. Setting goals and committing to them is scary. What if you fail? What if a new language shows up or a cool new framework? What if you work on the wrong thing and no one cares? What if you get tired and abandon the project before it is ready? I call that fear induced by the what-ifs.
Here is what my successful friends do - They commit to their goals and see them through no matter how many what-ifs they make up along the way. They hold off on the immediate gratification of learning a new language or switching out frameworks. They don't waste a lot of time trying that fancy new editor because they know that sticking to their release schedule is more gratifying in the long run.
Money and popularity are a part of the success equation, no doubt about it. A dev cannot bury their head in the sand and pretend they live in some dev utopia where they get food and shelter just for being awesome. With that said, if you don’t make a significant income from your project, you will most certainly have to work a day job. This takes time and energy away from your project so your project will not be as good and therefore will have a higher probability of failure. That’s why you must try to make money from your project.
Imagine it this way - the fact that your project is making money means that it (or you) are providing some real value and inspiration to your users. This is about the most pure (i.e. bullshit proof) metric that exists. And, in some ways, one of the best tests you could possibly write. In fact, I always have a test called generates_cash_flow_test() in my harness.
Excitement and passion will only take you so far. At some point you have to build something and see it through to the end. Organize a concentrated and prolonged assault on business and do everything you can to gain and maintain momentum. This stuff is not magic - grind it out until you have your success.