About 11.5 months ago from today, I realized that I had a GitHub streak of about 25 days. Some of these daily contributions were small: 1 commit here, 3 pushes there, a pull request over there, an issue reported over in some other repository.
However, it got me thinking (and at the same time, I saw that Ralph Bean had a similarly long streak going, so I was encouraged). I decided that I would try to continue the streak. I didn't (and still don't) want to take it seriously to the point where breaking the streak would be a huge deal, but at the same time, seeing a new box light up with a new day's contribution is a pretty nice feeling. That is, if some emergency came up, and I couldn't commit for a day, it wouldn't be the end of the world for me.
Since I already had almost 30 days, however, it didn't seem like too big of a deal to get 60 days. So I tried. And once I had 60, getting to 100 seemed not too bad. So I tried that. Well, here we are a some months later, and I'm at 365 days. One year of at least one Free and Open Source contribution (either issue filed, code committed, or some combination of both), every single day. It's a pretty neat feeling. :)
Of course this doesn't account for the off-GitHub things I do: Helping out at conferences, helping people out on IRC, sysadmin work I do in Fedora Infrastructure and Haskell Infrastructure, and so on.
If you step through my contribution heatmap and look for patterns, you'll find what I already knew about how I work: I can't work on one project for a very long time. I simply get bored with it and have to move on for a while. Then I come back to it.
So you'll many patterns where I'll work on some project for days at a time, then move on to some new project and not touch the old one for quite a while. This is how I work, I've always been this way.
Another thing you'll see, related to the above, is that I simply work on a lot of projects. I do this because I like having a lot of projects that I can move around between. Sometimes I'll come across some problem in one of them, and have no idea how to move past it. After thinking for some time, if I'm not making any progress, I'll set the project aside and start working on one of my other projects. Then, down the road, I'll revisit the first project and usually be able to think of a way to move past the problem.
The moral is: I was able to build up this streak because I have a lot of projects to work on.
Occasionally a peer will come up to me in the Computer Science department at YSU and ask me how I manage to do so much. My answer is usually twofold: The first I already said -- have a lot of projects. The second is that I enjoy working on them. While some people enjoy playing video games or watching TV in their free time, I enjoy writing code (or reading technical books and papers). If you truly enjoy doing something, it's really not too hard to do it every day.
I'm not sure how long my streak will last. My unofficial goal so far has been a year, which is today. But I never took it too seriously and I will continue to not take it too seriously... So I'm not sure when it will end. We'll see!
If there's something to take away, it's this: Do what you enjoy that makes you productive. Do it every day. Set your own streak goals if you have to. And try to build a community around it. It's sometimes much easier to work on a project when other people are also interested in it (or better, when those people also contribute to it). You have people to bounce ideas off of. People who know the internals of the project as well as you do, who can tell you when you're about to mess it all up. And people who are hopefully willing to tell you when you're wrong. Because that's important: Being wrong is a chance for learning. Heed it.