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.
Salvador, I hear you about having no time! I am in the same boat, only recently have I found some time to clean up my RT queues a bit. (Of course, I only have 3 CPAN modules to your 100, so my hat is off to you!)
I am not sure, though, that shaming nameless companies into paying you will work. The $12 a month that some of the recent posts mentioned is not real money. Paying more might be too much of a headache for a CTO or some other suit to justify to his boss. Is there a precedent for such a thing? It'd be nice to get paid to maintain CPAN modules, I just don't think it's realistic.
I think the best way for companies to give back is to allow their employees to contribute patches to CPAN modules or to publish internally-developed Perl modules to CPAN.
It is not my intention to get anybody to pay me, I was just using me as an example.
My point is that if some company, uses somebody module and they help that somebody to get work done on that module and improve it, on the long run, the investment may come back to the company in the form of improved productivity.
I agree: such investment would be well worth the money. I just doubt it will be made.
@Dmitri, I guess if you'd like to get paid you might need to at least make it easy....
I clicked on your name in your comment above which lead me to your search.cpan.org page. I could not find a home page there, nor a link to GitTip. The latter is not surprising as sco does not support such links but if you insists to link to search.cpan.org at least you could add some kind of a home page where you describe what you do and what you'd like to get.
I went over to MetaCPAN to your page https://metacpan.org/author/DMITRI but I could not find the link to your Gittip account there either. (You could add it in your profile.) I see only one of the 3 modules have been recently updated.
I tried to find your Github username, but that module that has been recently updated is not under your name.
I had to check the commits to find your Github user account.
Then I checked Gittip, using your Github name, but it seems you have not joined it yet.
And so you have not joined the "Perl community" on Gittip and have not added any text explaining why to give you coins.
Gabor, you must have misinterpreted me somehow: I never said I expect to "get" anything or get paid for my CPAN modules outside of $job.
Hey Salvador,
Congratulations on your 100th module! :-D
Over at Nestoria we've made really good use of your Sort::Key module. I expect we will feature it on our dev blog (http://devblog.nestoria.com/) as a Module of the Month sometime in the coming months :-)
Hi Alex,
I really like and applaud your module-of-the-month initiative. I just hope more companies take you as an example and start doing the same!