On May 4, 2015 at 3:51:23 PM, Josh Kamau 
(joshnet2...@gmail.com(mailto:joshnet2...@gmail.com)) wrote:
> Another challenge is: There are alot of abandoned libraries and few reach 
> 1.0. That makes selecting the libraries to compose abit difficult.  


I think this is a key source of trouble. There are so many things to choose 
from, yet so few of them are “done”.

I’ve thought about why this might be. Here is my theory, it is an accidental 
result of reasonable people doing reasonable things. I think the typical 
software developer contributing to open source is a reasonably nice person; 
unpleasant people generally don’t do a bunch of hard work and give away the 
results of their work. But being inclined to be nice can easily lead to this 
endless series of new incomplete projects.

The path is by this dynamic. Imagine friendly developer X wants to solve a 
problem. They look around and find various incomplete solutions to that 
problem. Now they have a choice: do I contribute to one of those existing 
solutions, or do I start my own? Aside from the natural tendency of many of us 
to want to solve problems our own way, I believe there is a social reason also 
pointing people in this direction. There are too many obvious downsides to 
contributing to someone’s existing, partly complete solution:

* Looking at the incomplete project, you wonder, what is left to be done? But 
the person who didn’t have time to finish it, probably also didn’t have time to 
write much about what was still to be done, nor to carefully maintain a list of 
open issues.

* Perhaps you go farther, and make a bunch of local edits. Do you offer these 
is a pull request? Perhaps, but a pull request whose contents are “replace a 
bunch of stuff in this project with my new stuff instead” could certainly be 
seen as not very nice, so perhaps better to just keep quiet about such a 
branch, and not push it, Not submit a pull request.

* Perhaps you want to just urge the existing project in a good direction. You 
find that the issue tracker has a little activity, and the issues already there 
aren’t getting much attention. Is it rational to spend time adding another? 
Probably not. Is it nice, and polite, to add more issues asking for activity 
from someone who obviously has no time to give it? No it is not, so perhaps 
better to just move on to the next project.

* Perhaps you have rather a lot of time, enough time to fork the project and 
drive it to completion. Do you fork? While there are several reasons not to 
fork. Firstly, it could be perceived as unfriendly. Secondly, even if your fork 
is spectacular, on the website where much of the open source ecosystem lives 
(GitHub), forks more or less perpetually appear a second class citizens. There 
is no good way, even if you look at the graph showing off forks, to figure out 
if the community has moved on to some particular fork. The starting point 
project seems forever the main one, even if it is abandoned. So perhaps it is 
better to not forget all.

* Now we’re left with the default position, just starting a fresh new project 
to solve the same problem. But quite often, the hypothetical friendly developer 
in this position does not have enough time to drive their fresh new solution to 
completion either.

Net result: over time we accumulate more and more projects, solving overlapping 
problems, a great many of them never getting close to 1.0.

While this all sounds pretty negative, but I think the factors here are 
actually overwhelmed by the large number of really smart people contributing 
stuff out there. I can mostly find that I look around and am able to solve 
whatever problems I have, often building on the good work of others. But I also 
find that I often pass on an opportunity to push some project closer to 
completion, for the reasons above.




--  
Kyle Cordes
http://kylecordes.com  


-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to