fREWdiculous!
19 May
I am writing this post to address a problem that I could see appearing in our community. If it offends you feel free to let me know. If you comment on my blog as a troll, I will delete your comments. Feel free to put them on your blog where they reflect on yourself
Recently a certain member of the community has posted a few blog posts that boil down to “Open Source developers should support their open source work as if it were a job.” I will not make a link because I would rather people not read his posts. Normally I feel like the best plan of action for people who make silly statements is to just ignore them, but a good friend of mine pointed out that it would be bad if people got confused and actually bought into this line of thought.
So in foolish manifesto style, I will write the rest of this post with how I think things should be done, not who got what wrong.
As a developer of CPAN modules and more tentatively a leader of a small part of CPAN, I will continue to say “Patches welcome.” If people are using the software that I have written for CPAN they are developers and can help implement the code that they need for their given use case. I doubt a non-developer would be able to figure out how to install a CPAN module, let alone use it.
Patches are not just for code though! That is where novice developers come in. In the DBIx::Class world (and I imagine Catalyst and Moose) standard practice is to help a newbie on IRC and then in return ask them for a documentation patch that will have rendered the help session needless. Of course sometimes the documentation needs massaging or you need to guide the newbie as to where the documentation should go, but that’s fine! This is how you get new blood into your contributor pool.
And of course the beauty of the “patches welcome” statement is that by definition only people who actually want the feature will send you patches! I would never ask a random user of my module to implement a feature that they do not need. It is because I needed correct sorting in SQL Server that I got involved with DBIx::Class. I did not ask: “How can I make this happen?” I actually asked someone else to fix it for me, and instead this person (ribasushi) guided me on how to do it myself. To restate the point: patches should be written by the people who will use them.
One of the beauties of the open source world is that ultimately things are (to an extent) a meritocracy. That means that the people who get stuff done have the most say. As a Perl developer I am much more likely to listen to RJBS or Miyagawa about how to do something or even defer to them over some random developer I have never heard of. Of course there are times when things are done democratically. Recently some of us DBIx::Class developers had a vote about something. mst has even stated to us that when it comes to DBIx::Class he is willing to defer to the other developers if everyone else agrees. But ultimately, because writing software takes skill, the people with that skill make the decisions. Not the people who are the prettiest or richest or have the best marketting. I personally like it that way and will do what I can to keep it that way.
I say this because really, open source programming ultimately is not like regular work. Sure, developers fall off of the face of the planet and stop maintaining their software. But if you need the software that they wrote, you have at least two options; the first is that you contact the author and ask if you can take over the project so that you can get it back to a point where you can use it. If that sounds like too much work you clearly do not really need it. Your second option, if the author does not give you the OK to take over the project, is to fork it. Generally this should be avoided, since it can breed bad blood and often your software and the authors can have incompatibilities, but it is an option nonetheless.
I have done both of the above and it was never a huge problem. So again, in Open Source software, the onus is on the user not the developer; but that is why I use it, personally. If a developer dies, I as the user will be ok because I can fork the project myself.
As I already said, the main reason for this post is so that developers inside and outside of the community will not be misled. I do not want new developers using my software expecting that they can just make demands and that I will do what they ask. I am not a hostage and neither is my software. I do not work for free. Anyone who expects me to work for free is either lying to themselves, insane, or is a looter stealing from me. I do not respect the opinions of thieves, liars, or lunatics when it comes to responsibility and I do not plan to respect their opinions.
I strongly believe the above, and I hope that we can all have some healthy discussion about it and hopefully come to agreement. I also have some thoughts on how to help increase the communication between various dissenters and those of us who like things the way they are, but I will leave those for another day.
Turns out that this turned into a meme, so I’ll try to collect all of the related links to this topic here. I’m sure that I left some out, but I tried to include all of the ones that popped up in my feed reader. (Note: I’m not subscribed to all of Iron Man, so I might have missed some)
13 Responses for "How CPAN (and Open Source) works"
you should change ‘users’ to ‘developers’ or ‘programmers’ the average /user/ can’t do anything if the developer decides not to do anything. Yes I understand your average user is a programmer, but that is not the case of all software (even foss) and I do not speak specifically about you or even perl developers.
because you’re talking about me and I’m am attempting not to ‘troll’.
but volunteer according to answers.com means
n.
A person who performs or offers to perform a service voluntarily: an information booth staffed by volunteers; hospital volunteers.
Law.
A person who renders aid, performs a service, or assumes an obligation voluntarily.
adj.
Being, consisting of, or done by volunteers: volunteer firefighters; volunteer tutoring.
v.tr.
To give or offer to give voluntarily: volunteered their services; volunteer to give blood.
v.intr.
To perform or offer to perform a service of one’s own free will.
To do charitable or helpful work without pay: Many retirees volunteer in community service and day care centers.
I find it interesting that the legal definition mentions an ‘obligation’.
You are free to have your own definition of volunteer or interpret it in a different way than I.
caleb: you are right, when I say users I mean developers. And yes, you have an interesting point regarding volunteers and that they assume an obligation. I think my point is that the obligation that they assume is not everything that you originally stated. Note that I still think that developers should write good docs and respond well to user requests. I pride myself on excellent documentation and tests in all of the CPAN modules that I’ve written, but I don’t request that all CPAN authors do the same.
I’ll update my post regarding the use of users.
Thanks for the comments
As I said on Caleb’s blog, releasing free software is a gift, not an act of volunteerism.
It’s especially not volunteering in the sense of “taking on a volunteer job”.
See this article (and many others) for more details.
I think the social pressure for writing good quality code and lots of tests is quite acceptable in the CPAN writing community. I guess part of the reason is that other CPAN authors want to use high quality, well tested code and they want to be associated with such code.
Is this different regarding documentation and regarding being nice to users weather they are also programmers or not?
Gabor: sure social pressure is fine. But what I am saying is that no one has a right to demand anyone to write code, doc, tests, or whatever. I owe no one code but myself, and I owe it to myself because it’s what I love to do, and that’s all. If you are paying me that’s a different story, but that’s not what this post is about.
As for programmers vs users, I’m not so sure I can even relate regarding that (false) dichotomy. I’m all for making Perl and OS look good, but I’d rather not support a world where people who are just using what I’ve given then free (as a gift, as David pointed out) can make demands regarding my creations.
You write: “I do not respect the opinions of thieves, liars, or lunatics when it comes to responsibility and I do not plan to respect their opinions.
I strongly believe the above, and I hope that we can all have some healthy discussion about it…”
You also write: “I will not make a link because I would rather people not read his posts.”
If you call the people who disagree with you “thieves, liars, or lunatics,” and pretend they don’t exist, it’s hard to have a “healthy discussion.” It’s easy to have a semantics flame-war, though…
Well said, and I’m glad someone said it.
When I release open source code, I am NOT volunteering to work for anyone who happens to download it. What I AM doing is putting the result of my hard work out there, in case others may find it useful.
As you eloquently put, anyone who thinks that I’m volunteering to do their work for them is a freeloader, insane or at best, merely mistaken.
If someone wants to dictate what I do and do not code, they can pay my day-job rates, but it’s going to cost rather more than “for free”.
Gabor:
You wrote “Is this different regarding documentation and regarding being nice to users weather they are also programmers or not?”
First off, we all love documentation. But different than tests, they do not add code-value. If a module has tests that pass, it proves the modules works in those cases. Tests help me as the developer more than documentation. And incidentally, it makes them also more valuable for other developers. The mechanics that are at work for both are simply different. Many of the modules I use today didn’t have documentation at the beginning, and it was only the act of releasing them that made them what they are now. Nobody is arguing that we shouldn’t write documentation. Just that it’s not wrong to release a module without or with limited documentation. Just because it isn’t (yet) useful for everybody doesn’t make it useless for everybody.
Also my general observation is that people are nice to users. But it has limits like everything. Being nice as a user to the developers also goes a long way. Basically telling someone to take their software off your internet because you don’t like that it’s missing documentation isn’t nice. It’s discouraging for developers, and I’d rather see the sharing of any work encouraged.
@Anon: I’m not pretending people don’t exist; I’m just not encouraging pagerank
Personally I find that I will simply not maintain code I don’t actively use anymore no matter how much I try to care.
What I like about opensource is that this goes both ways, if my code is valuable to someone I don’t need to feel bad about giving it away. I used to be a bit of a control freak and want to do everything myself but I realized that it doesn’t actually matter that much and that if I’m not using it anymore I shouldn’t care anyway
That said, I do think there’s something very admirable about authors who (unlike me) stand by their code for a long while.
I think Dave Rolsky is a good example of this, I can’t imagine that maintaining DateTime’s timezone data is fun in any way, and it’s very reassuring to know that he takes that seriously (amongst other maintenance tasks: http://search.cpan.org/~drolsky/?R=D ).
This sort of dedication really bridges the gap between a good idea and a finished, reliable product, and there is definitely some value in that, because even if the userbase is willing to do this, they might not be able (whereas the author is arguably always able, but sometimes isn’t willing).
People often use commercial software because of this dependability (or perhaps the illusion of dependability), even if they know the product is inferior, because they expect the inadequacies to be more manageable than total abandonment.
Lastly, I think the Perl community’s collaboration, especially on the so called enlightened Perl projects is almost idealized, but that’s as common in the big picture of OSS collaboration.
Okay. But your pagerank games with xenoterracide aside, do you have something to contribute to “healthy discussion”?
Let me extend an olive twig: OSS authors want something out of their software. As an OSS author, it makes me happy to know that people use what I distribute, and I put what I distribute on my résumé. As an OSS user, I prefer projects where the developers are responsive to bug reports and feature requests. Therefore, as an author, I try to be responsive. You’re welcome to have a support policy of “pay me or go die in a fire,” but that’s not likely to encourage people to use your modules. There are plenty of alternatives.
@anon: sure, that’s fine. I tend to use docs with good tests and good docs, but I think phaylon said it best: “telling someone to take their software off your internet because you don’t like that it’s missing documentation isn’t nice. It’s discouraging for developers”
And that’s really all. You as a user have no right to ask me to make better doc. If you get that right I’ll say what rafl said: “You’ve convinced me. I’ll go take the easy route from now on and stop bothering with sharing my [work] for free.” I don’t want to be a slave to anyone
Leave a reply