Hacker News new | ask | show | jobs
Top reasons why we won't use your Perl CPAN distribution (showmetheco.de)
16 points by vti 5608 days ago
1 comments

  > Why did you even upload it on CPAN if you don't even
  > care if anybody is going to use it?
Possibly out of self-interested generosity. They hope that others will benefit from it, they hope that they will receive bug-fixes, and they hope that it will be used as a starting point for something better. And they hope that by setting an example of releasing code, that they in turn might gain access to that "something better".

I think you've provided excellent reasons to prefer one module over another if there are alternatives, but I'm not sure why they are directed at the hypothetical author rather than the potential user. Let's flip it around: why should the author care if you use his code? Is it better that the unmaintained code remain unreleased, or is it better to have it out there?

I don't see why the author would care if you use it unless you are capable of contributing to it in some way. And I'd argue it's better to have it out there than unpublished, but that CPAN could do a better job of distinguishing between active and inactive code in the case that there are better alternatives available.

To be honest, I usually upload to CPAN so I can use the module wherever I want. If somebody else uses it, that's a bonus.
Hm, that's interesting. Maybe it would make more sense describing the way how to choose a module from various alternatives.

But what I meant by 'author should care if somebody uses it' is that he should make it usable and understandable for somebody else. If it's not, what the point of making it public and open source?

I have lots of code all over the internet "rotting". Some of it was written because I actually needed it. Some because I was learning. Some to prove a point. Some to just play. There's lots of reason to write code, and lots of reasons to let it go. Now here's the thing, putting code on the internet and typing "here it is, BSD or MIT or whatever licensed" is a trivial marginal effort. Since that effort is effectively $0 for me, I do it, thinking like this:

Maybe someone will get some value of it. I don't want it, I don't care to put effort in, but hey, if someone else does: cool!

Basically, putting stuff out there is not that different from the freecycle mentality.

The place you seem to come from is that "Oh they want to make an open source project, that means they must want to be $0 vendor for my company!". Honestly, I hate that mentality. Instead of coming in and demanding I give you more effort for free, take or leave the free work I choose to do and let it be. That's not to say I am not open to suggestions or maybe even explaining or fixing things, but you have no right to expect it of me.

A downside of this is that, for some problems, there are so many libraries to choose from that are working, documented, performant, supported, complete, etc. to varying degrees that the act of picking the best one for one's objectives is sheer impossible.

What makes this worse is that your "rotting" should be written without quotes. Most code rots incredibly fast, even if it is written to high standards. Your makefile may break, your dependencies may see an interface change, popular architectures may change (an .ini file for preferences?), etc.

Meh. That is a surprisingly subjective and arguable statement, when you consider there are useful purposes for code besides running on your current dev system. For instance I frequently find code on the net that is rotten from the POV of "it runs on the latest git head of the dependencies" but completely and utterly fresh and relevant in the "how would I approach a solution in this language with this general design paradigm" POV. Other forms of "rotten" include software written to $HEAD, only to have those features never incorporated in an official release. The list goes on and the differences between "rotten" and "doesn't work for my special case" grow very indistinct.
"does not run on my current system" is not a sign of rot; "I cannot even make a guess whether it will be useful for me without trying" is. To make such a guess, the following info can be helpful:

- for what platform(s) it is written (e.g. C code where tagged as 'Unix', that use Linux-isms)

- what the license is (home page claims 'free' or 'open source', source files mention license A, read me mentions license B)

- what the library does and, almost more importantly, what it's limitations are.

- what the dependencies of the library are.

- what systems the code has run on (it can for instance be useful to know that code has run in big-endian machines if your machine is big-endian)

The more of this info is present, the higher the probability that I will try to use your software.

There is lots of code out there where too little of this metadata is present. If such software is not solving some unique problem, I would prefer it if its writer did not make it available.

I am a CPAN author myself and I am not from that place you're describing :) I put almost all of my code on github to rot there too. This article is from the open source community perspective. Maybe it's just not emphasized enough.

I do agree that I don't have any right to expect anything from the open source software, I am just saying why I won't use some of it.

Well, you attitude is both better and smarter than mine. :-(

I have a couple of large 80% done libraries I wrote to publish as open source -- which I am going to rewrite heavily before I'm letting anyone see.

(Answer to next question: Yes, a couple -- instead of finishing one and starting a second. There are reasons in addition to me being stupid. :-) )

At least I learned a lot.

Edit: About the article -- it is hard to create a good API, I've designed lots of APIs in my days -- and I don't think I've done a single good one. :-(

Ye, when I am preparing a CPAN dist I usually clean up everything. I think it helps to create a more usable and independent distribution. And everybody wins.

Good API++

For myself as a CPAN author at least when I'm in the midst of writing the first release of a distribution there is usually no indicators that what you're doing will ever be used by someone else regardless if it's a new concept or tacking onto an existing. So sometimes the best thing you can do in the first few releases is just scratch your own itch enough yet keep it less specific for you and more for the problem and hope maybe someone else will pop up somewhere, either with a bug report, a patch, even just a moan on IRC to show interest, even if it is negative. Once I catch wind that someone else other than me, their feedback is very much taken into consideration and iteration and improvements can happen with a focus on the people who need it most.
Having low quality non-working code is a detriment to the ecosystem because you have to go through the whole list of questions in the article to figure this out. So, I think it's better for non-quality code to not be released. This difference is part of what is making Apple very successful in their app market.