On Giving Back
A few days ago I published Math::Vector::Real::Farthest, my 100th CPAN module. I got into CPAN in 1999 so it has been a long, mostly quiet, way.
Some modules were a side effect of my paid work, done while contracting or, lately, as a regular employee. But most of them were done on my free time for fun. Just because I had that idea on my head, or because somebody just pushed an interesting problem under my nose (AI::Termites, Algorithm::ClusterPoints, Algorithm::GaussianElimination::GF2), or because I felt I could do something better (Net::OpenSSH, Net::SFTP::Foreign, Sort::Key), or because I needed something to waste my time (Language::Prolog::Yaswi) or because I felt that somebody just have to do it (Math::Int64, Math::Vector::Real, Tie::Array::Packed) or well, whatever.
As such, I never asked to get anything back. Fun was pretty good and enough.
But life goes and things change. At some point I got married, kids came and my free time went from plenty of it to a few scattered hours per month.
I remember a conversation over lunch at last year YAPC::Europe where Mark Overmeer was telling the rest of us sharing the table that the bug tracker queues for his modules were always empty because that was his pride. That made me think how it used to be like that for me too, but not any more, now I can barely keep the most important ones up to date.
The truth is that my head is full of ideas for modules I would like to create and improvements that should be made to the old ones. But I can't get to actually do then. I can't tell my wife to get the kids and leave me alone some random week-end so that I can write some module just for fun. Nor that I want it either, don't get my wrong, I am quite happy with my family life. But nonetheless it sadness my that all these things remain undone.
But well, enough about my life, let's go back to the post title. Let my rant On Giving Back start:
I don't think It is just that giving back is the right thing to do ethically.
It is that if you are already using somebody modules, there is a good change that next time he/she adds a new feature to any of them, or fix some bug, or release a new one, you will also benefit from it.
You, random company, may say that your employees are also quite clever and that they may add the features or create new modules when the need arises, but that is wrong thinking: there are features you don't even know they could exist until you see them. Actually, the great ones are usually like this.
Coming back to Mark Overmeer, take his excellent XML::Compile module. We had been parsing XML in Perl for decades (well, almost two) but nobody was able to get to the right solution until he did it. Now, every time your employees use XML::Compile to solve some problem, they spend less time, and you save money, and if Mark adds a new feature, the odds are that your employees will spend even less time and you will save even more money next time. Your workers may know a lot about XML parsing but you should agree with me that Mark knows better.
So, dear company:
Just hanging around, using open source code because it is cheap may be a good strategy. But, is it the best? Or would it pay back to empower the people developing the modules you use to freely improve them?
I don't know. Really.
All I can show you is my particular case, I have lots of ideas about how to improve my modules or do new ones, but I lack the time to do them.
I don't think I am the only one in a situation like this either. Probably, in one way or another, everybody is. Oh, and by the way, just in case somebody doesn't know it yet: money buys time!
In any case, let's consider it in a different way: take some minor project at your company using some CPAN module. Now ask the involved developers how much extra time it would take to do the same task without using that module, translate it to money. Could you afford to give back the module author 10%, 5% or 1% of that?
And don't let me start talking about the big Perl frameworks: Moose, Catalyst, Mojo, Dancer, AnyEvent, DBIx::Class, etc. and how much money you are loosing because their main developers get continually distracted by, err... life.