This past week, several people related to the WordPress project have been discussing their motivations for working with free and open source software.  There have people explaining the new business leads they get from being prominently listed as open source developers.  There have been others lamenting the fact that free development is, by nature, free.  But no one has really captured my personal reasons for working with open source systems.

I do it because it feels right.

I'm a self-educated developer.  I went to college to study science, math, politics, and business.  Aside from an intro to computing class I took in high school (we learned how to use Microsoft Word), I've never taken a computer class in my life.  Everything I know, I know from Google-ing problems and looking at source code others have written.

If others didn't post their code online for free, I would have no idea how to even start coding.  I learned PHP from reading the code behind WordPress.  I learned Visual Basic through making a half-hearted clone of WordPress on a .NET system.  I learned C# from working with similar CMS platforms.  I learned JavaScript by working with jQuery.  Now I'm learning C++ by working with FireBreath.

I learn the best by looking at a problem, seeing how someone else solved it, then deciding how I would do it differently.  Then, I build a hybrid approach by studying and working with other developers, honing my skills along the way and helping the project grow at the same time.  At the end of the day, seeing my name among the list of developers who worked on a project is very satisfying, even if I don't ever see a dime from my work.

But what really excites me.  What really drives me to publish new WordPress plug-ins, hack core, and publish new systems on Google Code is completely unrelated.  It's when I get that random email from a complete stranger on the other side of the world either asking for support or thanking me for my contribution that I really feel like I've accomplished something.  Knowing that someone who doesn't know me - someone I'll never meet - has seen, used, and benefited from code I've created makes everything worth it.

I stood on the shoulders of giants so I could better see the road in the distance.  Knowing that someone farther down the road from me feels the same way about the work I've done feels very karmic.  It just seems fair that, since I learned from someone else posting their code for free, that another someone should learn from me as I post my code for free.

That is why I participate in open source projects.  Donate if you want (it does help pay the bills), but a kind word feels just as good.