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.