Learning when you are younger is much more structured than learning when you leave School. When you are younger you are set a syllabus and told to learn that, if you want to branch out and learn your own stuff as well, thats okay, but you have structure. Your only job is to sit in a classroom and learn up until you leave the system.
Learning when you leave school/university is no nolong a two way task, i.e. A teacher standing at the front of the room teaching you, but rather someone who gets paid to not only do their job, but also to help you get up to speed. Learning gets harder as you gain more responsibility.
Now you maybe wondering where I am going with this, so let me clear this up.
Back in 2009 I picked up a little known project called Orchard, at the time my boss was attempting to demo DotNetNuke to use - which in turn made the team look sharply for an alternative, we then found Oxite... We did not adopt this because about 2 hours later we found that had been superseded by Orchard.
At this point I was very wary, I was not always one to take risks with beta or alpha software, let alone code drops, but this time was different, I don't know why. So I downloaded the source, kicked it up and got it running - I then ported a ASP.Net v1.0 site in to it in about 3 hours - A site that had taken us 3 months to build was now sat in Orchard.
This blew both my mind but the teams mind.
I had to find out more! - So I decided to build something for it, this started out to be a Profile module, which looking back was a bit of a joke but was fun to write. I remember talking to Bertrand and Lou on the MSDN forum about what should be in it, so on and so forth... I am sure they were thinking, who is this guy? (I am assuming one of them still is)
This led me on to build a BlogML module, not because I had a use for it, but just because I wanted to learn something new. I want to make sure people realize, I have NEVER used this module from what I remember, I have had no use for it.
Doing all of this made me more comfortable to take chances, jumping of to the tip of the Entity Framework and introducing Beta products to the team, or even stuff like writing the implementation of WebApi into Orchard for someone on the Forum, again I had no use for it at the time, I gained a desire/thirst to learn.
So back to why do I contribute? - I started this story about how you learn when you are a child, and how it gets harder as you get older. I contribute because for me, I learn all the time, I can choose what I learn and this helps me to relate that directly back to my work, my 9-5.
No one is ever at the tip of everything, but to be at the tip of something for just a moment in such a face paced sector as technology is something that is cool. 9-5 jobs rarely offer you that opportunity.
One cool thing that I have got out of contributing, which was an unforeseen side effect was to meet people from all over the world, all of which have been very cool.